import { ForgeAPI } from '@forge/api';

/** Announcement banner configuration. */
interface AnnouncementBannerConfiguration {
    /** Hash of the banner data. The client detects updates by comparing hash IDs. */
    hashId?: string;
    /** Flag indicating if the announcement banner can be dismissed by the user. */
    isDismissible?: boolean;
    /** Flag indicating if the announcement banner is enabled or not. */
    isEnabled?: boolean;
    /** The text on the announcement banner. */
    message?: string;
    /** Visibility of the announcement banner. */
    visibility?: "PUBLIC" | "PRIVATE";
}
/** Configuration of the announcement banner. */
interface AnnouncementBannerConfigurationUpdate {
    /** Flag indicating if the announcement banner can be dismissed by the user. */
    isDismissible?: boolean;
    /** Flag indicating if the announcement banner is enabled or not. */
    isEnabled?: boolean;
    /** The text on the announcement banner. */
    message?: string;
    /** Visibility of the announcement banner. Can be public or private. */
    visibility?: string;
}

/** Details about data policies for a list of projects. */
interface ProjectDataPolicies {
    /** List of projects with data policies. */
    projectDataPolicies?: ProjectWithDataPolicy[];
}
/** Details about data policy. */
interface ProjectDataPolicy {
    /**
     * Whether the project contains any content inaccessible to the requesting
     * application.
     */
    anyContentBlocked?: boolean;
}
/** Details about data policies for a project. */
interface ProjectWithDataPolicy {
    /** Data policy. */
    dataPolicy?: ProjectDataPolicy;
    /** The project ID. */
    id?: number;
}
/** Details about data policy. */
interface WorkspaceDataPolicy {
    /**
     * Whether the workspace contains any content inaccessible to the requesting
     * application.
     */
    anyContentBlocked?: boolean;
}

/** The details of the available dashboard gadget. */
interface AvailableDashboardGadget {
    /** The module key of the gadget type. */
    moduleKey?: string;
    /** The title of the gadget. */
    title: string;
    /** The URI of the gadget type. */
    uri?: string;
}
/** The list of available gadgets. */
interface AvailableDashboardGadgetsResponse {
    /** The list of available gadgets. */
    gadgets: AvailableDashboardGadget[];
}
/** Details for changing owners of shareable entities */
interface BulkChangeOwnerDetails {
    /** Whether the name is fixed automatically if it's duplicated after changing owner. */
    autofixName: boolean;
    /** The account id of the new owner. */
    newOwner: string;
}
/** Errors of bulk edit action. */
interface BulkEditActionError {
    /** The error messages. */
    errorMessages: string[];
    /** The errors. */
    errors: {
        [key: string]: string;
    };
}
/** Details of a request to bulk edit shareable entity. */
interface BulkEditShareableEntityRequest {
    /** Allowed action for bulk edit shareable entity */
    action: "changeOwner" | "changePermission" | "addPermission" | "removePermission";
    /** The details of change owner action. */
    changeOwnerDetails?: BulkChangeOwnerDetails;
    /** The id list of shareable entities to be changed. */
    entityIds: number[];
    /**
     * Whether the actions are executed by users with Administer Jira global
     * permission.
     */
    extendAdminPermissions?: boolean;
    /** The permission details to be changed. */
    permissionDetails?: PermissionDetails;
}
/** Details of a request to bulk edit shareable entity. */
interface BulkEditShareableEntityResponse {
    /** Allowed action for bulk edit shareable entity */
    action: "changeOwner" | "changePermission" | "addPermission" | "removePermission";
    /** The mapping dashboard id to errors if any. */
    entityErrors?: {
        /** Errors of bulk edit action. */ [key: string]: BulkEditActionError;
    };
}
/** Details of a dashboard. */
interface Dashboard {
    /** The automatic refresh interval for the dashboard in milliseconds. */
    automaticRefreshMs?: number;
    description?: string;
    /** The details of any edit share permissions for the dashboard. */
    editPermissions?: SharePermission[];
    /** The ID of the dashboard. */
    id?: string;
    /** Whether the dashboard is selected as a favorite by the user. */
    isFavourite?: boolean;
    /** Whether the current user has permission to edit the dashboard. */
    isWritable?: boolean;
    /** The name of the dashboard. */
    name?: string;
    /** The owner of the dashboard. */
    owner?: UserBean;
    /** The number of users who have this dashboard as a favorite. */
    popularity?: number;
    /** The rank of this dashboard. */
    rank?: number;
    /** The URL of these dashboard details. */
    self?: string;
    /** The details of any view share permissions for the dashboard. */
    sharePermissions?: SharePermission[];
    /** Whether the current dashboard is system dashboard. */
    systemDashboard?: boolean;
    /** The URL of the dashboard. */
    view?: string;
}
/** Details of a dashboard. */
interface DashboardDetails {
    /** The description of the dashboard. */
    description?: string;
    /** The edit permissions for the dashboard. */
    editPermissions: SharePermission[];
    /** The name of the dashboard. */
    name: string;
    /** The share permissions for the dashboard. */
    sharePermissions: SharePermission[];
}
/** Details of a gadget. */
interface DashboardGadget {
    /**
     * The color of the gadget. Should be one of `blue`, `red`, `yellow`, `green`,
     * `cyan`, `purple`, `gray`, or `white`.
     */
    color: "blue" | "red" | "yellow" | "green" | "cyan" | "purple" | "gray" | "white";
    /** The ID of the gadget instance. */
    id: number;
    /** The module key of the gadget type. */
    moduleKey?: string;
    /** The position of the gadget. */
    position: DashboardGadgetPosition;
    /** The title of the gadget. */
    title: string;
    /** The URI of the gadget type. */
    uri?: string;
}
/** Details of a gadget position. */
interface DashboardGadgetPosition {
    "The column position of the gadget.": number;
    "The row position of the gadget.": number;
}
/** The list of gadgets on the dashboard. */
interface DashboardGadgetResponse {
    /** The list of gadgets. */
    gadgets: DashboardGadget[];
}
/** Details of the settings for a dashboard gadget. */
interface DashboardGadgetSettings {
    /**
     * The color of the gadget. Should be one of `blue`, `red`, `yellow`, `green`,
     * `cyan`, `purple`, `gray`, or `white`.
     */
    color?: string;
    /**
     * Whether to ignore the validation of module key and URI. For example, when a
     * gadget is created that is a part of an application that isn't installed.
     */
    ignoreUriAndModuleKeyValidation?: boolean;
    /** The module key of the gadget type. Can't be provided with `uri`. */
    moduleKey?: string;
    /**
     * The position of the gadget. When the gadget is placed into the position, other
     * gadgets in the same column are moved down to accommodate it.
     */
    position?: DashboardGadgetPosition;
    /** The title of the gadget. */
    title?: string;
    /** The URI of the gadget type. Can't be provided with `moduleKey`. */
    uri?: string;
}
/** The details of the gadget to update. */
interface DashboardGadgetUpdateRequest {
    /**
     * The color of the gadget. Should be one of `blue`, `red`, `yellow`, `green`,
     * `cyan`, `purple`, `gray`, or `white`.
     */
    color?: string;
    /** The position of the gadget. */
    position?: DashboardGadgetPosition;
    /** The title of the gadget. */
    title?: string;
}
/** The project issue type hierarchy. */
interface Hierarchy {
    /**
     * The ID of the base level. This property is deprecated, see [Change notice:
     * Removing hierarchy level IDs from next-gen
     * APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/).
     */
    baseLevelId?: number;
    /** Details about the hierarchy level. */
    levels?: SimplifiedHierarchyLevel[];
}
/** A page of items. */
interface PageBeanDashboard {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Dashboard[];
}
/** A page containing dashboard details. */
interface PageOfDashboards {
    /** List of dashboards. */
    dashboards?: Dashboard[];
    /** The maximum number of results that could be on the page. */
    maxResults?: number;
    /** The URL of the next page of results, if any. */
    next?: string;
    /** The URL of the previous page of results, if any. */
    prev?: string;
    /** The index of the first item returned on the page. */
    startAt?: number;
    /** The number of results on the page. */
    total?: number;
}
/** Details for permissions of shareable entities */
interface PermissionDetails {
    /** The edit permissions for the shareable entities. */
    editPermissions: SharePermission[];
    /** The share permissions for the shareable entities. */
    sharePermissions: SharePermission[];
}
/** Additional details about a project. */
interface ProjectInsight {
    /** The last issue update time. */
    lastIssueUpdateTime?: string;
    /** Total issue count. */
    totalIssueCount?: number;
}
/** The project landing page info. */
interface ProjectLandingPageInfo {
    attributes?: {
        [key: string]: string;
    };
    boardId?: number;
    boardName?: string;
    projectKey?: string;
    projectType?: string;
    queueCategory?: string;
    queueId?: number;
    queueName?: string;
    simpleBoard?: boolean;
    simplified?: boolean;
    url?: string;
}
/** Permissions which a user has on a project. */
interface ProjectPermissions {
    /** Whether the logged user can edit the project. */
    canEdit?: boolean;
}
/** Details of the group associated with the role. */
interface ProjectRoleGroup {
    /** The display name of the group. */
    displayName?: string;
    /** The ID of the group. */
    groupId?: string;
    /**
     * The name of the group. As a group's name can change, use of `groupId` is
     * recommended to identify the group.
     */
    name?: string;
}
/** Details of the user associated with the role. */
interface ProjectRoleUser {
    /**
     * The account ID of the user, which uniquely identifies the user across all
     * Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Returns *unknown*
     * if the record is deleted and corrupted, for example, as the result of a server
     * import.
     */
    accountId?: string;
}
/** Details about a user assigned to a project role. */
interface RoleActor {
    actorGroup?: ProjectRoleGroup;
    actorUser?: ProjectRoleUser;
    /** The avatar of the role actor. */
    avatarUrl?: string;
    /**
     * The display name of the role actor. For users, depending on the user’s privacy
     * setting, this may return an alternative value for the user's name.
     */
    displayName?: string;
    /** The ID of the role actor. */
    id?: number;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    name?: string;
    /** The type of role actor. */
    type?: "atlassian-group-role-actor" | "atlassian-user-role-actor";
}
interface SimplifiedHierarchyLevel {
    /**
     * The ID of the level above this one in the hierarchy. This property is
     * deprecated, see [Change notice: Removing hierarchy level IDs from next-gen
     * APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/).
     */
    aboveLevelId?: number;
    /**
     * The ID of the level below this one in the hierarchy. This property is
     * deprecated, see [Change notice: Removing hierarchy level IDs from next-gen
     * APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/).
     */
    belowLevelId?: number;
    /**
     * The external UUID of the hierarchy level. This property is deprecated, see
     * [Change notice: Removing hierarchy level IDs from next-gen
     * APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/).
     */
    externalUuid?: string;
    hierarchyLevelNumber?: number;
    /**
     * The ID of the hierarchy level. This property is deprecated, see [Change notice:
     * Removing hierarchy level IDs from next-gen
     * APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/).
     */
    id?: number;
    /** The issue types available in this hierarchy level. */
    issueTypeIds?: number[];
    /** The level of this item in the hierarchy. */
    level?: number;
    /** The name of this hierarchy level. */
    name?: string;
    /**
     * The ID of the project configuration. This property is deprecated, see [Change
     * oticen: Removing hierarchy level IDs from next-gen
     * APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/).
     */
    projectConfigurationId?: number;
}
/**
 * The user account ID that the filter is shared with. For a request, specify the
 * `accountId` property for the user.
 */
interface UserBean {
    /**
     * The account ID of the user, which uniquely identifies the user across all
     * Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
     */
    accountId?: string;
    /** Whether the user is active. */
    active?: boolean;
    /** The avatars of the user. */
    avatarUrls?: UserBeanAvatarUrls;
    /**
     * The display name of the user. Depending on the user’s privacy setting, this may
     * return an alternative value.
     */
    displayName?: string;
    /**
     * This property is deprecated in favor of `accountId` because of privacy changes.
     * See the [migration
     * guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     * The key of the user.
     */
    key?: string;
    /**
     * This property is deprecated in favor of `accountId` because of privacy changes.
     * See the [migration
     * guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     * The username of the user.
     */
    name?: string;
    /** The URL of the user. */
    self?: string;
}
/** The avatars of the user. */
interface UserBeanAvatarUrls {
    /** The URL of the user's 16x16 pixel avatar. */
    "16x16"?: string;
    /** The URL of the user's 24x24 pixel avatar. */
    "24x24"?: string;
    /** The URL of the user's 32x32 pixel avatar. */
    "32x32"?: string;
    /** The URL of the user's 48x48 pixel avatar. */
    "48x48"?: string;
}
/** Contains details about a version approver. */
interface VersionApprover extends Record<string, unknown> {
    /** The Atlassian account ID of the approver. */
    accountId?: string;
    /** A description of why the user is declining the approval. */
    declineReason?: string;
    /** A description of what the user is approving within the specified version. */
    description?: string;
    /** The status of the approval, which can be *PENDING*, *APPROVED*, or *DECLINED* */
    status?: string;
}
/** Counts of the number of issues in various statuses. */
interface VersionIssuesStatus extends Record<string, unknown> {
    /** Count of issues with status *done*. */
    done?: number;
    /** Count of issues with status *in progress*. */
    inProgress?: number;
    /** Count of issues with status *to do*. */
    toDo?: number;
    /** Count of issues with a status other than *to do*, *in progress*, and *done*. */
    unmapped?: number;
}

/** List of users and groups found in a search. */
interface FoundUsersAndGroups {
    /**
     * The list of groups found in a search, including header text (Showing X of Y
     * matching groups) and total of matched groups.
     */
    groups?: FoundGroups;
    /**
     * The list of users found in a search, including header text (Showing X of Y
     * matching users) and total of matched users.
     */
    users?: FoundUsers;
}
/** A user found in a search. */
interface UserPickerUser {
    /**
     * The account ID of the user, which uniquely identifies the user across all
     * Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
     */
    accountId?: string;
    /**
     * The user account type. Can take the following values:
     *
     *  *  `atlassian` regular Atlassian user account
     *  *  `app` system account used for Connect applications and OAuth to represent
     * external systems
     *  *  `customer` Jira Service Desk account representing an external service desk
     */
    accountType?: "atlassian" | "app" | "customer" | "unknown";
    /** The avatar URL of the user. */
    avatarUrl?: string;
    /**
     * The display name of the user. Depending on the user’s privacy setting, this may
     * be returned as null.
     */
    displayName?: string;
    /**
     * The display name, email address, and key of the user with the matched query
     * string highlighted with the HTML bold tag.
     */
    html?: string;
    /**
     * This property is no longer available. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    key?: string;
    /**
     * This property is no longer available . See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    name?: string;
}

interface AddGroupBean extends Record<string, unknown> {
    /** The name of the group. */
    name: string;
}
/** A group found in a search. */
interface FoundGroup {
    /** Avatar url for the group/team if present. */
    avatarUrl?: string;
    /**
     * The ID of the group, which uniquely identifies the group across all Atlassian
     * products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*.
     */
    groupId?: string;
    /** The group name with the matched query string highlighted with the HTML bold tag. */
    html?: string;
    labels?: GroupLabel[];
    /**
     * Describes who/how the team is managed. The possible values are
     * \* external - when team is synced from an external directory like SCIM or HRIS,
     * and team members cannot be modified.
     * \* admins - when a team is managed by an admin (team members can only be
     * modified by admins).
     * \* team-members - managed by existing team members, new members need to be
     * invited to join.
     * \* open - anyone can join or modify this team.
     */
    managedBy?: "EXTERNAL" | "ADMINS" | "TEAM_MEMBERS" | "OPEN";
    /**
     * The name of the group. The name of a group is mutable, to reliably identify a
     * group use ``groupId`.`
     */
    name?: string;
    /**
     * Describes the type of group. The possible values are
     * \* team-collaboration - A platform team managed in people directory.
     * \* userbase-group - a group of users created in adminhub.
     * \* admin-oversight - currently unused.
     */
    usageType?: "USERBASE_GROUP" | "TEAM_COLLABORATION" | "ADMIN_OVERSIGHT";
}
interface Group {
    /** Expand options that include additional group details in the response. */
    expand?: string;
    /**
     * The ID of the group, which uniquely identifies the group across all Atlassian
     * products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*.
     */
    groupId?: string | null;
    /** The name of group. */
    name?: string;
    /** The URL for these group details. */
    self?: string;
    /**
     * A paginated list of the users that are members of the group. A maximum of 50
     * users is returned in the list, to access additional users append
     * `[start-index:end-index]` to the expand request. For example, to access the
     * next 50 users, use`?expand=users[51:100]`.
     */
    users?: PagedListUserDetailsApplicationUser;
}
/** Details about a group. */
interface GroupDetails {
    /**
     * The ID of the group, which uniquely identifies the group across all Atlassian
     * products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*.
     */
    groupId?: string | null;
    /** The name of the group. */
    name?: string;
}
/** A group label. */
interface GroupLabel {
    /** The group label name. */
    text?: string;
    /** The title of the group label. */
    title?: string;
    /** The type of the group label. */
    type?: "ADMIN" | "SINGLE" | "MULTIPLE";
}
/** A page of items. */
interface PageBeanGroupDetails {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: GroupDetails[];
}
/** A page of items. */
interface PageBeanUserDetails {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: UserDetails[];
}
/**
 * A paged list. To access additional details append `[start-index:end-index]` to
 * the expand request. For example, `?expand=sharedUsers[10:40]` returns a list
 * starting at item 10 and finishing at item 40.
 */
interface PagedListUserDetailsApplicationUser {
    /** The index of the last item returned on the page. */
    "end-index"?: number;
    /** The list of items. */
    items?: UserDetails[];
    /** The maximum number of results that could be on the page. */
    "max-results"?: number;
    /** The number of items on the page. */
    size?: number;
    /** The index of the first item returned on the page. */
    "start-index"?: number;
}
interface UpdateUserToGroupBean extends Record<string, unknown> {
    /**
     * The account ID of the user, which uniquely identifies the user across all
     * Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
     */
    accountId?: string;
    /**
     * This property is no longer available. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    name?: string;
}

/** Details about an attachment. */
interface Attachment extends Record<string, unknown> {
    /** Details of the user who added the attachment. */
    author?: UserDetails;
    /** The content of the attachment. */
    content?: string;
    /** The datetime the attachment was created. */
    created?: string;
    /** The file name of the attachment. */
    filename?: string;
    /** The ID of the attachment. */
    id?: string;
    /** The MIME type of the attachment. */
    mimeType?: string;
    /** The URL of the attachment details response. */
    self?: string;
    /** The size of the attachment. */
    size?: number;
    /** The URL of a thumbnail representing the attachment. */
    thumbnail?: string;
}
interface AttachmentArchiveEntry {
    abbreviatedName?: string;
    entryIndex?: number;
    mediaType?: string;
    name?: string;
    size?: number;
}
interface AttachmentArchiveImpl {
    /** The list of the items included in the archive. */
    entries?: AttachmentArchiveEntry[];
    /** The number of items in the archive. */
    totalEntryCount?: number;
}
/** Metadata for an item in an attachment archive. */
interface AttachmentArchiveItemReadable {
    /** The position of the item within the archive. */
    index?: number;
    /** The label for the archive item. */
    label?: string;
    /** The MIME type of the archive item. */
    mediaType?: string;
    /** The path of the archive item. */
    path?: string;
    /** The size of the archive item. */
    size?: string;
}
/** Metadata for an archive (for example a zip) and its contents. */
interface AttachmentArchiveMetadataReadable {
    /** The list of the items included in the archive. */
    entries?: AttachmentArchiveItemReadable[];
    /** The ID of the attachment. */
    id?: number;
    /** The MIME type of the attachment. */
    mediaType?: string;
    /** The name of the archive file. */
    name?: string;
    /** The number of items included in the archive. */
    totalEntryCount?: number;
}
/** Metadata for an issue attachment. */
interface AttachmentMetadata {
    /** Details of the user who attached the file. */
    author?: User;
    /** The URL of the attachment. */
    content?: string;
    /** The datetime the attachment was created. */
    created?: string;
    /** The name of the attachment file. */
    filename?: string;
    /** The ID of the attachment. */
    id?: number;
    /** The MIME type of the attachment. */
    mimeType?: string;
    /** Additional properties of the attachment. */
    properties?: {
        [key: string]: unknown;
    };
    /** The URL of the attachment metadata details. */
    self?: string;
    /** The size of the attachment. */
    size?: number;
    /** The URL of a thumbnail representing the attachment. */
    thumbnail?: string;
}
/** Details of the instance's attachment settings. */
interface AttachmentSettings {
    /** Whether the ability to add attachments is enabled. */
    enabled?: boolean;
    /** The maximum size of attachments permitted, in bytes. */
    uploadLimit?: number;
}
interface ListWrapperCallbackApplicationRole {
}
interface ListWrapperCallbackGroupName {
}
interface MultipartFile {
    bytes?: string[];
    contentType?: string;
    empty?: boolean;
    inputStream?: {
        [key: string]: unknown;
    };
    name?: string;
    originalFilename?: string;
    resource?: Resource;
    size?: number;
}
interface Resource {
    description?: string;
    file?: Blob | ReadableStream;
    filename?: string;
    inputStream?: {
        [key: string]: unknown;
    };
    open?: boolean;
    readable?: boolean;
    uri?: string;
    url?: string;
}
/** The application roles the user is assigned to. */
interface SimpleListWrapperApplicationRole {
    callback?: ListWrapperCallbackApplicationRole;
    items?: ApplicationRole[];
    "max-results"?: number;
    pagingCallback?: ListWrapperCallbackApplicationRole;
    size?: number;
}
/** The groups that the user belongs to. */
interface SimpleListWrapperGroupName {
    callback?: ListWrapperCallbackGroupName;
    items?: GroupName[];
    "max-results"?: number;
    pagingCallback?: ListWrapperCallbackGroupName;
    size?: number;
}

/** Property key details. */
interface PropertyKey {
    /** The key of the property. */
    key?: string;
    /** The URL of the property. */
    self?: string;
}

/** Details of the options to create for a custom field. */
interface BulkCustomFieldOptionCreateRequest {
    /** Details of options to create. */
    options?: CustomFieldOptionCreate[];
}
/** Details of the options to update for a custom field. */
interface BulkCustomFieldOptionUpdateRequest {
    /** Details of the options to update. */
    options?: CustomFieldOptionUpdate[];
}
/** Details of the custom field options for a context. */
interface CustomFieldContextOption {
    /** Whether the option is disabled. */
    disabled: boolean;
    /** The ID of the custom field option. */
    id: string;
    /**
     * For cascading options, the ID of the custom field option containing the
     * cascading option.
     */
    optionId?: string;
    /** The value of the custom field option. */
    value: string;
}
/** A list of custom field options for a context. */
interface CustomFieldCreatedContextOptionsList {
    /** The created custom field options. */
    options?: CustomFieldContextOption[];
}
/** Details of a custom option for a field. */
interface CustomFieldOption {
    /** The URL of these custom field option details. */
    self?: string;
    /** The value of the custom field option. */
    value?: string;
}
/** Details of a custom field option to create. */
interface CustomFieldOptionCreate {
    /** Whether the option is disabled. */
    disabled?: boolean;
    /** For cascading options, the ID of a parent option. */
    optionId?: string;
    /** The value of the custom field option. */
    value: string;
}
/** Details of a custom field option for a context. */
interface CustomFieldOptionUpdate {
    /** Whether the option is disabled. */
    disabled?: boolean;
    /** The ID of the custom field option. */
    id: string;
    /** The value of the custom field option. */
    value?: string;
}
/** A list of custom field options for a context. */
interface CustomFieldUpdatedContextOptionsList {
    /** The updated custom field options. */
    options?: CustomFieldOptionUpdate[];
}
/**
 * An ordered list of custom field option IDs and information on where to move
 * them.
 */
interface OrderOfCustomFieldOptions {
    /**
     * The ID of the custom field option or cascading option to place the moved
     * options after. Required if `position` isn't provided.
     */
    after?: string;
    /**
     * A list of IDs of custom field options to move. The order of the custom field
     * option IDs in the list is the order they are given after the move. The list
     * must contain custom field options or cascading options, but not both.
     */
    customFieldOptionIds: string[];
    /**
     * The position the custom field options should be moved to. Required if `after`
     * isn't provided.
     */
    position?: "First" | "Last";
}
/** A page of items. */
interface PageBeanCustomFieldContextOption {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: CustomFieldContextOption[];
}
/** The result of the task execution. */
interface RemoveOptionFromIssuesResult {
    /**
     * A collection of errors related to unchanged issues. The collection size is
     * limited, which means not all errors may be returned.
     */
    errors?: SimpleErrorCollection;
    /** The IDs of the modified issues. */
    modifiedIssues?: number[];
    /** The IDs of the unchanged issues, those issues where errors prevent modification. */
    unmodifiedIssues?: number[];
}
/**
 * A collection of errors related to unchanged issues. The collection size is
 * limited, which means not all errors may be returned.
 */
interface SimpleErrorCollection {
    /**
     * The list of error messages produced by this operation. For example, "input
     * parameter 'key' must be provided"
     */
    errorMessages?: string[];
    /**
     * The list of errors by parameter returned by the operation. For
     * example,"projectKey": "Project keys must start with an uppercase letter,
     * followed by one or more uppercase alphanumeric characters."
     */
    errors?: {
        [key: string]: string;
    };
    httpStatusCode?: number;
}

/** Priority schemes associated with the issue priority. */
interface ExpandPrioritySchemePage extends Record<string, unknown> {
    maxResults?: number;
    startAt?: number;
    total?: number;
}
/** Key fields from the linked issue. */
interface IssueLinkFields {
    /** The assignee of the linked issue. */
    assignee?: UserDetails;
    /** The type of the linked issue. */
    issueType?: IssueTypeDetails;
    /** Details about an issue type. */
    issuetype?: IssueTypeDetails;
    /** The priority of the linked issue. */
    priority?: Priority;
    /** The status of the linked issue. */
    status?: StatusDetails;
    /** The summary description of the linked issue. */
    summary?: string;
    /** The time tracking of the linked issue. */
    timetracking?: TimeTrackingDetails;
}
/** Details of a link between issues. */
interface IssueLink {
    /** The ID of the issue link. */
    id?: string;
    /**
     * Provides details about the linked issue. If presenting this link in a user
     * interface, use the `inward` field of the issue link type to label the link.
     */
    inwardIssue: LinkedIssue;
    /**
     * Provides details about the linked issue. If presenting this link in a user
     * interface, use the `outward` field of the issue link type to label the link.
     */
    outwardIssue: LinkedIssue;
    /** The URL of the issue link. */
    self?: string;
    /** The type of link between the issues. */
    type: IssueLinkType;
}
/** The ID or key of a linked issue. */
interface LinkedIssue {
    /** The fields associated with the issue. */
    fields?: IssueLinkFields;
    /** The ID of an issue. Required if `key` isn't provided. */
    id?: string;
    /** The key of an issue. Required if `id` isn't provided. */
    key?: string;
    /** The URL of the issue. */
    self?: string;
}
interface LinkIssueRequestJsonBean {
    /** A comment. */
    comment?: Comment;
    /** The ID or key of a linked issue. */
    inwardIssue: LinkedIssue;
    /** The ID or key of a linked issue. */
    outwardIssue: LinkedIssue;
    /**
     * This object is used as follows:
     *
     *  *  In the [ issueLink](#api-rest-api-3-issueLink-post) resource it defines and
     * reports on the type of link between the issues. Find a list of issue link types
     * with [Get issue link types](#api-rest-api-3-issueLinkType-get).
     *  *  In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it
     * defines and reports on issue link types.
     */
    type: IssueLinkType;
}
/** Time tracking details. */
interface TimeTrackingDetails {
    /** The original estimate of time needed for this issue in readable format. */
    originalEstimate?: string;
    /** The original estimate of time needed for this issue in seconds. */
    originalEstimateSeconds?: number;
    /** The remaining estimate of time needed for this issue in readable format. */
    remainingEstimate?: string;
    /** The remaining estimate of time needed for this issue in seconds. */
    remainingEstimateSeconds?: number;
    /** Time worked on this issue in readable format. */
    timeSpent?: string;
    /** Time worked on this issue in seconds. */
    timeSpentSeconds?: number;
}

/** Details of notifications which should be added to the notification scheme. */
interface AddNotificationsDetails extends Record<string, unknown> {
    /** The list of notifications which should be added to the notification scheme. */
    notificationSchemeEvents: NotificationSchemeEventDetails[];
}
/** Details of an notification scheme. */
interface CreateNotificationSchemeDetails extends Record<string, unknown> {
    /** The description of the notification scheme. */
    description?: string;
    /** The name of the notification scheme. Must be unique (case-insensitive). */
    name: string;
    /** The list of notifications which should be added to the notification scheme. */
    notificationSchemeEvents?: NotificationSchemeEventDetails[];
}
/** Details about a notification associated with an event. */
interface EventNotification {
    /** The email address. */
    emailAddress?: string;
    /**
     * Expand options that include additional event notification details in the
     * response.
     */
    expand?: string;
    /** The custom user or group field. */
    field?: FieldDetails;
    /** The specified group. */
    group?: GroupName;
    /** The ID of the notification. */
    id?: number;
    /** Identifies the recipients of the notification. */
    notificationType?: "CurrentAssignee" | "Reporter" | "CurrentUser" | "ProjectLead" | "ComponentLead" | "User" | "Group" | "ProjectRole" | "EmailAddress" | "AllWatchers" | "UserCustomField" | "GroupCustomField";
    /**
     * As a group's name can change, use of `recipient` is recommended. The identifier
     * associated with the `notificationType` value that defines the receiver of the
     * notification, where the receiver isn't implied by `notificationType` value. So,
     * when `notificationType` is:
     *
     *  *  `User` The `parameter` is the user account ID.
     *  *  `Group` The `parameter` is the group name.
     *  *  `ProjectRole` The `parameter` is the project role ID.
     *  *  `UserCustomField` The `parameter` is the ID of the custom field.
     *  *  `GroupCustomField` The `parameter` is the ID of the custom field.
     */
    parameter?: string;
    /** The specified project role. */
    projectRole?: ProjectRole;
    /**
     * The identifier associated with the `notificationType` value that defines the
     * receiver of the notification, where the receiver isn't implied by the
     * `notificationType` value. So, when `notificationType` is:
     *
     *  *  `User`, `recipient` is the user account ID.
     *  *  `Group`, `recipient` is the group ID.
     *  *  `ProjectRole`, `recipient` is the project role ID.
     *  *  `UserCustomField`, `recipient` is the ID of the custom field.
     *  *  `GroupCustomField`, `recipient` is the ID of the custom field.
     */
    recipient?: string;
    /** The specified user. */
    user?: UserDetails;
}
/** Details about a notification event. */
interface NotificationEvent {
    /** The description of the event. */
    description?: string;
    /**
     * The ID of the event. The event can be a [Jira system
     * event](https://confluence.atlassian.com/x/8YdKLg#Creatinganotificationscheme-eventsEvents)
     * or a [custom event](https://confluence.atlassian.com/x/AIlKLg).
     */
    id?: number;
    /** The name of the event. */
    name?: string;
    /**
     * The template of the event. Only custom events configured by Jira administrators
     * have template.
     */
    templateEvent?: NotificationEvent;
}
interface NotificationSchemeAndProjectMappingJsonBean {
    notificationSchemeId?: string;
    projectId?: string;
}
/** Details about a notification scheme event. */
interface NotificationSchemeEvent {
    /** Details about a notification event. */
    event?: NotificationEvent;
    notifications?: EventNotification[];
}
/** Details of a notification scheme event. */
interface NotificationSchemeEventDetails extends Record<string, unknown> {
    /** The ID of the event. */
    event: NotificationSchemeEventTypeId;
    /** The list of notifications mapped to a specified event. */
    notifications: NotificationSchemeNotificationDetails[];
}
/** The ID of an event that is being mapped to notifications. */
interface NotificationSchemeEventTypeId extends Record<string, unknown> {
    /** The ID of the notification scheme event. */
    id: string;
}
/** The ID of a notification scheme. */
interface NotificationSchemeId extends Record<string, unknown> {
    /** The ID of a notification scheme. */
    id: string;
}
/** Details of a notification within a notification scheme. */
interface NotificationSchemeNotificationDetails extends Record<string, unknown> {
    /** The notification type, e.g `CurrentAssignee`, `Group`, `EmailAddress`. */
    notificationType: string;
    /** The value corresponding to the specified notification type. */
    parameter?: string;
}
/** A page of items. */
interface PageBeanNotificationScheme {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: NotificationScheme[];
}
/** A page of items. */
interface PageBeanNotificationSchemeAndProjectMappingJsonBean {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: NotificationSchemeAndProjectMappingJsonBean[];
}
/** Details of a notification scheme. */
interface UpdateNotificationSchemeDetails extends Record<string, unknown> {
    /** The description of the notification scheme. */
    description?: string;
    /** The name of the notification scheme. Must be unique. */
    name?: string;
}

/** Details of an issue type screen scheme. */
interface IssueTypeScreenScheme {
    /** The description of the issue type screen scheme. */
    description?: string;
    /** The ID of the issue type screen scheme. */
    id: string;
    /** The name of the issue type screen scheme. */
    name: string;
}
/** The details of an issue type screen scheme. */
interface IssueTypeScreenSchemeDetails {
    /**
     * The description of the issue type screen scheme. The maximum length is 255
     * characters.
     */
    description?: string;
    /**
     * The IDs of the screen schemes for the issue type IDs and *default*. A *default*
     * entry is required to create an issue type screen scheme, it defines the mapping
     * for all issue types without a screen scheme.
     */
    issueTypeMappings: IssueTypeScreenSchemeMapping[];
    /**
     * The name of the issue type screen scheme. The name must be unique. The maximum
     * length is 255 characters.
     */
    name: string;
}
/** The ID of an issue type screen scheme. */
interface IssueTypeScreenSchemeId {
    /** The ID of the issue type screen scheme. */
    id: string;
}
/** The screen scheme for an issue type. */
interface IssueTypeScreenSchemeItem {
    /**
     * The ID of the issue type or *default*. Only issue types used in classic
     * projects are accepted. When creating an issue screen scheme, an entry for
     * *default* must be provided and defines the mapping for all issue types without
     * a screen scheme. Otherwise, a *default* entry can't be provided.
     */
    issueTypeId: string;
    /** The ID of the issue type screen scheme. */
    issueTypeScreenSchemeId: string;
    /** The ID of the screen scheme. */
    screenSchemeId: string;
}
/** The IDs of the screen schemes for the issue type IDs. */
interface IssueTypeScreenSchemeMapping {
    /**
     * The ID of the issue type or *default*. Only issue types used in classic
     * projects are accepted. An entry for *default* must be provided and defines the
     * mapping for all issue types without a screen scheme.
     */
    issueTypeId: string;
    /**
     * The ID of the screen scheme. Only screen schemes used in classic projects are
     * accepted.
     */
    screenSchemeId: string;
}
/** A list of issue type screen scheme mappings. */
interface IssueTypeScreenSchemeMappingDetails {
    /**
     * The list of issue type to screen scheme mappings. A *default* entry cannot be
     * specified because a default entry is added when an issue type screen scheme is
     * created.
     */
    issueTypeMappings: IssueTypeScreenSchemeMapping[];
}
/** Associated issue type screen scheme and project. */
interface IssueTypeScreenSchemeProjectAssociation {
    /** The ID of the issue type screen scheme. */
    issueTypeScreenSchemeId?: string;
    /** The ID of the project. */
    projectId?: string;
}
/** Issue type screen scheme with a list of the projects that use it. */
interface IssueTypeScreenSchemesProjects {
    /** Details of an issue type screen scheme. */
    issueTypeScreenScheme: IssueTypeScreenScheme;
    /** The IDs of the projects using the issue type screen scheme. */
    projectIds: string[];
}
/** Details of an issue type screen scheme. */
interface IssueTypeScreenSchemeUpdateDetails {
    /**
     * The description of the issue type screen scheme. The maximum length is 255
     * characters.
     */
    description?: string;
    /**
     * The name of the issue type screen scheme. The name must be unique. The maximum
     * length is 255 characters.
     */
    name?: string;
}
/** A page of items. */
interface PageBeanIssueTypeScreenSchemeItem {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: IssueTypeScreenSchemeItem[];
}
/** A page of items. */
interface PageBeanIssueTypeScreenSchemesProjects {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: IssueTypeScreenSchemesProjects[];
}
/** The ID of a screen scheme. */
interface UpdateDefaultScreenScheme {
    /** The ID of the screen scheme. */
    screenSchemeId: string;
}

/** Details of a changed worklog. */
interface ChangedWorklog {
    /** Details of properties associated with the change. */
    properties?: EntityProperty[];
    /** The datetime of the change. */
    updatedTime?: number;
    /** The ID of the worklog. */
    worklogId?: number;
}
/** List of changed worklogs. */
interface ChangedWorklogs {
    lastPage?: boolean;
    /** The URL of the next list of changed worklogs. */
    nextPage?: string;
    /** The URL of this changed worklogs list. */
    self?: string;
    /** The datetime of the first worklog item in the list. */
    since?: number;
    /** The datetime of the last worklog item in the list. */
    until?: number;
    /** Changed worklog list. */
    values?: ChangedWorklog[];
}
/** Paginated list of worklog details */
interface PageOfWorklogs extends Record<string, unknown> {
    /** The maximum number of results that could be on the page. */
    maxResults?: number;
    /** The index of the first item returned on the page. */
    startAt?: number;
    /** The number of results on the page. */
    total?: number;
    /** List of worklogs. */
    worklogs?: Worklog[];
}
/** Details of a worklog. */
interface Worklog extends Record<string, unknown> {
    /** Details of the user who created the worklog. */
    author?: UserDetails;
    /**
     * A comment about the worklog in [Atlassian Document
     * Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/).
     * Optional when creating or updating a worklog.
     */
    comment?: unknown;
    /** The datetime on which the worklog was created. */
    created?: string;
    /** The ID of the worklog record. */
    id?: string;
    /** The ID of the issue this worklog is for. */
    issueId?: string;
    /**
     * Details of properties for the worklog. Optional when creating or updating a
     * worklog.
     */
    properties?: EntityProperty[];
    /** The URL of the worklog item. */
    self?: string;
    /**
     * The datetime on which the worklog effort was started. Required when creating a
     * worklog. Optional when updating a worklog.
     */
    started?: string;
    /**
     * The time spent working on the issue as days (\#d), hours (\#h), or minutes (\#m
     * or \#). Required when creating a worklog if `timeSpentSeconds` isn't provided.
     * Optional when updating a worklog. Cannot be provided if `timeSpentSecond` is
     * provided.
     */
    timeSpent?: string;
    /**
     * The time in seconds spent working on the issue. Required when creating a
     * worklog if `timeSpent` isn't provided. Optional when updating a worklog. Cannot
     * be provided if `timeSpent` is provided.
     */
    timeSpentSeconds?: number;
    /** Details of the user who last updated the worklog. */
    updateAuthor?: UserDetails;
    /** The datetime on which the worklog was last updated. */
    updated?: string;
    /**
     * Details about any restrictions in the visibility of the worklog. Optional when
     * creating or updating a worklog.
     */
    visibility?: Visibility;
}
interface WorklogIdsRequestBean {
    /** A list of worklog IDs. */
    ids: number[];
}
interface WorklogsMoveRequestBean {
    /** A list of worklog IDs. */
    ids?: number[];
    /** The issue id or key of the destination issue */
    issueIdOrKey?: string;
}

/** Details of a filter for exporting archived issues. */
interface ArchivedIssuesFilterRequest extends Record<string, unknown> {
    /** List archived issues archived by a specified account ID. */
    archivedBy?: string[];
    /** List issues archived within a specified date range. */
    archivedDateRange?: DateRangeFilterRequest;
    /** List archived issues with a specified issue type ID. */
    issueTypes?: string[];
    /** List archived issues with a specified project key. */
    projects?: string[];
    /** List archived issues where the reporter is a specified account ID. */
    reporters?: string[];
}
interface ArchiveIssueAsyncRequest {
    jql?: string;
}
/** Request bean for bulk changelog retrieval */
interface BulkChangelogRequestBean {
    /** List of field IDs to filter changelogs */
    fieldIds?: string[];
    /** List of issue IDs/keys to fetch changelogs for */
    issueIdsOrKeys: string[];
    /** The maximum number of items to return per page */
    maxResults?: number;
    /** The cursor for pagination */
    nextPageToken?: string;
}
/** A page of changelogs which is designed to handle multiple issues */
interface BulkChangelogResponseBean {
    /** The list of issues changelogs. */
    issueChangeLogs?: IssueChangeLog[];
    /**
     * Continuation token to fetch the next page. If this result represents the last
     * or the only page, this token will be null.
     */
    nextPageToken?: string;
}
interface BulkFetchIssueRequestBean {
    /**
     * Use [expand](#expansion) to include additional information about issues in the
     * response. Note that, unlike the majority of instances where `expand` is
     * specified, `expand` is defined as a list of values. The expand options are:
     *
     *  *  `renderedFields` Returns field values rendered in HTML format.
     *  *  `names` Returns the display name of each field.
     *  *  `schema` Returns the schema describing a field type.
     *  *  `transitions` Returns all possible transitions for the issue.
     *  *  `operations` Returns all possible operations for the issue.
     *  *  `editmeta` Returns information about how each field can be edited.
     *  *  `changelog` Returns a list of recent updates to an issue, sorted by date,
     * starting from the most recent.
     *  *  `versionedRepresentations` Instead of `fields`, returns
     * `versionedRepresentations` a JSON array containing each version of a field's
     * value, with the highest numbered item representing the most recent version.
     */
    expand?: string[];
    /**
     * A list of fields to return for each issue, use it to retrieve a subset of
     * fields. This parameter accepts a comma-separated list. Expand options include:
     *
     *  *  `*all` Returns all fields.
     *  *  `*navigable` Returns navigable fields.
     *  *  Any issue field, prefixed with a minus to exclude.
     *
     * The default is `*navigable`.
     *
     * Examples:
     *
     *  *  `summary,comment` Returns the summary and comments fields only.
     *  *  `-description` Returns all navigable (default) fields except description.
     *  *  `*all,-comment` Returns all fields except comments.
     *
     * Multiple `fields` parameters can be included in a request.
     *
     * Note: All navigable fields are returned by default. This differs from [GET
     * issue](#api-rest-api-3-issue-issueIdOrKey-get) where the default is all fields.
     */
    fields?: string[];
    /** Reference fields by their key (rather than ID). The default is `false`. */
    fieldsByKeys?: boolean;
    /**
     * An array of issue IDs or issue keys to fetch. You can mix issue IDs and keys in
     * the same query.
     */
    issueIdsOrKeys: string[];
    /**
     * A list of issue property keys of issue properties to be included in the
     * results. A maximum of 5 issue property keys can be specified.
     */
    properties?: string[];
}
/** The list of requested issues & fields. */
interface BulkIssueResults {
    /**
     * When Jira can't return an issue enumerated in a request due to a retriable
     * error or payload constraint, we'll return the respective issue ID with a
     * corresponding error message. This list is empty when there are no errors Issues
     * which aren't found or that the user doesn't have permission to view won't be
     * returned in this list.
     */
    issueErrors?: IssueError[];
    /** The list of issues. */
    issues?: IssueBean[];
}
interface BulkOperationErrorResult {
    /** Error messages from an operation. */
    elementErrors?: ErrorCollection;
    failedElementNumber?: number;
    status?: number;
}
/** A change item. */
interface ChangeDetails {
    /** The name of the field changed. */
    field?: string;
    /** The ID of the field changed. */
    fieldId?: string;
    /** The type of the field changed. */
    fieldtype?: string;
    /** The details of the original value. */
    from?: string;
    /** The details of the original value as a string. */
    fromString?: string;
    /** The details of the new value. */
    to?: string;
    /** The details of the new value as a string. */
    toString: string;
}
/**
 * A log of changes made to issue fields. Changelogs related to workflow
 * associations are currently being deprecated.
 */
interface Changelog {
    /** The user who made the change. */
    author?: UserDetails;
    /** The date on which the change took place. */
    created?: string;
    /** The history metadata associated with the changed. */
    historyMetadata?: HistoryMetadata;
    /** The ID of the changelog. */
    id?: string;
    /** The list of items changed. */
    items?: ChangeDetails[];
}
/** Details about a created issue or subtask. */
interface CreatedIssue {
    /** The ID of the created issue or subtask. */
    id?: string;
    /** The key of the created issue or subtask. */
    key?: string;
    /** The URL of the created issue or subtask. */
    self?: string;
    /** The response code and messages related to any requested transition. */
    transition?: NestedResponse;
    /** The response code and messages related to any requested watchers. */
    watchers?: NestedResponse;
}
/** Details about the issues created and the errors for requests that failed. */
interface CreatedIssues {
    /** Error details for failed issue creation requests. */
    errors?: BulkOperationErrorResult[];
    /** Details of the issues created. */
    issues?: CreatedIssue[];
}
/** List issues archived within a specified date range. */
interface DateRangeFilterRequest {
    /** List issues archived after a specified date, passed in the YYYY-MM-DD format. */
    dateAfter: string;
    /** List issues archived before a specified date provided in the YYYY-MM-DD format. */
    dateBefore: string;
}
interface Error {
    count?: number;
    issueIdsOrKeys?: string[];
    message?: string;
}
interface Errors {
    issueIsSubtask?: Error;
    issuesInArchivedProjects?: Error;
    issuesInUnlicensedProjects?: Error;
    issuesNotFound?: Error;
    userDoesNotHavePermission?: Error;
}
/** The response for status request for a running/completed export task. */
interface ExportArchivedIssuesTaskProgressResponse {
    fileUrl?: string;
    payload?: string;
    progress?: number;
    status?: string;
    submittedTime?: string;
    taskId?: string;
}
/** The metadata describing an issue field for createmeta. */
interface FieldCreateMetadata {
    /** The list of values allowed in the field. */
    allowedValues?: unknown[];
    /** The URL that can be used to automatically complete the field. */
    autoCompleteUrl?: string;
    /** The configuration properties. */
    configuration?: {
        [key: string]: unknown;
    };
    /** The default value of the field. */
    defaultValue?: unknown;
    /** The field id. */
    fieldId: string;
    /** Whether the field has a default value. */
    hasDefaultValue?: boolean;
    /** The key of the field. */
    key: string;
    /** The name of the field. */
    name: string;
    /** The list of operations that can be performed on the field. */
    operations: string[];
    /** Whether the field is required. */
    required: boolean;
    /** The data type of the field. */
    schema: JsonTypeBean;
}
/** The metadata describing an issue field. */
interface FieldMetadata {
    /** The list of values allowed in the field. */
    allowedValues?: unknown[];
    /** The URL that can be used to automatically complete the field. */
    autoCompleteUrl?: string;
    /** The configuration properties. */
    configuration?: {
        [key: string]: unknown;
    };
    /** The default value of the field. */
    defaultValue?: unknown;
    /** Whether the field has a default value. */
    hasDefaultValue?: boolean;
    /** The key of the field. */
    key: string;
    /** The name of the field. */
    name: string;
    /** The list of operations that can be performed on the field. */
    operations: string[];
    /** Whether the field is required. */
    required: boolean;
    /** The data type of the field. */
    schema: JsonTypeBean;
}
/** Details of an operation to perform on a field. */
interface FieldUpdateOperation {
    /**
     * The value to add to the field.
     *
     * @example
     * triaged
     */
    add?: unknown;
    /**
     * The field value to copy from another issue.
     *
     * @example
     * {
     *   "issuelinks": {
     *     "sourceIssues": [
     *       {
     *         "key": "FP-5"
     *       }
     *     ]
     *   }
     * }
     */
    copy?: unknown;
    /**
     * The value to edit in the field.
     *
     * @example
     * {
     *   "originalEstimate": "1w 1d",
     *   "remainingEstimate": "4d"
     * }
     */
    edit?: unknown;
    /**
     * The value to removed from the field.
     *
     * @example
     * blocker
     */
    remove?: unknown;
    /**
     * The value to set in the field.
     *
     * @example
     * A new summary
     */
    set?: unknown;
}
/** Details of issue history metadata. */
interface HistoryMetadata extends Record<string, unknown> {
    /** The activity described in the history record. */
    activityDescription?: string;
    /** The key of the activity described in the history record. */
    activityDescriptionKey?: string;
    /** Details of the user whose action created the history record. */
    actor?: HistoryMetadataParticipant;
    /** Details of the cause that triggered the creation the history record. */
    cause?: HistoryMetadataParticipant;
    /** The description of the history record. */
    description?: string;
    /** The description key of the history record. */
    descriptionKey?: string;
    /** The description of the email address associated the history record. */
    emailDescription?: string;
    /** The description key of the email address associated the history record. */
    emailDescriptionKey?: string;
    /** Additional arbitrary information about the history record. */
    extraData?: {
        [key: string]: string;
    };
    /** Details of the system that generated the history record. */
    generator?: HistoryMetadataParticipant;
    /** The type of the history record. */
    type?: string;
}
/** Details of user or system associated with a issue history metadata item. */
interface HistoryMetadataParticipant extends Record<string, unknown> {
    /** The URL to an avatar for the user or system associated with a history record. */
    avatarUrl?: string;
    /** The display name of the user or system associated with a history record. */
    displayName?: string;
    /**
     * The key of the display name of the user or system associated with a history
     * record.
     */
    displayNameKey?: string;
    /** The ID of the user or system associated with a history record. */
    id?: string;
    /** The type of the user or system associated with a history record. */
    type?: string;
    /** The URL of the user or system associated with a history record. */
    url?: string;
}
interface IncludedFields {
    actuallyIncluded?: string[];
    excluded?: string[];
    included?: string[];
}
/** List of Issue Ids Or Keys that are to be archived or unarchived */
interface IssueArchivalSyncRequest {
    issueIdsOrKeys?: string[];
}
/**
 * Number of archived/unarchived issues and list of errors that occurred during
 * the action, if any.
 */
interface IssueArchivalSyncResponse {
    errors?: Errors;
    numberOfIssuesUpdated?: number;
}
/** List of changelogs that belong to single issue */
interface IssueChangeLog {
    /** List of changelogs that belongs to given issueId. */
    changeHistories?: Changelog[];
    /** The ID of the issue. */
    issueId?: string;
}
/** A list of changelog IDs. */
interface IssueChangelogIds {
    /** The list of changelog IDs. */
    changelogIds: number[];
}
/** The wrapper for the issue creation metadata for a list of projects. */
interface IssueCreateMetadata {
    /** Expand options that include additional project details in the response. */
    expand?: string;
    /** List of projects and their issue creation metadata. */
    projects?: ProjectIssueCreateMetadata[];
}
/** Describes the error that occurred when retrieving data for a particular issue. */
interface IssueError {
    /** The error that occurred when fetching this issue. */
    errorMessage?: string;
    /** The ID of the issue. */
    id?: string;
}
/** Details about an issue event. */
interface IssueEvent {
    /** The ID of the event. */
    id?: number;
    /** The name of the event. */
    name?: string;
}
interface IssueLimitReportResponseBean {
    /** A list of ids of issues approaching the limit and their field count */
    issuesApproachingLimit?: {
        [key: string]: {
            [key: string]: number;
        };
    };
    /** A list of ids of issues breaching the limit and their field count */
    issuesBreachingLimit?: {
        [key: string]: {
            [key: string]: number;
        };
    };
    /** The fields and their defined limits */
    limits?: {
        [key: string]: number;
    };
}
interface IssuesUpdateBean extends Record<string, unknown> {
    issueUpdates?: IssueUpdateDetails[];
}
/** Details of an issue transition. */
interface IssueTransition extends Record<string, unknown> {
    /** Expand options that include additional transition details in the response. */
    expand?: string;
    /**
     * Details of the fields associated with the issue transition screen. Use this
     * information to populate `fields` and `update` in a transition request.
     */
    fields?: {
        /** The metadata describing an issue field. */ [key: string]: FieldMetadata;
    };
    /** Whether there is a screen associated with the issue transition. */
    hasScreen?: boolean;
    /**
     * The ID of the issue transition. Required when specifying a transition to
     * undertake.
     */
    id?: string;
    /** Whether the transition is available to be performed. */
    isAvailable?: boolean;
    /** Whether the issue has to meet criteria before the issue transition is applied. */
    isConditional?: boolean;
    /**
     * Whether the issue transition is global, that is, the transition is applied to
     * issues regardless of their status.
     */
    isGlobal?: boolean;
    /** Whether this is the initial issue transition for the workflow. */
    isInitial?: boolean;
    looped?: boolean;
    /** The name of the issue transition. */
    name?: string;
    /** Details of the issue status after the transition. */
    to?: StatusDetails;
}
/** Details of the issue creation metadata for an issue type. */
interface IssueTypeIssueCreateMetadata {
    /** The ID of the issue type's avatar. */
    avatarId?: number;
    /** The description of the issue type. */
    description?: string;
    /** Unique ID for next-gen projects. */
    entityId?: string;
    /**
     * Expand options that include additional issue type metadata details in the
     * response.
     */
    expand?: string;
    /** List of the fields available when creating an issue for the issue type. */
    fields?: {
        /** The metadata describing an issue field. */ [key: string]: FieldMetadata;
    };
    /** Hierarchy level of the issue type. */
    hierarchyLevel?: number;
    /** The URL of the issue type's avatar. */
    iconUrl?: string;
    /** The ID of the issue type. */
    id?: string;
    /** The name of the issue type. */
    name?: string;
    /** Details of the next-gen projects the issue type is available in. */
    scope?: Scope;
    /** The URL of these issue type details. */
    self?: string;
    /** Whether this issue type is used to create subtasks. */
    subtask?: boolean;
}
/** Details of an issue update request. */
interface IssueUpdateDetails extends Record<string, unknown> {
    /**
     * List of issue screen fields to update, specifying the sub-field to update and
     * its value for each field. This field provides a straightforward option when
     * setting a sub-field. When multiple sub-fields or other operations are required,
     * use `update`. Fields included in here cannot be included in `update`.
     */
    fields?: IssueBeanKnownUpdateFields & {
        [key: string]: unknown;
    };
    /** Additional issue history details. */
    historyMetadata?: HistoryMetadata;
    /** Details of issue properties to be add or update. */
    properties?: EntityProperty[];
    /**
     * Details of a transition. Required when performing a transition, optional when
     * creating or editing an issue.
     */
    transition?: IssueTransition;
    /**
     * A Map containing the field field name and a list of operations to perform on
     * the issue screen field. Note that fields included in here cannot be included in
     * `fields`.
     */
    update?: {
        [key: string]: FieldUpdateOperation[];
    };
}
/** A list of editable field details. */
interface IssueUpdateMetadata extends Record<string, unknown> {
    fields?: {
        /** The metadata describing an issue field. */ [key: string]: FieldMetadata;
    };
}
/** Details a link group, which defines issue operations. */
interface LinkGroup {
    groups?: LinkGroup[];
    /** Details about the operations available in this version. */
    header?: SimpleLink;
    id?: string;
    links?: SimpleLink[];
    styleClass?: string;
    weight?: number;
}
/** The response code and messages related to any requested watchers. */
interface NestedResponse {
    /** Error messages from an operation. */
    errorCollection?: ErrorCollection;
    status?: number;
    warningCollection?: WarningCollection;
}
/** Details about a notification. */
interface Notification extends Record<string, unknown> {
    /** The HTML body of the email notification for the issue. */
    htmlBody?: string;
    /** Restricts the notifications to users with the specified permissions. */
    restrict?: NotificationRecipientsRestrictions;
    /**
     * The subject of the email notification for the issue. If this is not specified,
     * then the subject is set to the issue key and summary.
     */
    subject?: string;
    /** The plain text body of the email notification for the issue. */
    textBody?: string;
    /** The recipients of the email notification for the issue. */
    to?: NotificationRecipients;
}
/** Details of the users and groups to receive the notification. */
interface NotificationRecipients extends Record<string, unknown> {
    /** Whether the notification should be sent to the issue's assignees. */
    assignee?: boolean;
    /** List of groupIds to receive the notification. */
    groupIds?: string[];
    /** List of groups to receive the notification. */
    groups?: GroupName[];
    /** Whether the notification should be sent to the issue's reporter. */
    reporter?: boolean;
    /** List of users to receive the notification. */
    users?: UserDetails[];
    /** Whether the notification should be sent to the issue's voters. */
    voters?: boolean;
    /** Whether the notification should be sent to the issue's watchers. */
    watchers?: boolean;
}
/**
 * Details of the group membership or permissions needed to receive the
 * notification.
 */
interface NotificationRecipientsRestrictions {
    /** List of groupId memberships required to receive the notification. */
    groupIds?: string[];
    /** List of group memberships required to receive the notification. */
    groups?: GroupName[];
    /** List of permissions required to receive the notification. */
    permissions?: RestrictedPermission[];
}
/** Details of the operations that can be performed on the issue. */
interface Operations extends Record<string, unknown> {
    /** Details of the link groups defining issue operations. */
    linkGroups?: LinkGroup[];
}
/** A page of items. */
interface PageBeanChangelog {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Changelog[];
}
/** A page of changelogs. */
interface PageOfChangelogs {
    /** The list of changelogs. */
    histories?: Changelog[];
    /** The maximum number of results that could be on the page. */
    maxResults?: number;
    /** The index of the first item returned on the page. */
    startAt?: number;
    /** The number of results on the page. */
    total?: number;
}
/** A page of CreateMetaIssueTypes. */
interface PageOfCreateMetaIssueTypes extends Record<string, unknown> {
    createMetaIssueType?: IssueTypeIssueCreateMetadata[];
    /** The list of CreateMetaIssueType. */
    issueTypes?: IssueTypeIssueCreateMetadata[];
    /** The maximum number of items to return per page. */
    maxResults?: number;
    /** The index of the first item returned. */
    startAt?: number;
    /** The total number of items in all pages. */
    total?: number;
}
/** A page of CreateMetaIssueType with Field. */
interface PageOfCreateMetaIssueTypeWithField extends Record<string, unknown> {
    /** The collection of FieldCreateMetaBeans. */
    fields?: FieldCreateMetadata[];
    /** The maximum number of items to return per page. */
    maxResults?: number;
    results?: FieldCreateMetadata[];
    /** The index of the first item returned. */
    startAt?: number;
    /** The total number of items in all pages. */
    total?: number;
}
/** Details of the issue creation metadata for a project. */
interface ProjectIssueCreateMetadata {
    /** List of the project's avatars, returning the avatar size and associated URL. */
    avatarUrls?: AvatarUrlsBean;
    /**
     * Expand options that include additional project issue create metadata details in
     * the response.
     */
    expand?: string;
    /** The ID of the project. */
    id?: string;
    /** List of the issue types supported by the project. */
    issuetypes?: IssueTypeIssueCreateMetadata[];
    /** The key of the project. */
    key?: string;
    /** The name of the project. */
    name?: string;
    /** The URL of the project. */
    self?: string;
}
/** Details of the permission. */
interface RestrictedPermission extends Record<string, unknown> {
    /**
     * The ID of the permission. Either `id` or `key` must be specified. Use [Get all
     * permissions](#api-rest-api-3-permissions-get) to get the list of permissions.
     */
    id?: string;
    /**
     * The key of the permission. Either `id` or `key` must be specified. Use [Get all
     * permissions](#api-rest-api-3-permissions-get) to get the list of permissions.
     */
    key?: string;
}
/** List of issue transitions. */
interface Transitions {
    /** Expand options that include additional transitions details in the response. */
    expand?: string;
    /** List of issue transitions. */
    transitions?: IssueTransition[];
}
interface WarningCollection {
    warnings?: string[];
}

/** Details about a permission granted to a user or group. */
interface PermissionGrant extends Record<string, unknown> {
    /**
     * The user or group being granted the permission. It consists of a `type`, a
     * type-dependent `parameter` and a type-dependent `value`. See [Holder
     * object](../api-group-permission-schemes/#holder-object) in *Get all permission
     * schemes* for more information.
     */
    holder?: PermissionHolder;
    /** The ID of the permission granted details. */
    id?: number;
    /**
     * The permission to grant. This permission can be one of the built-in permissions
     * or a custom permission added by an app. See [Built-in
     * permissions](../api-group-permission-schemes/#built-in-permissions) in *Get all
     * permission schemes* for more information about the built-in permissions. See
     * the [project
     * permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/)
     * and [global
     * permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/)
     * module documentation for more information about custom permissions.
     */
    permission?: string;
    /** The URL of the permission granted details. */
    self?: string;
}
/** List of permission grants. */
interface PermissionGrants {
    /** Expand options that include additional permission grant details in the response. */
    expand?: string;
    /** Permission grants list. */
    permissions?: PermissionGrant[];
}
/** List of all permission schemes. */
interface PermissionSchemes {
    /** Permission schemes list. */
    permissionSchemes?: PermissionScheme[];
}

/** A workflow transition rule. */
interface AppWorkflowTransitionRule {
    /** A rule configuration. */
    configuration: RuleConfiguration;
    /** The ID of the transition rule. */
    id: string;
    /** The key of the rule, as defined in the Connect or the Forge app descriptor. */
    key: string;
    transition?: WorkflowTransition;
}
/** A page of items. */
interface PageBeanWorkflowTransitionRules {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: WorkflowTransitionRules[];
}
/** A rule configuration. */
interface RuleConfiguration {
    /** Whether the rule is disabled. */
    disabled?: boolean;
    /**
     * A tag used to filter rules in [Get workflow transition rule
     * configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-rules/#api-rest-api-3-workflow-rule-config-get).
     */
    tag?: string;
    /**
     * Configuration of the rule, as it is stored by the Connect or the Forge app on
     * the rule configuration page.
     */
    value: string;
}
/** Properties that identify a workflow. */
interface WorkflowId {
    /** Whether the workflow is in the draft state. */
    draft: boolean;
    /** The name of the workflow. */
    name: string;
}
/** Details of workflows and their transition rules to delete. */
interface WorkflowsWithTransitionRulesDetails {
    /** The list of workflows with transition rules to delete. */
    workflows: WorkflowTransitionRulesDetails[];
}
/** A workflow transition. */
interface WorkflowTransition {
    /** The transition ID. */
    id: number;
    /** The transition name. */
    name: string;
}
/** Details about a workflow configuration update request. */
interface WorkflowTransitionRulesDetails {
    /** Properties that identify a workflow. */
    workflowId: WorkflowId;
    /** The list of connect workflow rule IDs. */
    workflowRuleIds: string[];
}
/** Details about a workflow configuration update request. */
interface WorkflowTransitionRulesUpdate {
    /** The list of workflows with transition rules to update. */
    workflows: WorkflowTransitionRules[];
}
/**
 * Details of any errors encountered while updating workflow transition rules for
 * a workflow.
 */
interface WorkflowTransitionRulesUpdateErrorDetails {
    /**
     * A list of transition rule update errors, indexed by the transition rule ID. Any
     * transition rule that appears here wasn't updated.
     */
    ruleUpdateErrors: {
        /**
         * A list of transition rule update errors, indexed by the transition rule ID. Any
         * transition rule that appears here wasn't updated.
         */
        [key: string]: string[];
    };
    /**
     * The list of errors that specify why the workflow update failed. The workflow
     * was not updated if the list contains any entries.
     */
    updateErrors: string[];
    /** Properties that identify a workflow. */
    workflowId: WorkflowId;
}
/** Details of any errors encountered while updating workflow transition rules. */
interface WorkflowTransitionRulesUpdateErrors {
    /** A list of workflows. */
    updateResults: WorkflowTransitionRulesUpdateErrorDetails[];
}

/**
 * The approval configuration of a status within a workflow. Applies only to Jira
 * Service Management approvals.
 */
interface ApprovalConfiguration {
    /** Whether the approval configuration is active. */
    active: "true" | "false";
    /**
     * How the required approval count is calculated. It may be configured to require
     * a specific number of approvals, or approval by a percentage of approvers. If
     * the approvers source field is Approver groups, you can configure how many
     * approvals per group are required for the request to be approved. The number
     * will be the same across all groups.
     */
    conditionType: "number" | "percent" | "numberPerPrincipal";
    /**
     * The number or percentage of approvals required for a request to be approved. If
     * `conditionType` is `number`, the value must be 20 or less. If `conditionType`
     * is `percent`, the value must be 100 or less.
     */
    conditionValue: string;
    /** A list of roles that should be excluded as possible approvers. */
    exclude?: "assignee" | "reporter" | null;
    /** The custom field ID of the "Approvers" or "Approver Groups" field. */
    fieldId: string;
    /**
     * The custom field ID of the field used to pre-populate the Approver field. Only
     * supports the "Affected Services" field.
     */
    prePopulatedFieldId?: string | null;
    /** The numeric ID of the transition to be executed if the request is approved. */
    transitionApproved: string;
    /** The numeric ID of the transition to be executed if the request is declined. */
    transitionRejected: string;
}
/** The Connect provided ecosystem rules available. */
interface AvailableWorkflowConnectRule {
    /** The add-on providing the rule. */
    addonKey?: string;
    /** The URL creation path segment defined in the Connect module. */
    createUrl?: string;
    /** The rule description. */
    description?: string;
    /** The URL edit path segment defined in the Connect module. */
    editUrl?: string;
    /** The module providing the rule. */
    moduleKey?: string;
    /** The rule name. */
    name?: string;
    /** The rule key. */
    ruleKey?: string;
    /** The rule type. */
    ruleType?: "Condition" | "Validator" | "Function" | "Screen";
    /** The URL view path segment defined in the Connect module. */
    viewUrl?: string;
}
/** The Forge provided ecosystem rules available. */
interface AvailableWorkflowForgeRule {
    /** The rule description. */
    description?: string;
    /** The unique ARI of the forge rule type. */
    id?: string;
    /** The rule name. */
    name?: string;
    /** The rule key. */
    ruleKey?: string;
    /** The rule type. */
    ruleType?: "Condition" | "Validator" | "Function" | "Screen";
}
/** The Atlassian provided system rules available. */
interface AvailableWorkflowSystemRule {
    /** The rule description. */
    description: string;
    /** List of rules that conflict with this one. */
    incompatibleRuleKeys: string[];
    /** Whether the rule can be added added to an initial transition. */
    isAvailableForInitialTransition: boolean;
    /** Whether the rule is visible. */
    isVisible: boolean;
    /** The rule name. */
    name: string;
    /** The rule key. */
    ruleKey: string;
    /** The rule type. */
    ruleType: "Condition" | "Validator" | "Function" | "Screen";
}
/** The trigger rules available. */
interface AvailableWorkflowTriggers {
    /** The list of available trigger types. */
    availableTypes: AvailableWorkflowTriggerTypes[];
    /** The rule key of the rule. */
    ruleKey: string;
}
/** The list of available trigger types. */
interface AvailableWorkflowTriggerTypes {
    /** The description of the trigger rule. */
    description?: string;
    /** The name of the trigger rule. */
    name?: string;
    /** The type identifier of trigger rule. */
    type?: string;
}
/** The conditions group associated with the transition. */
interface ConditionGroupConfiguration {
    /** The nested conditions of the condition group. */
    conditionGroups?: (ConditionGroupConfiguration | null)[];
    /** The rules for this condition. */
    conditions?: (WorkflowRuleConfiguration | null)[];
    /**
     * Determines how the conditions in the group are evaluated. Accepts either `ANY`
     * or `ALL`. If `ANY` is used, at least one condition in the group must be true
     * for the group to evaluate to true. If `ALL` is used, all conditions in the
     * group must be true for the group to evaluate to true.
     */
    operation?: "ANY" | "ALL";
}
/** The conditions group associated with the transition. */
interface ConditionGroupUpdate {
    /** The nested conditions of the condition group. */
    conditionGroups?: (ConditionGroupUpdate | null)[];
    /** The rules for this condition. */
    conditions?: (WorkflowRuleConfiguration | null)[];
    /**
     * Determines how the conditions in the group are evaluated. Accepts either `ANY`
     * or `ALL`. If `ANY` is used, at least one condition in the group must be true
     * for the group to evaluate to true. If `ALL` is used, all conditions in the
     * group must be true for the group to evaluate to true.
     */
    operation: "ANY" | "ALL";
}
/** A workflow transition condition. */
interface CreateWorkflowCondition {
    /** The list of workflow conditions. */
    conditions?: CreateWorkflowCondition[];
    /** EXPERIMENTAL. The configuration of the transition rule. */
    configuration?: {
        /** EXPERIMENTAL. The configuration of the transition rule. */ [key: string]: unknown;
    };
    /** The compound condition operator. */
    operator?: "AND" | "OR";
    /** The type of the transition rule. */
    type?: string;
}
/** The details of a workflow. */
interface CreateWorkflowDetails {
    /** The description of the workflow. The maximum length is 1000 characters. */
    description?: string;
    /**
     * The name of the workflow. The name must be unique. The maximum length is 255
     * characters. Characters can be separated by a whitespace but the name cannot
     * start or end with a whitespace.
     */
    name: string;
    /**
     * The statuses of the workflow. Any status that does not include a transition is
     * added to the workflow without a transition.
     */
    statuses: CreateWorkflowStatusDetails[];
    /**
     * The transitions of the workflow. For the request to be valid, these transitions
     * must:
     *
     *  *  include one *initial* transition.
     *  *  not use the same name for a *global* and *directed* transition.
     *  *  have a unique name for each *global* transition.
     *  *  have a unique 'to' status for each *global* transition.
     *  *  have unique names for each transition from a status.
     *  *  not have a 'from' status on *initial* and *global* transitions.
     *  *  have a 'from' status on *directed* transitions.
     *
     * All the transition statuses must be included in `statuses`.
     */
    transitions: CreateWorkflowTransitionDetails[];
}
/** The details of a transition status. */
interface CreateWorkflowStatusDetails {
    /** The ID of the status. */
    id: string;
    /** The properties of the status. */
    properties?: {
        [key: string]: string;
    };
}
/** The details of a workflow transition. */
interface CreateWorkflowTransitionDetails {
    /** The description of the transition. The maximum length is 1000 characters. */
    description?: string;
    /** The statuses the transition can start from. */
    from?: string[];
    /** The name of the transition. The maximum length is 60 characters. */
    name: string;
    /** The properties of the transition. */
    properties?: {
        [key: string]: string;
    };
    /** The rules of the transition. */
    rules?: CreateWorkflowTransitionRulesDetails;
    /** The screen of the transition. */
    screen?: CreateWorkflowTransitionScreenDetails;
    /** The status the transition goes to. */
    to: string;
    /** The type of the transition. */
    type: "global" | "initial" | "directed";
}
/** A workflow transition rule. */
interface CreateWorkflowTransitionRule {
    /** EXPERIMENTAL. The configuration of the transition rule. */
    configuration?: {
        /** EXPERIMENTAL. The configuration of the transition rule. */ [key: string]: unknown;
    };
    /** The type of the transition rule. */
    type: string;
}
/** The details of a workflow transition rules. */
interface CreateWorkflowTransitionRulesDetails {
    /** The workflow conditions. */
    conditions?: CreateWorkflowCondition;
    /**
     * The workflow post functions.
     *
     * **Note:** The default post functions are always added to the *initial*
     * transition, as in:
     *
     *     "postFunctions": [
     *         {
     *             "type": "IssueCreateFunction"
     *         },
     *         {
     *             "type": "IssueReindexFunction"
     *         },
     *         {
     *             "type": "FireIssueEventFunction",
     *             "configuration": {
     *                 "event": {
     *                     "id": "1",
     *                     "name": "issue_created"
     *                 }
     *             }
     *         }
     *     ]
     *
     * **Note:** The default post functions are always added to the *global* and
     * *directed* transitions, as in:
     *
     *     "postFunctions": [
     *         {
     *             "type": "UpdateIssueStatusFunction"
     *         },
     *         {
     *             "type": "CreateCommentFunction"
     *         },
     *         {
     *             "type": "GenerateChangeHistoryFunction"
     *         },
     *         {
     *             "type": "IssueReindexFunction"
     *         },
     *         {
     *             "type": "FireIssueEventFunction",
     *             "configuration": {
     *                 "event": {
     *                     "id": "13",
     *                     "name": "issue_generic"
     *                 }
     *             }
     *         }
     *     ]
     */
    postFunctions?: CreateWorkflowTransitionRule[];
    /**
     * The workflow validators.
     *
     * **Note:** The default permission validator is always added to the *initial*
     * transition, as in:
     *
     *     "validators": [
     *         {
     *             "type": "PermissionValidator",
     *             "configuration": {
     *                 "permissionKey": "CREATE_ISSUES"
     *             }
     *         }
     *     ]
     */
    validators?: CreateWorkflowTransitionRule[];
}
/** The details of a transition screen. */
interface CreateWorkflowTransitionScreenDetails {
    /** The ID of the screen. */
    id: string;
}
interface DefaultWorkflowEditorResponse {
    value?: "NEW" | "LEGACY";
}
/** Details about a workflow. */
interface DeprecatedWorkflow {
    default?: boolean;
    /** The description of the workflow. */
    description?: string;
    /** The datetime the workflow was last modified. */
    lastModifiedDate?: string;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    lastModifiedUser?: string;
    /** The account ID of the user that last modified the workflow. */
    lastModifiedUserAccountId?: string;
    /** The name of the workflow. */
    name?: string;
    /** The scope where this workflow applies */
    scope?: Scope;
    /** The number of steps included in the workflow. */
    steps?: number;
}
/** Details of a workflow. */
interface JiraWorkflow {
    /** The creation date of the workflow. */
    created?: string | null;
    /** The description of the workflow. */
    description?: string;
    /** The ID of the workflow. */
    id?: string;
    /** Indicates if the workflow can be edited. */
    isEditable?: boolean;
    /** The starting point for the statuses in the workflow. */
    loopedTransitionContainerLayout?: WorkflowLayout | null;
    /** The name of the workflow. */
    name?: string;
    /** The scope of the workflow. */
    scope?: WorkflowScope;
    /** The starting point for the statuses in the workflow. */
    startPointLayout?: WorkflowLayout | null;
    /** The statuses referenced in this workflow. */
    statuses?: WorkflowReferenceStatus[];
    /**
     * If there is a current [asynchronous task](#async-operations) operation for this
     * workflow.
     */
    taskId?: string | null;
    /**
     * The transitions of the workflow. Note that a transition can have either the
     * deprecated `to`/`from` fields or the `toStatusReference`/`links` fields, but
     * never both nor a combination.
     */
    transitions?: WorkflowTransitions[];
    /** The last edited date of the workflow. */
    updated?: string | null;
    /**
     * Deprecated. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-2298)
     * for details.
     *
     * Use the optional `workflows.usages` expand to get additional information about
     * the projects and issue types associated with the requested workflows.
     */
    usages?: (ProjectIssueTypes | null)[] | null;
    /** The current version details of this workflow scheme. */
    version?: DocumentVersion;
}
/** Details of a status. */
interface JiraWorkflowStatus {
    /** The description of the status. */
    description?: string;
    /** The ID of the status. */
    id?: string;
    /** The name of the status. */
    name?: string;
    /** The scope of the workflow. */
    scope?: WorkflowScope;
    /** The category of the status. */
    statusCategory?: "TODO" | "IN_PROGRESS" | "DONE";
    /** The reference of the status. */
    statusReference?: string;
    /**
     * Deprecated. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-2298)
     * for details.
     *
     * The `statuses.usages` expand is an optional parameter that can be used when
     * reading and updating statuses in Jira. It provides additional information about
     * the projects and issue types associated with the requested statuses.
     */
    usages?: (ProjectIssueTypes | null)[] | null;
}
/** A page of items. */
interface PageBeanWorkflow {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Workflow[];
}
/** A project and issueType ID pair that identifies a status mapping. */
interface ProjectAndIssueTypePair {
    /** The ID of the issue type. */
    issueTypeId: string;
    /** The ID of the project. */
    projectId: string;
}
/** The project. */
interface ProjectUsage {
    /** The project ID. */
    id?: string;
}
/** Properties that identify a published workflow. */
interface PublishedWorkflowId {
    /** The entity ID of the workflow. */
    entityId?: string;
    /** The name of the workflow. */
    name: string;
}
/** The statuses associated with this workflow. */
interface StatusLayoutUpdate extends Record<string, unknown> {
    /**
     * The approval configuration of a status within a workflow. Applies only to Jira
     * Service Management approvals.
     */
    approvalConfiguration?: ApprovalConfiguration | null;
    /** The starting point for the statuses in the workflow. */
    layout?: WorkflowLayout | null;
    /** The properties for this status layout. */
    properties: {
        /** The properties for this status layout. */ [key: string]: string;
    };
    /** A unique ID which the status will use to refer to this layout configuration. */
    statusReference: string;
}
/** The mapping of old to new status ID for a specific project and issue type. */
interface StatusMappingDto extends Record<string, unknown> {
    /** The issue type for the status mapping. */
    issueTypeId: string;
    /** The project for the status mapping. */
    projectId: string;
    /**
     * The list of old and new status ID mappings for the specified project and issue
     * type.
     */
    statusMigrations: StatusMigration[];
}
/** The mapping of old to new status ID. */
interface StatusMigration extends Record<string, unknown> {
    /** The new status ID. */
    newStatusReference: string;
    /** The old status ID. */
    oldStatusReference: string;
}
/** Details of a workflow transition. */
interface Transition {
    /** The description of the transition. */
    description: string;
    /** The statuses the transition can start from. */
    from: string[];
    /** The ID of the transition. */
    id: string;
    /** The name of the transition. */
    name: string;
    /** The properties of the transition. */
    properties?: {
        /** The properties of the transition. */ [key: string]: unknown;
    };
    /** A collection of transition rules. */
    rules?: WorkflowRules;
    /** The details of a transition screen. */
    screen?: TransitionScreenDetails;
    /** The status the transition goes to. */
    to: string;
    /** The type of the transition. */
    type: "global" | "initial" | "directed";
}
/** The details of a transition screen. */
interface TransitionScreenDetails {
    /** The ID of the screen. */
    id: string;
    /** The name of the screen. */
    name?: string;
}
/** The transition update data. */
interface TransitionUpdateDto extends Record<string, unknown> {
    /** The post-functions of the transition. */
    actions?: (WorkflowRuleConfiguration | null)[];
    /** The conditions group associated with the transition. */
    conditions?: ConditionGroupUpdate | null;
    /** The custom event ID of the transition. */
    customIssueEventId?: string;
    /** The description of the transition. */
    description?: string;
    /** The ID of the transition. */
    id?: string;
    /**
     * The statuses the transition can start from, and the mapping of ports between
     * the statuses.
     */
    links?: (WorkflowTransitionLinks | null)[];
    /** The name of the transition. */
    name?: string;
    /** The properties of the transition. */
    properties?: {
        /** The properties of the transition. */ [key: string]: string;
    };
    /** The status the transition goes to. */
    toStatusReference?: string;
    /** The configuration of the rule. */
    transitionScreen?: WorkflowRuleConfiguration | null;
    /** The triggers of the transition. */
    triggers?: WorkflowTrigger[];
    /** The transition type. */
    type?: "INITIAL" | "GLOBAL" | "DIRECTED";
    /** The validators of the transition. */
    validators?: (WorkflowRuleConfiguration | null)[];
}
/**
 * The level of validation to return from the API. If no values are provided, the
 * default would return `WARNING` and `ERROR` level validation results.
 */
interface ValidationOptionsForCreate {
    levels?: ("WARNING" | "ERROR")[];
}
/**
 * The level of validation to return from the API. If no values are provided, the
 * default would return `WARNING` and `ERROR` level validation results.
 */
interface ValidationOptionsForUpdate {
    levels?: ("WARNING" | "ERROR")[];
}
/** Details about a workflow. */
interface Workflow {
    /** The creation date of the workflow. */
    created?: string;
    /** The description of the workflow. */
    description: string;
    /** Whether the workflow has a draft version. */
    hasDraftWorkflow?: boolean;
    /** Properties that identify a published workflow. */
    id: PublishedWorkflowId;
    /** Whether this is the default workflow. */
    isDefault?: boolean;
    /** Operations allowed on a workflow */
    operations?: WorkflowOperations;
    /** The projects the workflow is assigned to, through workflow schemes. */
    projects?: ProjectDetails[];
    /** The workflow schemes the workflow is assigned to. */
    schemes?: WorkflowSchemeIdName[];
    /** The statuses of the workflow. */
    statuses?: WorkflowStatus[];
    /** The transitions of the workflow. */
    transitions?: Transition[];
    /** The last edited date of the workflow. */
    updated?: string;
}
interface WorkflowCapabilities {
    /** The Connect provided ecosystem rules available. */
    connectRules?: AvailableWorkflowConnectRule[];
    /**
     * The scope of the workflow capabilities. `GLOBAL` for company-managed projects
     * and `PROJECT` for team-managed projects.
     */
    editorScope?: "PROJECT" | "GLOBAL";
    /** The Forge provided ecosystem rules available. */
    forgeRules?: AvailableWorkflowForgeRule[];
    /** The types of projects that this capability set is available for. */
    projectTypes?: ("software" | "service_desk" | "product_discovery" | "business" | "unknown")[];
    /** The Atlassian provided system rules available. */
    systemRules?: AvailableWorkflowSystemRule[];
    /** The trigger rules available. */
    triggerRules?: AvailableWorkflowTriggers[];
}
/**
 * A compound workflow transition rule condition. This object returns `nodeType`
 * as `compound`.
 */
interface WorkflowCompoundCondition {
    /** The list of workflow conditions. */
    conditions: WorkflowCondition[];
    nodeType: string;
    /** The compound condition operator. */
    operator: "AND" | "OR";
}
/** The workflow transition rule conditions tree. */
type WorkflowCondition = WorkflowSimpleCondition | WorkflowCompoundCondition;
/** The details of the workflows to create. */
interface WorkflowCreate {
    /** The description of the workflow to create. */
    description?: string;
    /** The starting point for the statuses in the workflow. */
    loopedTransitionContainerLayout?: WorkflowLayout | null;
    /** The name of the workflow to create. */
    name: string;
    /** The starting point for the statuses in the workflow. */
    startPointLayout?: WorkflowLayout | null;
    /** The statuses associated with this workflow. */
    statuses: StatusLayoutUpdate[];
    /** The transitions of this workflow. */
    transitions: TransitionUpdateDto[];
}
/** The create workflows payload. */
interface WorkflowCreateRequest {
    /** The scope of the workflow. */
    scope?: WorkflowScope;
    /** The statuses to associate with the workflows. */
    statuses?: WorkflowStatusUpdate[];
    /** The details of the workflows to create. */
    workflows?: WorkflowCreate[];
}
/** Details of the created workflows and statuses. */
interface WorkflowCreateResponse {
    /** List of created statuses. */
    statuses?: JiraWorkflowStatus[];
    /** List of created workflows. */
    workflows?: JiraWorkflow[];
}
interface WorkflowCreateValidateRequest {
    /** The create workflows payload. */
    payload: WorkflowCreateRequest;
    /**
     * The level of validation to return from the API. If no values are provided, the
     * default would return `WARNING` and `ERROR` level validation results.
     */
    validationOptions?: ValidationOptionsForCreate;
}
/**
 * A reference to the location of the error. This will be null if the error does
 * not refer to a specific element.
 */
interface WorkflowElementReference {
    /** A property key. */
    propertyKey?: string;
    /** A rule ID. */
    ruleId?: string;
    /** A project and issueType ID pair that identifies a status mapping. */
    statusMappingReference?: ProjectAndIssueTypePair;
    /** A status reference. */
    statusReference?: string;
    /** A transition ID. */
    transitionId?: string;
}
/** The classic workflow identifiers. */
interface WorkflowIds {
    /** The entity ID of the workflow. */
    entityId?: string;
    /** The name of the workflow. */
    name: string;
}
/** The starting point for the statuses in the workflow. */
interface WorkflowLayout {
    /** The x axis location. */
    x?: number;
    /** The y axis location. */
    y?: number;
}
/** Operations allowed on a workflow */
interface WorkflowOperations {
    /** Whether the workflow can be deleted. */
    canDelete: boolean;
    /** Whether the workflow can be updated. */
    canEdit: boolean;
}
/** The issue type. */
interface WorkflowProjectIssueTypeUsage {
    /** The ID of the issue type. */
    id?: string;
}
/** Issue types associated with the workflow for a project. */
interface WorkflowProjectIssueTypeUsageDto {
    /** A page of issue types. */
    issueTypes?: WorkflowProjectIssueTypeUsagePage;
    /** The ID of the project. */
    projectId?: string;
    /** The ID of the workflow. */
    workflowId?: string;
}
/** A page of issue types. */
interface WorkflowProjectIssueTypeUsagePage {
    /** Token for the next page of issue type usages. */
    nextPageToken?: string;
    /** The list of issue types. */
    values?: WorkflowProjectIssueTypeUsage[];
}
/** Projects using the workflow. */
interface WorkflowProjectUsageDto {
    /** A page of projects. */
    projects?: ProjectUsagePage;
    /** The workflow ID. */
    workflowId?: string;
}
interface WorkflowReadRequest {
    /** The list of projects and issue types to query. */
    projectAndIssueTypes?: ProjectAndIssueTypePair[];
    /** The list of workflow IDs to query. */
    workflowIds?: string[];
    /** The list of workflow names to query. */
    workflowNames?: string[];
}
/** Details of workflows and related statuses. */
interface WorkflowReadResponse {
    /** List of statuses. */
    statuses?: JiraWorkflowStatus[];
    /** List of workflows. */
    workflows?: JiraWorkflow[];
}
/** The statuses referenced in the workflow. */
interface WorkflowReferenceStatus {
    /**
     * The approval configuration of a status within a workflow. Applies only to Jira
     * Service Management approvals.
     */
    approvalConfiguration?: ApprovalConfiguration | null;
    /** Indicates if the status is deprecated. */
    deprecated?: boolean;
    /** The x and y location of the status in the workflow. */
    layout?: WorkflowStatusLayout | null;
    /** The properties associated with the status. */
    properties?: {
        /** The properties associated with the status. */ [key: string]: string;
    };
    /** The reference of the status. */
    statusReference?: string;
}
/** The configuration of the rule. */
interface WorkflowRuleConfiguration {
    /** The ID of the rule. */
    id?: string | null;
    /** The parameters related to the rule. */
    parameters?: {
        /** The parameters related to the rule. */ [key: string]: string;
    };
    /** The rule key of the rule. */
    ruleKey: string;
}
/** A collection of transition rules. */
interface WorkflowRules {
    /** The workflow transition rule conditions tree. */
    conditionsTree?: WorkflowCondition;
    /** The workflow post functions. */
    postFunctions?: WorkflowTransitionRule[];
    /** The workflow validators. */
    validators?: WorkflowTransitionRule[];
}
/** The ID and the name of the workflow scheme. */
interface WorkflowSchemeIdName {
    /** The ID of the workflow scheme. */
    id: string;
    /** The name of the workflow scheme. */
    name: string;
}
/** The worflow scheme. */
interface WorkflowSchemeUsage {
    /** The workflow scheme ID. */
    id?: string;
}
/** Workflow schemes using the workflow. */
interface WorkflowSchemeUsageDto {
    /** The workflow ID. */
    workflowId?: string;
    /** A page of workflow schemes. */
    workflowSchemes?: WorkflowSchemeUsagePage;
}
/** A page of workflow schemes. */
interface WorkflowSchemeUsagePage {
    /** Token for the next page of issue type usages. */
    nextPageToken?: string;
    /** The list of workflow schemes. */
    values?: WorkflowSchemeUsage[];
}
/** Page of items, including workflows and related statuses. */
interface WorkflowSearchResponse {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** List of statuses. */
    statuses?: JiraWorkflowStatus[];
    /** The number of items returned. */
    total?: number;
    /** List of workflows. */
    values?: JiraWorkflow[];
}
/**
 * A workflow transition rule condition. This object returns `nodeType` as
 * `simple`.
 */
interface WorkflowSimpleCondition {
    /** EXPERIMENTAL. The configuration of the transition rule. */
    configuration?: {
        [key: string]: unknown;
    };
    nodeType: string;
    /** The type of the transition rule. */
    type: string;
}
/** Details of a workflow status. */
interface WorkflowStatus {
    /** The ID of the issue status. */
    id: string;
    /** The name of the status in the workflow. */
    name: string;
    /**
     * Additional properties that modify the behavior of issues in this status.
     * Supports the properties `jira.issue.editable` and `issueEditable` (deprecated)
     * that indicate whether issues are editable.
     */
    properties?: {
        /**
         * Additional properties that modify the behavior of issues in this status.
         * Supports the properties <code>jira.issue.editable</code> and
         * <code>issueEditable</code> (deprecated) that indicate whether issues are
         * editable.
         */
        [key: string]: unknown;
    };
}
/** The x and y location of the status in the workflow. */
interface WorkflowStatusLayout {
    /** The x axis location. */
    x?: number | null;
    /** The y axis location. */
    y?: number | null;
}
/** Details of the status being updated. */
interface WorkflowStatusUpdate extends Record<string, unknown> {
    /** The description of the status. */
    description?: string;
    /** The ID of the status. */
    id?: string;
    /** The name of the status. */
    name: string;
    /** The category of the status. */
    statusCategory: "TODO" | "IN_PROGRESS" | "DONE";
    /** The reference of the status. */
    statusReference: string;
}
/**
 * The statuses the transition can start from, and the mapping of ports between
 * the statuses.
 */
interface WorkflowTransitionLinks {
    /** The port that the transition starts from. */
    fromPort?: number | null;
    /** The status that the transition starts from. */
    fromStatusReference?: string | null;
    /** The port that the transition goes to. */
    toPort?: number | null;
}
/** A workflow transition rule. */
interface WorkflowTransitionRule {
    /** EXPERIMENTAL. The configuration of the transition rule. */
    configuration?: unknown;
    /** The type of the transition rule. */
    type: string;
}
/** The transitions of the workflow. */
interface WorkflowTransitions {
    /** The post-functions of the transition. */
    actions?: (WorkflowRuleConfiguration | null)[];
    /** The conditions group associated with the transition. */
    conditions?: ConditionGroupConfiguration | null;
    /** The custom event ID of the transition. */
    customIssueEventId?: string | null;
    /** The description of the transition. */
    description?: string;
    /** The ID of the transition. */
    id?: string;
    /**
     * The statuses the transition can start from, and the mapping of ports between
     * the statuses.
     */
    links?: (WorkflowTransitionLinks | null)[];
    /** The name of the transition. */
    name?: string;
    /** The properties of the transition. */
    properties?: {
        /** The properties of the transition. */ [key: string]: string;
    };
    /** The status the transition goes to. */
    toStatusReference?: string;
    /** The configuration of the rule. */
    transitionScreen?: WorkflowRuleConfiguration | null;
    /** The triggers of the transition. */
    triggers?: WorkflowTrigger[];
    /** The transition type. */
    type?: "INITIAL" | "GLOBAL" | "DIRECTED";
    /** The validators of the transition. */
    validators?: (WorkflowRuleConfiguration | null)[];
}
/** The trigger configuration associated with a workflow. */
interface WorkflowTrigger {
    /** The ID of the trigger. */
    id?: string;
    /** The parameters of the trigger. */
    parameters: {
        /** The parameters of the trigger. */ [key: string]: string;
    };
    /** The rule key of the trigger. */
    ruleKey: string;
}
/** The details of the workflows to update. */
interface WorkflowUpdate extends Record<string, unknown> {
    /** The mapping of old to new status ID. */
    defaultStatusMappings?: StatusMigration[];
    /** The new description for this workflow. */
    description?: string;
    /** The ID of this workflow. */
    id: string;
    /** The starting point for the statuses in the workflow. */
    loopedTransitionContainerLayout?: WorkflowLayout | null;
    /** The starting point for the statuses in the workflow. */
    startPointLayout?: WorkflowLayout | null;
    /** The mapping of old to new status ID for a specific project and issue type. */
    statusMappings?: StatusMappingDto[];
    /** The statuses associated with this workflow. */
    statuses: StatusLayoutUpdate[];
    /** The transitions of this workflow. */
    transitions: TransitionUpdateDto[];
    /** The current version details of this workflow scheme. */
    version: DocumentVersion;
}
/** The update workflows payload. */
interface WorkflowUpdateRequest {
    /** The statuses to associate with the workflows. */
    statuses?: WorkflowStatusUpdate[];
    /** The details of the workflows to update. */
    workflows?: WorkflowUpdate[];
}
interface WorkflowUpdateResponse {
    /** List of updated statuses. */
    statuses?: JiraWorkflowStatus[];
    /**
     * If there is a [asynchronous task](#async-operations) operation, as a result of
     * this update.
     */
    taskId?: string | null;
    /** List of updated workflows. */
    workflows?: JiraWorkflow[];
}
interface WorkflowUpdateValidateRequestBean {
    /** The update workflows payload. */
    payload: WorkflowUpdateRequest;
    /**
     * The level of validation to return from the API. If no values are provided, the
     * default would return `WARNING` and `ERROR` level validation results.
     */
    validationOptions?: ValidationOptionsForUpdate;
}
/** The details about a workflow validation error. */
interface WorkflowValidationError {
    /** An error code. */
    code?: string;
    /**
     * A reference to the location of the error. This will be null if the error does
     * not refer to a specific element.
     */
    elementReference?: WorkflowElementReference;
    /** The validation error level. */
    level?: "WARNING" | "ERROR";
    /** An error message. */
    message?: string;
    /** The type of element the error or warning references. */
    type?: "RULE" | "STATUS" | "STATUS_LAYOUT" | "STATUS_PROPERTY" | "WORKFLOW" | "TRANSITION" | "TRANSITION_PROPERTY" | "SCOPE" | "STATUS_MAPPING" | "TRIGGER";
}
interface WorkflowValidationErrorList {
    /** The list of validation errors. */
    errors?: WorkflowValidationError[];
}

/** Details of an Assets workspace ID. */
interface AssetsWorkspaceDto {
    /** The workspace ID used as the identifier to access the Assets REST API. */
    workspaceId?: string;
}
interface I18nErrorMessage {
    i18nKey?: string;
    parameters?: string[];
}
/** Details of an insight workspace ID. */
interface InsightWorkspaceDto {
    /** The workspace ID used as the identifier to access the Insight REST API. */
    workspaceId?: string;
}
interface PagedDtoAssetsWorkspaceDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: AssetsWorkspaceDto[];
}
interface PagedDtoInsightWorkspaceDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: InsightWorkspaceDto[];
}

interface CustomerCreateDto {
    /** Customer's name for display in the UI. */
    displayName?: string;
    /** Customer's email address. */
    email?: string;
    /** Deprecated, please use 'displayName'. */
    fullName?: string;
}
/** URLs for the customer record and related items. */
interface UserLinkDto {
    /**
     * Links to the various sizes of the customer's avatar. Note that this property is
     * deprecated, and will be removed in future versions.
     */
    avatarUrls?: {
        [key: string]: string;
    };
    /** REST API URL for the customer. */
    jiraRest?: string;
    self?: string;
}

interface ArticleDto {
    content?: ContentDto;
    /** Excerpt of the article which matches the given query string. */
    excerpt?: string;
    /** Source of the article. */
    source?: SourceDto;
    /** Title of the article. */
    title?: string;
}
interface ContentDto {
    /**
     * Url containing the body of the article (without title), suitable for rendering
     * in an iframe
     */
    iframeSrc?: string;
}
/** Source of the article. */
interface SourceDto extends Record<string, unknown> {
    /** Type of the knowledge base source */
    type?: "confluence";
}

/** Additional content of the comment */
interface AdditionalCommentDto {
    /** Content of the comment. */
    body?: string;
}
interface ApprovalDecisionRequestDto {
    /** Response to the approval request. */
    decision?: "approve" | "decline";
}
interface ApprovalDto {
    /** The REST API URL of the approval. */
    _links?: SelfLinkDto;
    /** Detailed list of the users who must provide a response to the approval. */
    approvers?: ApproverDto[];
    /**
     * Indicates whether the user making the request is one of the approvers and can
     * respond to the approval (true) or not (false).
     */
    canAnswerApproval?: boolean;
    /** Date the approval was completed. */
    completedDate?: DateDto;
    /** Date the approval was created. */
    createdDate?: DateDto;
    /** Outcome of the approval, based on the approvals provided by all approvers. */
    finalDecision?: "approved" | "declined" | "pending";
    /** ID of the approval. */
    id?: string;
    /** Description of the approval being sought or provided. */
    name?: string;
}
interface ApproverDto {
    /** Details of the User who is providing approval. */
    approver?: UserDto;
    /** Decision made by the approver. */
    approverDecision?: "approved" | "declined" | "pending";
}
interface AttachmentCreateDto {
    /** Additional content of the comment */
    additionalComment?: AdditionalCommentDto;
    /** Controls whether the comment and its attachments are visible to customers */
    public?: boolean;
    /** List of IDs for the temporary attachments to be added to the customer request. */
    temporaryAttachmentIds?: string[];
}
interface AttachmentCreateResultDto {
    /** List of the attachments added. */
    attachments?: PagedDtoAttachmentDto;
    /** Details of the comment included with the attachments. */
    comment?: CommentDto;
}
interface AttachmentDto {
    /** Various URLs for the attachment. */
    _links?: AttachmentLinkDto;
    /** Details of the user who attached the file. */
    author?: UserDto;
    /** Date the attachment was added. */
    created?: DateDto;
    /** Filename of the item attached. */
    filename?: string;
    /** MIME type of the attachment. */
    mimeType?: string;
    /** Size of the attachment in bytes. */
    size?: number;
}
/** Various URLs for the attachment. */
interface AttachmentLinkDto {
    /** URL for the attachment. */
    content?: string;
    /** REST API URL for the attachment */
    jiraRest?: string;
    self?: string;
    /** URL for the attachment's thumbnail image. */
    thumbnail?: string;
}
interface CommentCreateDto {
    /** Content of the comment. */
    body?: string;
    /** Indicates whether the comment is public (true) or private/internal (false). */
    public?: boolean;
}
interface CommentDto {
    /**
     * List of items that can be expanded in the response by specifying the expand
     * query parameter.
     */
    _expands?: string[];
    /** REST API URL link to the comment. */
    _links?: SelfLinkDto;
    /** List of the attachments included in the comment. */
    attachments?: PagedDtoAttachmentDto;
    /** Details of the customer who authored the comment. */
    author?: UserDto;
    /** Content of the comment. */
    body?: string;
    /** Date the comment was created. */
    created?: DateDto;
    /** ID of the comment. */
    id?: string;
    /** Indicates whether the comment is public (true) or private/internal (false). */
    public?: boolean;
    /** The rendered body of the comment. */
    renderedBody?: RenderedValueDto;
}
interface CsatFeedbackFullDto {
    /** (Optional) The comment provided with this feedback. */
    comment?: AdditionalCommentDto;
    /**
     * A numeric representation of the rating, this must be an integer value between 1
     * and 5.
     */
    rating?: number;
    /** Indicates the type of feedback, supported values: `csat`. */
    type?: string;
}
/** Action of removing participants from a request. */
interface CustomerRequestActionDto {
    /** Indicates whether the user can undertake the action (true) or not (false). */
    allowed?: boolean;
}
/** List of actions that the user can take on the request. */
interface CustomerRequestActionsDto {
    /** Action of adding attachments to a request. */
    addAttachment?: CustomerRequestActionDto;
    /** Action of adding comments to a request. */
    addComment?: CustomerRequestActionDto;
    /** Action of adding participants to a request. */
    addParticipant?: CustomerRequestActionDto;
    /** Action of removing participants from a request. */
    removeParticipant?: CustomerRequestActionDto;
}
interface CustomerRequestDto {
    /**
     * List of items that can be expanded in the response by specifying the expand
     * query parameter.
     */
    _expands?: string[];
    /** List of links associated with the request. */
    _links?: CustomerRequestLinkDto;
    /** List of actions that the user can take on the request. */
    actions?: CustomerRequestActionsDto;
    /** List of attachments included with the request. */
    attachments?: PagedDtoAttachmentDto;
    /** List of comments included with the request. */
    comments?: PagedDtoCommentDto;
    /** Date on which the request was created. */
    createdDate?: DateDto;
    /** Status of the request. */
    currentStatus?: CustomerRequestStatusDto;
    /** ID of the request, as the peer issue ID. */
    issueId?: string;
    /** Key of the request, as the peer issue key. */
    issueKey?: string;
    /** Expandable details of the customers participating in the request. */
    participants?: PagedDtoUserDto;
    /** Details of the customer reporting the request. */
    reporter?: UserDto;
    /**
     * JSON map of Jira field IDs and their values representing the content of the
     * request. This list does not include hidden fields.
     */
    requestFieldValues?: CustomerRequestFieldValueDto[];
    /** Expandable details of the request type. */
    requestType?: RequestTypeDto;
    /** ID of the request type for the request. */
    requestTypeId?: string;
    /** Expandable details of the service desk. */
    serviceDesk?: ServiceDeskDto;
    /** ID of the service desk the request belongs to. */
    serviceDeskId?: string;
    /** Expandable details of the SLAs relating to the request. */
    sla?: PagedDtoSlaInformationDto;
    /** Expandable details of the request's status history. */
    status?: PagedDtoCustomerRequestStatusDto;
    /** Summary of the request created */
    summary?: string;
}
interface CustomerRequestFieldValueDto {
    /** ID of the field. */
    fieldId?: string;
    /** Text label for the field. */
    label?: string;
    /** Value of the field rendered in the UI. */
    renderedValue?: {
        [key: string]: unknown;
    };
    /** Value of the field. */
    value?: unknown;
}
/** List of links associated with the request. */
interface CustomerRequestLinkDto {
    /** Jira agent view URL for the request. */
    agent?: string;
    /** REST API URL for the request. */
    jiraRest?: string;
    self?: string;
    /** Web URL for the request. */
    web?: string;
}
/** Status of the request. */
interface CustomerRequestStatusDto {
    /** Name of the status condition. */
    status?: string;
    /** Status category the status belongs to. */
    statusCategory?: "UNDEFINED" | "NEW" | "INDETERMINATE" | "DONE";
    /** Date on which the status was attained. */
    statusDate?: DateDto;
}
interface CustomerTransitionDto {
    /** ID of the transition. */
    id?: string;
    /** Name of the transition. */
    name?: string;
}
interface CustomerTransitionExecutionDto {
    /** Comment explaining the reason for the transition. */
    additionalComment?: AdditionalCommentDto;
    /** ID of the transition to be performed. */
    id?: string;
}
/** Duration remaining after the service was completed. */
interface DurationDto {
    /** Duration in a user-friendly text format. */
    friendly?: string;
    /** Duration in milliseconds. */
    millis?: number;
}
/**
 * Provides answers to the form associated with a request type that is attached to
 * the request on creation. Jira fields should be omitted from
 * `requestFieldValues` if they are linked to form answers. Form answers in ADF
 * format should have `isAdfRequest` set to true. Form answers are not currently
 * validated.
 */
interface Form extends Record<string, unknown> {
    /**
     * JSON mapping of form field answers containing form field IDs and corresponding
     * values.
     */
    answers?: {
        [key: string]: FormAnswer;
    };
}
interface FormAnswer {
    /** Answer in Atlassian Document Format (ADF) */
    adf?: JsonNode;
    /** IDs of selected choices */
    choices?: string[];
    /** Answer in date format (yyyy-MM-dd) */
    date?: string;
    /**
     * The IDs of files to be attached to the form that are obtained by calling the
     * ‘attach temporary file’ endpoint on the corresponding service desk.
     */
    files?: string[];
    /** Answer in free text format */
    text?: string;
    /** Answer in timestamp format (HH:mm) */
    time?: string;
    /** IDs of selected users */
    users?: string[];
}
interface PagedDtoApprovalDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: ApprovalDto[];
}
/** List of attachments included with the request. */
interface PagedDtoAttachmentDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: AttachmentDto[];
}
/** List of comments included with the request. */
interface PagedDtoCommentDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: CommentDto[];
}
interface PagedDtoCustomerRequestDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: CustomerRequestDto[];
}
/** Expandable details of the request's status history. */
interface PagedDtoCustomerRequestStatusDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: CustomerRequestStatusDto[];
}
interface PagedDtoCustomerTransitionDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: CustomerTransitionDto[];
}
/** Expandable details of the SLAs relating to the request. */
interface PagedDtoSlaInformationDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: SlaInformationDto[];
}
/** The rendered body of the comment. */
interface RenderedValueDto {
    html?: string;
}
interface RequestCreateDto {
    /** (Experimental) Shows extra information for the request channel. */
    channel?: string;
    /**
     * Provides answers to the form associated with a request type that is attached to
     * the request on creation. Jira fields should be omitted from
     * `requestFieldValues` if they are linked to form answers. Form answers in ADF
     * format should have `isAdfRequest` set to true. Form answers are not currently
     * validated.
     */
    form?: Form;
    /**
     * (Experimental) Whether to accept rich text fields in Atlassian Document Format
     * (ADF).
     */
    isAdfRequest?: boolean;
    /** The `accountId` of the customer that the request is being raised on behalf of. */
    raiseOnBehalfOf?: string;
    /**
     * JSON map of Jira field IDs and their values representing the content of the
     * request.
     */
    requestFieldValues?: {
        [key: string]: unknown;
    };
    /**
     * List of customers to participate in the request, as a list of `accountId`
     * values.
     */
    requestParticipants?: string[];
    /** ID of the request type for the request. */
    requestTypeId?: string;
    /** ID of the service desk in which to create the request. */
    serviceDeskId?: string;
}
interface RequestNotificationSubscriptionDto {
    /**
     * Indicates whether the user is subscribed (true) or not (false) to the request's
     * notifications.
     */
    subscribed?: boolean;
}
interface RequestParticipantUpdateDto {
    /**
     * List of users, specified by account IDs, to add to or remove as participants in
     * the request.
     */
    accountIds?: string[];
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details. Use `accountIds` instead.
     */
    usernames?: string[];
}
interface RequestTypeFieldDto {
    /** List of default values for the field. */
    defaultValues?: RequestTypeFieldValueDto[];
    /** Description of the field. */
    description?: string;
    /** ID of the field. */
    fieldId?: string;
    /** Jira specific implementation details for the field in the UI. */
    jiraSchema?: JsonTypeBean;
    /** Name of the field. */
    name?: string;
    /** List of preset values for the field. */
    presetValues?: string[];
    /** Indicates if the field is required (true) or not (false). */
    required?: boolean;
    /** List of valid values for the field. */
    validValues?: RequestTypeFieldValueDto[];
    visible?: boolean;
}
interface RequestTypeFieldValueDto {
    /** List of child fields. */
    children?: RequestTypeFieldValueDto[];
    /** Label for the field. */
    label?: string;
    /** Value of the field. */
    value?: string;
}
/** Links to the request type's icons. */
interface RequestTypeIconDto {
    /** Map of the URLs for the request type icons. */
    _links?: RequestTypeIconLinkDto;
    /** ID of the request type icon. */
    id?: string;
}
/** Map of the URLs for the request type icons. */
interface RequestTypeIconLinkDto {
    /** URLs for the request type icons. */
    iconUrls?: {
        [key: string]: string;
    };
}
interface SlaInformationCompletedCycleDto {
    /**
     * Time and date at which the SLA cycle breached in case of completed breached
     * cycle or would have breached in case of non-breached completed cycle.
     */
    breachTime?: DateDto;
    /** Indicates if the SLA (duration) was exceeded (true) or not (false). */
    breached?: boolean;
    /** Duration in which the service was completed. */
    elapsedTime?: DurationDto;
    /** Duration within which the service should have been completed. */
    goalDuration?: DurationDto;
    /** Duration remaining after the service was completed. */
    remainingTime?: DurationDto;
    /** Time and date at which the SLA cycle started. */
    startTime?: DateDto;
    /** Time and date at which the SLA cycle completed. */
    stopTime?: DateDto;
}
interface SlaInformationDto {
    /** REST API URL for the SLA. */
    _links?: SelfLinkDto;
    /** List of completed cycles for the SLA. */
    completedCycles?: SlaInformationCompletedCycleDto[];
    /** ID of the Service Level Agreement (SLA). */
    id?: string;
    /** Description of the SLA. */
    name?: string;
    /** Details of the active cycle for the SLA. */
    ongoingCycle?: SlaInformationOngoingCycleDto;
    /** Format in which SLA is to be displayed in the UI */
    slaDisplayFormat?: string;
}
/** Details of the active cycle for the SLA. */
interface SlaInformationOngoingCycleDto {
    /** Time and date at which the SLA cycle would have breached its limit. */
    breachTime?: DateDto;
    /** Indicates whether the SLA has been breached (true) or not (false). */
    breached?: boolean;
    /** Duration of the service. */
    elapsedTime?: DurationDto;
    /** Duration within which the service should be completed. */
    goalDuration?: DurationDto;
    /** Indicates whether the SLA is paused (true) or not (false). */
    paused?: boolean;
    /** Duration remaining in which to complete the service. */
    remainingTime?: DurationDto;
    /** Time and date at which the SLA cycle started. */
    startTime?: DateDto;
    /**
     * Indicates whether the SLA it timed during calendared working hours only (true)
     * or not (false).
     */
    withinCalendarHours?: boolean;
}

/** Details of an application role. */
interface ApplicationRole {
    /**
     * The groups that are granted default access for this application role. As a
     * group's name can change, use of `defaultGroupsDetails` is recommended to
     * identify a groups.
     */
    defaultGroups?: string[];
    /** The groups that are granted default access for this application role. */
    defaultGroupsDetails?: GroupName[];
    /** Deprecated. */
    defined?: boolean;
    /** The groups associated with the application role. */
    groupDetails?: GroupName[];
    /**
     * The groups associated with the application role. As a group's name can change,
     * use of `groupDetails` is recommended to identify a groups.
     */
    groups?: string[];
    hasUnlimitedSeats?: boolean;
    /** The key of the application role. */
    key?: string;
    /** The display name of the application role. */
    name?: string;
    /** The maximum count of users on your license. */
    numberOfSeats?: number;
    /** Indicates if the application role belongs to Jira platform (`jira-core`). */
    platform?: boolean;
    /** The count of users remaining on your license. */
    remainingSeats?: number;
    /**
     * Determines whether this application role should be selected by default on user
     * creation.
     */
    selectedByDefault?: boolean;
    /** The number of users counting against your license. */
    userCount?: number;
    /**
     * The [type of users](https://confluence.atlassian.com/x/lRW3Ng) being counted
     * against your license.
     */
    userCountDescription?: string;
}
/** Details of an avatar. */
interface Avatar extends Record<string, unknown> {
    /** The file name of the avatar icon. Returned for system avatars. */
    fileName?: string;
    /** The ID of the avatar. */
    id: string;
    /** Whether the avatar can be deleted. */
    isDeletable?: boolean;
    /** Whether the avatar is used in Jira. For example, shown as a project's avatar. */
    isSelected?: boolean;
    /** Whether the avatar is a system avatar. */
    isSystemAvatar?: boolean;
    /**
     * The owner of the avatar. For a system avatar the owner is null (and nothing is
     * returned). For non-system avatars this is the appropriate identifier, such as
     * the ID for a project or the account ID for a user.
     */
    owner?: string;
    /** The list of avatar icon URLs. */
    urls?: {
        [key: string]: string;
    };
}
/** The avatars of the user. */
interface AvatarUrlsBean {
    /** The URL of the item's 16x16 pixel avatar. */
    "16x16"?: string;
    /** The URL of the item's 24x24 pixel avatar. */
    "24x24"?: string;
    /** The URL of the item's 32x32 pixel avatar. */
    "32x32"?: string;
    /** The URL of the item's 48x48 pixel avatar. */
    "48x48"?: string;
}
/** Details of an issue navigator column item. */
interface ColumnItem {
    /** The issue navigator column label. */
    label?: string;
    /** The issue navigator column value. */
    value?: string;
}
interface ColumnRequestBody {
    columns?: string[];
}
/** A comment. */
interface Comment extends Record<string, unknown> {
    /** The ID of the user who created the comment. */
    author?: UserDetails;
    /**
     * The comment text in [Atlassian Document
     * Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure/).
     */
    body?: unknown;
    /** The date and time at which the comment was created. */
    created?: string;
    /** The ID of the comment. */
    id?: string;
    /**
     * Whether the comment was added from an email sent by a person who is not part of
     * the issue. See [Allow external emails to be added as comments on
     * issues](https://support.atlassian.com/jira-service-management-cloud/docs/allow-external-emails-to-be-added-as-comments-on-issues/)for
     * information on setting up this feature.
     */
    jsdAuthorCanSeeRequest?: boolean;
    /**
     * Whether the comment is visible in Jira Service Desk. Defaults to true when
     * comments are created in the Jira Cloud Platform. This includes when the site
     * doesn't use Jira Service Desk or the project isn't a Jira Service Desk project
     * and, therefore, there is no Jira Service Desk for the issue to be visible on.
     * To create a comment with its visibility in Jira Service Desk set to false, use
     * the Jira Service Desk REST API [Create request
     * comment](https://developer.atlassian.com/cloud/jira/service-desk/rest/#api-rest-servicedeskapi-request-issueIdOrKey-comment-post)
     * operation.
     */
    jsdPublic?: boolean;
    /** A list of comment properties. Optional on create and update. */
    properties?: EntityProperty[];
    /** The rendered version of the comment. */
    renderedBody?: string;
    /** The URL of the comment. */
    self?: string;
    /** The ID of the user who updated the comment last. */
    updateAuthor?: UserDetails;
    /** The date and time at which the comment was updated last. */
    updated?: string;
    /**
     * The group or role to which this comment is visible. Optional on create and
     * update.
     */
    visibility?: Visibility;
}
/** Details about the default workflow. */
interface DefaultWorkflow {
    /**
     * Whether a draft workflow scheme is created or updated when updating an active
     * workflow scheme. The draft is updated with the new default workflow. Defaults
     * to `false`.
     */
    updateDraftIfNeeded?: boolean;
    /** The name of the workflow to set as the default workflow. */
    workflow: string;
}
/** The current version details of this workflow scheme. */
interface DocumentVersion {
    /** The version UUID. */
    id?: string;
    /** The version number. */
    versionNumber?: number;
}
/** Error messages from an operation. */
interface ErrorCollection {
    /**
     * The list of error messages produced by this operation. For example, "input
     * parameter 'key' must be provided"
     */
    errorMessages?: string[];
    /**
     * The list of errors by parameter returned by the operation. For
     * example,"projectKey": "Project keys must start with an uppercase letter,
     * followed by one or more uppercase alphanumeric characters."
     */
    errors?: {
        [key: string]: string;
    };
    status?: number;
}
interface ErrorMessage {
    message?: string;
}
/** Details about a field. */
interface FieldDetails {
    /**
     * The names that can be used to reference the field in an advanced search. For
     * more information, see [Advanced searching - fields
     * reference](https://confluence.atlassian.com/x/gwORLQ).
     */
    clauseNames?: string[];
    /** Whether the field is a custom field. */
    custom?: boolean;
    /** The ID of the field. */
    id?: string;
    /** The key of the field. */
    key?: string;
    /** The name of the field. */
    name?: string;
    /** Whether the field can be used as a column on the issue navigator. */
    navigable?: boolean;
    /** Whether the content of the field can be used to order lists. */
    orderable?: boolean;
    /** The data schema for the field. */
    schema?: JsonTypeBean;
    /** The scope of the field. */
    scope?: Scope;
    /** Whether the content of the field can be searched. */
    searchable?: boolean;
}
/**
 * The list of groups found in a search, including header text (Showing X of Y
 * matching groups) and total of matched groups.
 */
interface FoundGroups {
    groups?: FoundGroup[];
    /**
     * Header text indicating the number of groups in the response and the total
     * number of groups found in the search.
     */
    header?: string;
    /** The total number of groups found in the search. */
    total?: number;
}
/**
 * The list of users found in a search, including header text (Showing X of Y
 * matching users) and total of matched users.
 */
interface FoundUsers {
    /**
     * Header text indicating the number of users in the response and the total number
     * of users found in the search.
     */
    header?: string;
    /** The total number of users found in the search. */
    total?: number;
    users?: UserPickerUser[];
}
/** Details about a group. */
interface GroupName {
    /**
     * The ID of the group, which uniquely identifies the group across all Atlassian
     * products. For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*.
     */
    groupId?: string | null;
    /** The name of group. */
    name?: string;
    /** The URL for these group details. */
    self?: string;
}
/** Details about an issue. */
interface IssueBean {
    /** Details of changelogs associated with the issue. */
    changelog?: PageOfChangelogs;
    /** The metadata for the fields on the issue that can be amended. */
    editmeta?: IssueUpdateMetadata;
    /** Expand options that include additional issue details in the response. */
    expand?: string;
    fields?: IssueBeanKnownFields & {
        [key: string]: unknown;
    };
    fieldsToInclude?: IncludedFields;
    /** The ID of the issue. */
    id: string;
    /** The key of the issue. */
    key?: string;
    /** The ID and name of each field present on the issue. */
    names?: {
        [key: string]: string;
    };
    /** The operations that can be performed on the issue. */
    operations?: Operations;
    /** Details of the issue properties identified in the request. */
    properties?: {
        [key: string]: unknown;
    };
    /** The rendered value of each field present on the issue. */
    renderedFields?: {
        [key: string]: unknown;
    };
    /** The schema describing each field present on the issue. */
    schema?: {
        /** The schema of a field. */ [key: string]: JsonTypeBean;
    };
    /** The URL of the issue details. */
    self?: string;
    /** The transitions that can be performed on the issue. */
    transitions?: IssueTransition[];
    /** The versions of each field on the issue. */
    versionedRepresentations?: {
        [key: string]: {
            [key: string]: unknown;
        };
    };
}
interface IssueBeanKnownFields {
    statuscategorychangedate: string;
    issuetype: IssueTypeDetails;
    timespent?: number;
    project: ProjectDetails;
    resolution?: null;
    resolutiondate?: null;
    workratio: number;
    lastViewed?: null;
    created: string;
    priority: Priority;
    issuelinks: IssueLink[];
    assignee?: User | null;
    updated: string;
    status: StatusDetails;
    description: Description;
    summary: string;
    creator: User;
    subtasks: IssueBean[];
    reporter: User;
    duedate?: null;
    aggregatetimeoriginalestimate: number | null;
    aggregatetimeestimate: number | null;
    fixVersions?: Version[];
    worklog: PageOfWorklogs;
}
interface IssueBeanKnownUpdateFields {
    statuscategorychangedate?: string;
    issuetype?: IssueTypeDetails;
    timespent?: number;
    project?: ProjectDetails;
    resolution?: null;
    resolutiondate?: null;
    workratio?: number;
    lastViewed?: null;
    created?: string;
    priority?: Priority;
    issuelinks?: IssueLink[];
    assignee?: User | null;
    updated?: string;
    status?: StatusDetails;
    description?: Description;
    summary?: string;
    creator?: User;
    subtasks?: IssueBean[];
    reporter?: User;
    duedate?: null;
    aggregatetimeoriginalestimate?: number | null;
    aggregatetimeestimate?: number | null;
    fixVersions?: Version[];
    worklog?: PageOfWorklogs;
}
interface Description {
    type: string;
    version: number;
    content?: null[] | null;
}
type IssueFieldKeys = (keyof IssueBeanKnownUpdateFields)[] | string[] | "*navigable"[] | "*all"[];
/**
 * This object is used as follows:
 *
 *  *  In the [ issueLink](#api-rest-api-3-issueLink-post) resource it defines and
 * reports on the type of link between the issues. Find a list of issue link types
 * with [Get issue link types](#api-rest-api-3-issueLinkType-get).
 *  *  In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it
 * defines and reports on issue link types.
 */
interface IssueLinkType {
    /**
     * The ID of the issue link type and is used as follows:
     *
     *  *  In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is the type
     * of issue link. Required on create when `name` isn't provided. Otherwise, read
     * only.
     *  *  In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is
     * read only.
     */
    id?: string;
    /**
     * The description of the issue link type inward link and is used as follows:
     *
     *  *  In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is read
     * only.
     *  *  In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is
     * required on create and optional on update. Otherwise, read only.
     */
    inward?: string;
    /**
     * The name of the issue link type and is used as follows:
     *
     *  *  In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is the type
     * of issue link. Required on create when `id` isn't provided. Otherwise, read
     * only.
     *  *  In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is
     * required on create and optional on update. Otherwise, read only.
     */
    name?: string;
    /**
     * The description of the issue link type outward link and is used as follows:
     *
     *  *  In the [ issueLink](#api-rest-api-3-issueLink-post) resource it is read
     * only.
     *  *  In the [ issueLinkType](#api-rest-api-3-issueLinkType-post) resource it is
     * required on create and optional on update. Otherwise, read only.
     */
    outward?: string;
    /** The URL of the issue link type. Read only. */
    self?: string;
}
/** Details about an issue type. */
interface IssueTypeDetails {
    /** The ID of the issue type's avatar. */
    avatarId?: number;
    /** The description of the issue type. */
    description?: string;
    /** Unique ID for next-gen projects. */
    entityId?: string;
    /** Hierarchy level of the issue type. */
    hierarchyLevel?: number;
    /** The URL of the issue type's avatar. */
    iconUrl?: string;
    /** The ID of the issue type. */
    id?: string;
    /** The name of the issue type. */
    name?: string;
    /** Details of the next-gen projects the issue type is available in. */
    scope?: Scope;
    /** The URL of these issue type details. */
    self?: string;
    /** Whether this issue type is used to create subtasks. */
    subtask?: boolean;
}
/** The list of issue type IDs. */
interface IssueTypeIds {
    /** The list of issue type IDs. */
    issueTypeIds: string[];
}
/** Details about the mapping between issue types and a workflow. */
interface IssueTypesWorkflowMapping {
    /** Whether the workflow is the default workflow for the workflow scheme. */
    defaultMapping?: boolean;
    /** The list of issue type IDs. */
    issueTypes?: string[];
    /**
     * Whether a draft workflow scheme is created or updated when updating an active
     * workflow scheme. The draft is updated with the new workflow-issue types
     * mapping. Defaults to `false`.
     */
    updateDraftIfNeeded?: boolean;
    /** The name of the workflow. Optional if updating the workflow-issue types mapping. */
    workflow?: string;
}
/** Details about the mapping between an issue type and a workflow. */
interface IssueTypeWorkflowMapping {
    /**
     * The ID of the issue type. Not required if updating the issue type-workflow
     * mapping.
     */
    issueType?: string;
    /**
     * Set to true to create or update the draft of a workflow scheme and update the
     * mapping in the draft, when the workflow scheme cannot be edited. Defaults to
     * `false`. Only applicable when updating the workflow-issue types mapping.
     */
    updateDraftIfNeeded?: boolean;
    /** The name of the workflow. */
    workflow?: string;
}
/** Answer in Atlassian Document Format (ADF) */
interface JsonNode {
    array?: boolean;
    bigDecimal?: boolean;
    bigInteger?: boolean;
    bigIntegerValue?: number;
    binary?: boolean;
    binaryValue?: string[];
    boolean?: boolean;
    booleanValue?: boolean;
    containerNode?: boolean;
    decimalValue?: number;
    double?: boolean;
    doubleValue?: number;
    elements?: {
        [key: string]: unknown;
    };
    fieldNames?: {
        [key: string]: unknown;
    };
    fields?: {
        [key: string]: unknown;
    };
    floatingPointNumber?: boolean;
    int?: boolean;
    intValue?: number;
    integralNumber?: boolean;
    long?: boolean;
    longValue?: number;
    missingNode?: boolean;
    null?: boolean;
    number?: boolean;
    numberType?: "INT" | "LONG" | "BIG_INTEGER" | "FLOAT" | "DOUBLE" | "BIG_DECIMAL";
    numberValue?: number;
    object?: boolean;
    pojo?: boolean;
    textValue?: string;
    textual?: boolean;
    valueAsBoolean?: boolean;
    valueAsDouble?: number;
    valueAsInt?: number;
    valueAsLong?: number;
    valueAsText?: string;
    valueNode?: boolean;
}
/** Details about a notification scheme. */
interface NotificationScheme {
    /** The description of the notification scheme. */
    description?: string;
    /**
     * Expand options that include additional notification scheme details in the
     * response.
     */
    expand?: string;
    /** The ID of the notification scheme. */
    id?: number;
    /** The name of the notification scheme. */
    name?: string;
    /** The notification events and associated recipients. */
    notificationSchemeEvents?: NotificationSchemeEvent[];
    /** The list of project IDs associated with the notification scheme. */
    projects?: number[];
    /** The scope of the notification scheme. */
    scope?: Scope;
    self?: string;
}
/** A page of items. */
interface PageBeanIssueTypeScreenScheme {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: IssueTypeScreenScheme[];
}
/** A page of items. */
interface PageBeanProject {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Project[];
}
/** A page of items. */
interface PageBeanProjectDetails {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: ProjectDetails[];
}
/** A page of items. */
interface PageBeanUser {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: User[];
}
/**
 * Details of a user, group, field, or project role that holds a permission. See
 * [Holder object](../api-group-permission-schemes/#holder-object) in *Get all
 * permission schemes* for more information.
 */
interface PermissionHolder {
    /**
     * Expand options that include additional permission holder details in the
     * response.
     */
    expand?: string;
    /**
     * As a group's name can change, use of `value` is recommended. The identifier
     * associated withthe `type` value that defines the holder of the permission.
     */
    parameter?: string;
    /** The type of permission holder. */
    type: string;
    /**
     * The identifier associated with the `type` value that defines the holder of the
     * permission.
     */
    value?: string;
}
/** Details of a permission scheme. */
interface PermissionScheme extends Record<string, unknown> {
    /** A description for the permission scheme. */
    description?: string;
    /** The expand options available for the permission scheme. */
    expand?: string;
    /** The ID of the permission scheme. */
    id?: number;
    /** The name of the permission scheme. Must be unique. */
    name: string;
    /**
     * The permission scheme to create or update. See [About permission schemes and
     * grants](../api-group-permission-schemes/#about-permission-schemes-and-grants)
     * for more information.
     */
    permissions?: PermissionGrant[];
    /** The scope of the permission scheme. */
    scope?: Scope;
    /** The URL of the permission scheme. */
    self?: string;
}
/** An issue priority. */
interface Priority extends Record<string, unknown> {
    /**
     * The avatarId of the avatar for the issue priority. This parameter is nullable
     * and when set, this avatar references the universal avatar APIs.
     */
    avatarId?: number;
    /** The description of the issue priority. */
    description?: string;
    /** The URL of the icon for the issue priority. */
    iconUrl?: string;
    /** The ID of the issue priority. */
    id?: string;
    /** Whether this priority is the default. */
    isDefault?: boolean;
    /** The name of the issue priority. */
    name?: string;
    /** Priority schemes associated with the issue priority. */
    schemes?: ExpandPrioritySchemePage;
    /** The URL of the issue priority. */
    self?: string;
    /** The color used to indicate the issue priority. */
    statusColor?: string;
}
/** Details about a project. */
interface Project {
    /** Whether the project is archived. */
    archived?: boolean;
    /** The user who archived the project. */
    archivedBy?: User;
    /** The date when the project was archived. */
    archivedDate?: string;
    /** The default assignee when creating issues for this project. */
    assigneeType?: "PROJECT_LEAD" | "UNASSIGNED";
    /** The URLs of the project's avatars. */
    avatarUrls?: AvatarUrlsBean;
    /** List of the components contained in the project. */
    components?: ProjectComponent[];
    /** Whether the project is marked as deleted. */
    deleted?: boolean;
    /** The user who marked the project as deleted. */
    deletedBy?: User;
    /** The date when the project was marked as deleted. */
    deletedDate?: string;
    /** A brief description of the project. */
    description?: string;
    /** An email address associated with the project. */
    email?: string;
    /** Expand options that include additional project details in the response. */
    expand?: string;
    /** Whether the project is selected as a favorite. */
    favourite?: boolean;
    /** The ID of the project. */
    id?: string;
    /** Insights about the project. */
    insight?: ProjectInsight;
    /**
     * Whether the project is private from the user's perspective. This means the user
     * can't see the project or any associated issues.
     */
    isPrivate?: boolean;
    /** The issue type hierarchy for the project. */
    issueTypeHierarchy?: Hierarchy;
    /** List of the issue types available in the project. */
    issueTypes?: IssueTypeDetails[];
    /** The key of the project. */
    key?: string;
    /** The project landing page info. */
    landingPageInfo?: ProjectLandingPageInfo;
    /** The username of the project lead. */
    lead?: User;
    /** The name of the project. */
    name?: string;
    /** User permissions on the project */
    permissions?: ProjectPermissions;
    /** The category the project belongs to. */
    projectCategory?: ProjectCategory;
    /**
     * The [project
     * type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes)
     * of the project.
     */
    projectTypeKey?: "software" | "service_desk" | "business";
    /** Map of project properties */
    properties?: {
        [key: string]: unknown;
    };
    /** The date when the project is deleted permanently. */
    retentionTillDate?: string;
    /**
     * The name and self URL for each role defined in the project. For more
     * information, see [Create project role](#api-rest-api-3-role-post).
     */
    roles?: {
        [key: string]: string;
    };
    /** The URL of the project details. */
    self?: string;
    /** Whether the project is simplified. */
    simplified?: boolean;
    /** The type of the project. */
    style?: "classic" | "next-gen";
    /** A link to information about this project, such as project documentation. */
    url?: string;
    /** Unique ID for next-gen projects. */
    uuid?: string;
    /**
     * The versions defined in the project. For more information, see [Create
     * version](#api-rest-api-3-version-post).
     */
    versions?: Version[];
}
/** A project category. */
interface ProjectCategory {
    /** The description of the project category. */
    description?: string;
    /** The ID of the project category. */
    id?: string;
    /** The name of the project category. Required on create, optional on update. */
    name?: string;
    /** The URL of the project category. */
    self?: string;
}
/** Details about a project component. */
interface ProjectComponent {
    /**
     * Compass component's ID. Can't be updated. Not required for creating a Project
     * Component.
     */
    ari?: string;
    /**
     * The details of the user associated with `assigneeType`, if any. See
     * `realAssignee` for details of the user assigned to issues created with this
     * component.
     */
    assignee?: User;
    /**
     * The nominal user type used to determine the assignee for issues created with
     * this component. See `realAssigneeType` for details on how the type of the user,
     * and hence the user, assigned to issues is determined. Can take the following
     * values:
     *
     *  *  `PROJECT_LEAD` the assignee to any issues created with this component is
     * nominally the lead for the project the component is in.
     *  *  `COMPONENT_LEAD` the assignee to any issues created with this component is
     * nominally the lead for the component.
     *  *  `UNASSIGNED` an assignee is not set for issues created with this component.
     *  *  `PROJECT_DEFAULT` the assignee to any issues created with this component is
     * nominally the default assignee for the project that the component is in.
     *
     * Default value: `PROJECT_DEFAULT`.
     * Optional when creating or updating a component.
     */
    assigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED";
    /**
     * The description for the component. Optional when creating or updating a
     * component.
     */
    description?: string;
    /** The unique identifier for the component. */
    id?: string;
    /**
     * Whether a user is associated with `assigneeType`. For example, if the
     * `assigneeType` is set to `COMPONENT_LEAD` but the component lead is not set,
     * then `false` is returned.
     */
    isAssigneeTypeValid?: boolean;
    /** The user details for the component's lead user. */
    lead?: User;
    /**
     * The accountId of the component's lead user. The accountId uniquely identifies
     * the user across all Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
     */
    leadAccountId?: string;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    leadUserName?: string;
    /**
     * Compass component's metadata. Can't be updated. Not required for creating a
     * Project Component.
     */
    metadata?: {
        [key: string]: string;
    };
    /**
     * The unique name for the component in the project. Required when creating a
     * component. Optional when updating a component. The maximum length is 255
     * characters.
     */
    name?: string;
    /**
     * The key of the project the component is assigned to. Required when creating a
     * component. Can't be updated.
     */
    project?: string;
    /** The ID of the project the component is assigned to. */
    projectId?: number;
    /**
     * The user assigned to issues created with this component, when `assigneeType`
     * does not identify a valid assignee.
     */
    realAssignee?: User;
    /**
     * The type of the assignee that is assigned to issues created with this
     * component, when an assignee cannot be set from the `assigneeType`. For example,
     * `assigneeType` is set to `COMPONENT_LEAD` but no component lead is set. This
     * property is set to one of the following values:
     *
     *  *  `PROJECT_LEAD` when `assigneeType` is `PROJECT_LEAD` and the project lead
     * has permission to be assigned issues in the project that the component is in.
     *  *  `COMPONENT_LEAD` when `assignee`Type is `COMPONENT_LEAD` and the component
     * lead has permission to be assigned issues in the project that the component is
     * in.
     *  *  `UNASSIGNED` when `assigneeType` is `UNASSIGNED` and Jira is configured to
     * allow unassigned issues.
     *  *  `PROJECT_DEFAULT` when none of the preceding cases are true.
     */
    realAssigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED";
    /** The URL of the component. */
    self?: string;
}
/** Details about a project. */
interface ProjectDetails {
    /** The URLs of the project's avatars. */
    avatarUrls?: AvatarUrlsBean;
    /** The ID of the project. */
    id?: string;
    /** The key of the project. */
    key?: string;
    /** The name of the project. */
    name?: string;
    /** The category the project belongs to. */
    projectCategory?: UpdatedProjectCategory;
    /**
     * The [project
     * type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes)
     * of the project.
     */
    projectTypeKey?: "software" | "service_desk" | "business";
    /** The URL of the project details. */
    self?: string;
    /** Whether or not the project is simplified. */
    simplified?: boolean;
}
/** Project ID details. */
interface ProjectId {
    /** The ID of the project. */
    id: string;
}
/**
 * Deprecated. See the [deprecation
 * notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-2298)
 * for details.
 *
 * Use the optional `workflows.usages` expand to get additional information about
 * the projects and issue types associated with the requested workflows.
 */
interface ProjectIssueTypes {
    /** IDs of the issue types */
    issueTypes?: (string | null)[] | null;
    /** Project ID details. */
    project?: ProjectId | null;
}
/** Details about the roles in a project. */
interface ProjectRole {
    /** The list of users who act in this role. */
    actors?: RoleActor[];
    /** Whether this role is the admin role for the project. */
    admin?: boolean;
    /** Whether the calling user is part of this role. */
    currentUserRole?: boolean;
    /** Whether this role is the default role for the project */
    default?: boolean;
    /** The description of the project role. */
    description?: string;
    /** The ID of the project role. */
    id?: number;
    /** The name of the project role. */
    name?: string;
    /** Whether the roles are configurable for this project. */
    roleConfigurable?: boolean;
    /**
     * The scope of the role. Indicated for roles associated with [next-gen
     * projects](https://confluence.atlassian.com/x/loMyO).
     */
    scope?: Scope;
    /** The URL the project role details. */
    self?: string;
    /** The translated name of the project role. */
    translatedName?: string;
}
/** A page of projects. */
interface ProjectUsagePage {
    /** Page token for the next page of project usages. */
    nextPageToken?: string;
    /** The list of projects. */
    values?: ProjectUsage[];
}
/**
 * The projects the item is associated with. Indicated for items associated with
 * [next-gen projects](https://confluence.atlassian.com/x/loMyO).
 */
interface Scope extends Record<string, unknown> {
    /** The project the item has scope in. */
    project?: ProjectDetails;
    /** The type of scope. */
    type?: "PROJECT" | "TEMPLATE";
}
/** A screen tab field. */
interface ScreenableField {
    /** The ID of the screen tab field. */
    id?: string;
    /**
     * The name of the screen tab field. Required on create and update. The maximum
     * length is 255 characters.
     */
    name?: string;
}
/** A screen tab. */
interface ScreenableTab {
    /** The ID of the screen tab. */
    id?: number;
    /** The name of the screen tab. The maximum length is 255 characters. */
    name: string;
}
/** Details of an issue level security item. */
interface SecurityLevel {
    /** The description of the issue level security item. */
    description?: string;
    /** The ID of the issue level security item. */
    id?: string;
    /** Whether the issue level security item is the default. */
    isDefault?: boolean;
    /** The ID of the issue level security scheme. */
    issueSecuritySchemeId?: string;
    /** The name of the issue level security item. */
    name?: string;
    /** The URL of the issue level security item. */
    self?: string;
}
/** Details about a security scheme. */
interface SecurityScheme {
    /** The ID of the default security level. */
    defaultSecurityLevelId?: number;
    /** The description of the issue security scheme. */
    description?: string;
    /** The ID of the issue security scheme. */
    id?: number;
    levels?: SecurityLevel[];
    /** The name of the issue security scheme. */
    name?: string;
    /** The URL of the issue security scheme. */
    self?: string;
}
/** Details of a share permission for the filter. */
interface SharePermission {
    /**
     * The group that the filter is shared with. For a request, specify the `groupId`
     * or `name` property for the group. As a group's name can change, use of
     * `groupId` is recommended.
     */
    group?: GroupName;
    /** The unique identifier of the share permission. */
    id?: number;
    /**
     * The project that the filter is shared with. This is similar to the project
     * object returned by [Get project](#api-rest-api-3-project-projectIdOrKey-get)
     * but it contains a subset of the properties, which are: `self`, `id`, `key`,
     * `assigneeType`, `name`, `roles`, `avatarUrls`, `projectType`, `simplified`.
     * For a request, specify the `id` for the project.
     */
    project?: Project;
    /**
     * The project role that the filter is shared with.
     * For a request, specify the `id` for the role. You must also specify the
     * `project` object and `id` for the project that the role is in.
     */
    role?: ProjectRole;
    /**
     * The type of share permission:
     *
     *  *  `user` Shared with a user.
     *  *  `group` Shared with a group. If set in a request, then specify
     * `sharePermission.group` as well.
     *  *  `project` Shared with a project. If set in a request, then specify
     * `sharePermission.project` as well.
     *  *  `projectRole` Share with a project role in a project. This value is not
     * returned in responses. It is used in requests, where it needs to be specify
     * with `projectId` and `projectRoleId`.
     *  *  `global` Shared globally. If set in a request, no other `sharePermission`
     * properties need to be specified.
     *  *  `loggedin` Shared with all logged-in users. Note: This value is set in a
     * request by specifying `authenticated` as the `type`.
     *  *  `project-unknown` Shared with a project that the user does not have access
     * to. Cannot be set in a request.
     */
    type: "user" | "group" | "project" | "projectRole" | "global" | "loggedin" | "authenticated" | "project-unknown";
    /**
     * The user account ID that the filter is shared with. For a request, specify the
     * `accountId` property for the user.
     */
    user?: UserBean;
}
/** Details about the operations available in this version. */
interface SimpleLink {
    href?: string;
    iconClass?: string;
    id?: string;
    label?: string;
    styleClass?: string;
    title?: string;
    weight?: number;
}
/** A status category. */
interface StatusCategory extends Record<string, unknown> {
    /** The name of the color used to represent the status category. */
    colorName?: string;
    /** The ID of the status category. */
    id?: number;
    /** The key of the status category. */
    key?: string;
    /** The name of the status category. */
    name?: string;
    /** The URL of the status category. */
    self?: string;
}
/** A status. */
interface StatusDetails extends Record<string, unknown> {
    /** The description of the status. */
    description?: string;
    /** The URL of the icon used to represent the status. */
    iconUrl?: string;
    /** The ID of the status. */
    id?: string;
    /** The name of the status. */
    name?: string;
    /** The scope of the field. */
    scope?: Scope;
    /** The URL of the status. */
    self?: string;
    /** The category assigned to the status. */
    statusCategory?: StatusCategory;
}
/** Details about a task. */
interface TaskProgressBeanObject {
    /** The description of the task. */
    description?: string;
    /** The execution time of the task, in milliseconds. */
    elapsedRuntime: number;
    /** A timestamp recording when the task was finished. */
    finished?: number;
    /** The ID of the task. */
    id: string;
    /** A timestamp recording when the task progress was last updated. */
    lastUpdate: number;
    /** Information about the progress of the task. */
    message?: string;
    /** The progress of the task, as a percentage complete. */
    progress: number;
    /** The result of the task execution. */
    result?: unknown;
    /** The URL of the task. */
    self: string;
    /** A timestamp recording when the task was started. */
    started?: number;
    /** The status of the task. */
    status: "ENQUEUED" | "RUNNING" | "COMPLETE" | "FAILED" | "CANCEL_REQUESTED" | "CANCELLED" | "DEAD";
    /** A timestamp recording when the task was submitted. */
    submitted: number;
    /** The ID of the user who submitted the task. */
    submittedBy: number;
}
/** Details about a task. */
interface TaskProgressBeanRemoveOptionFromIssuesResult {
    /** The description of the task. */
    description?: string;
    /** The execution time of the task, in milliseconds. */
    elapsedRuntime: number;
    /** A timestamp recording when the task was finished. */
    finished?: number;
    /** The ID of the task. */
    id: string;
    /** A timestamp recording when the task progress was last updated. */
    lastUpdate: number;
    /** Information about the progress of the task. */
    message?: string;
    /** The progress of the task, as a percentage complete. */
    progress: number;
    /** The result of the task execution. */
    result?: RemoveOptionFromIssuesResult;
    /** The URL of the task. */
    self: string;
    /** A timestamp recording when the task was started. */
    started?: number;
    /** The status of the task. */
    status: "ENQUEUED" | "RUNNING" | "COMPLETE" | "FAILED" | "CANCEL_REQUESTED" | "CANCELLED" | "DEAD";
    /** A timestamp recording when the task was submitted. */
    submitted: number;
    /** The ID of the user who submitted the task. */
    submittedBy: number;
}
/** Details of the time tracking configuration. */
interface TimeTrackingConfiguration {
    /** The default unit of time applied to logged time. */
    defaultUnit: "minute" | "hour" | "day" | "week";
    /** The format that will appear on an issue's *Time Spent* field. */
    timeFormat: "pretty" | "days" | "hours";
    /** The number of days in a working week. */
    workingDaysPerWeek: number;
    /** The number of hours in a working day. */
    workingHoursPerDay: number;
}
/** A project category. */
interface UpdatedProjectCategory {
    /** The name of the project category. */
    description?: string;
    /** The ID of the project category. */
    id?: string;
    /** The description of the project category. */
    name?: string;
    /** The URL of the project category. */
    self?: string;
}
/**
 * A user with details as permitted by the user's Atlassian Account privacy
 * settings. However, be aware of these exceptions:
 *
 *  *  User record deleted from Atlassian: This occurs as the result of a right to
 * be forgotten request. In this case, `displayName` provides an indication and
 * other parameters have default values or are blank (for example, email is blank).
 *  *  User record corrupted: This occurs as a results of events such as a server
 * import and can only happen to deleted users. In this case, `accountId` returns
 * *unknown* and all other parameters have fallback values.
 *  *  User record unavailable: This usually occurs due to an internal service
 * outage. In this case, all parameters have fallback values.
 */
interface User {
    /**
     * The account ID of the user, which uniquely identifies the user across all
     * Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Required in
     * requests.
     */
    accountId?: string;
    /**
     * The user account type. Can take the following values:
     *
     *  *  `atlassian` regular Atlassian user account
     *  *  `app` system account used for Connect applications and OAuth to represent
     * external systems
     *  *  `customer` Jira Service Desk account representing an external service desk
     */
    accountType?: "atlassian" | "app" | "customer" | "unknown";
    /** Whether the user is active. */
    active?: boolean;
    /** The application roles the user is assigned to. */
    applicationRoles?: SimpleListWrapperApplicationRole;
    /** The avatars of the user. */
    avatarUrls?: AvatarUrlsBean;
    /**
     * The display name of the user. Depending on the user’s privacy setting, this may
     * return an alternative value.
     */
    displayName?: string;
    /**
     * The email address of the user. Depending on the user’s privacy setting, this
     * may be returned as null.
     */
    emailAddress?: string;
    /** Expand options that include additional user details in the response. */
    expand?: string;
    /** The groups that the user belongs to. */
    groups?: SimpleListWrapperGroupName;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    key?: string;
    /**
     * The locale of the user. Depending on the user’s privacy setting, this may be
     * returned as null.
     */
    locale?: string;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    name?: string;
    /** The URL of the user. */
    self?: string;
    /**
     * The time zone specified in the user's profile. If the user's time zone is not
     * visible to the current user (due to user's profile setting), or if a time zone
     * has not been set, the instance's default time zone will be returned.
     */
    timeZone?: string;
}
/**
 * User details permitted by the user's Atlassian Account privacy settings.
 * However, be aware of these exceptions:
 *
 *  *  User record deleted from Atlassian: This occurs as the result of a right to
 * be forgotten request. In this case, `displayName` provides an indication and
 * other parameters have default values or are blank (for example, email is blank).
 *  *  User record corrupted: This occurs as a results of events such as a server
 * import and can only happen to deleted users. In this case, `accountId` returns
 * *unknown* and all other parameters have fallback values.
 *  *  User record unavailable: This usually occurs due to an internal service
 * outage. In this case, all parameters have fallback values.
 */
interface UserDetails {
    /**
     * The account ID of the user, which uniquely identifies the user across all
     * Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
     */
    accountId?: string;
    /**
     * The type of account represented by this user. This will be one of 'atlassian'
     * (normal users), 'app' (application user) or 'customer' (Jira Service Desk
     * customer user)
     */
    accountType?: string;
    /** Whether the user is active. */
    active?: boolean;
    /** The avatars of the user. */
    avatarUrls?: AvatarUrlsBean;
    /**
     * The display name of the user. Depending on the user’s privacy settings, this
     * may return an alternative value.
     */
    displayName?: string;
    /**
     * The email address of the user. Depending on the user’s privacy settings, this
     * may be returned as null.
     */
    emailAddress?: string;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    key?: string;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    name?: string;
    /** The URL of the user. */
    self?: string;
    /**
     * The time zone specified in the user's profile. Depending on the user’s privacy
     * settings, this may be returned as null.
     */
    timeZone?: string;
}
/** Details about a project version. */
interface Version {
    /**
     * If the expand option `approvers` is used, returns a list containing the
     * approvers for this version.
     */
    approvers?: VersionApprover[];
    /**
     * Indicates that the version is archived. Optional when creating or updating a
     * version.
     */
    archived?: boolean;
    /**
     * The description of the version. Optional when creating or updating a version.
     * The maximum size is 16,384 bytes.
     */
    description?: string;
    /**
     * If the expand option `driver` is used, returns the Atlassian account ID of the
     * driver.
     */
    driver?: string;
    /**
     * Use [expand](em>#expansion) to include additional information about version in
     * the response. This parameter accepts a comma-separated list. Expand options
     * include:
     *
     *  *  `operations` Returns the list of operations available for this version.
     *  *  `issuesstatus` Returns the count of issues in this version for each of the
     * status categories *to do*, *in progress*, *done*, and *unmapped*. The
     * *unmapped* property contains a count of issues with a status other than *to
     * do*, *in progress*, and *done*.
     *  *  `driver` Returns the Atlassian account ID of the version driver.
     *  *  `approvers` Returns a list containing approvers for this version.
     *
     * Optional for create and update.
     */
    expand?: string;
    /** The ID of the version. */
    id?: string;
    /**
     * If the expand option `issuesstatus` is used, returns the count of issues in
     * this version for each of the status categories *to do*, *in progress*, *done*,
     * and *unmapped*. The *unmapped* property contains a count of issues with a
     * status other than *to do*, *in progress*, and *done*.
     */
    issuesStatusForFixVersion?: VersionIssuesStatus;
    /**
     * The URL of the self link to the version to which all unfixed issues are moved
     * when a version is released. Not applicable when creating a version. Optional
     * when updating a version.
     */
    moveUnfixedIssuesTo?: string;
    /**
     * The unique name of the version. Required when creating a version. Optional when
     * updating a version. The maximum length is 255 characters.
     */
    name?: string;
    /**
     * If the expand option `operations` is used, returns the list of operations
     * available for this version.
     */
    operations?: SimpleLink[];
    /** Indicates that the version is overdue. */
    overdue?: boolean;
    /** Deprecated. Use `projectId`. */
    project?: string;
    /**
     * The ID of the project to which this version is attached. Required when creating
     * a version. Not applicable when updating a version.
     */
    projectId?: number;
    /**
     * The release date of the version. Expressed in ISO 8601 format (yyyy-mm-dd).
     * Optional when creating or updating a version.
     */
    releaseDate?: string;
    /**
     * Indicates that the version is released. If the version is released a request to
     * release again is ignored. Not applicable when creating a version. Optional when
     * updating a version.
     */
    released?: boolean;
    /** The URL of the version. */
    self?: string;
    /**
     * The start date of the version. Expressed in ISO 8601 format (yyyy-mm-dd).
     * Optional when creating or updating a version.
     */
    startDate?: string;
    /**
     * The date on which work on this version is expected to finish, expressed in the
     * instance's *Day/Month/Year Format* date format.
     */
    userReleaseDate?: string;
    /**
     * The date on which work on this version is expected to start, expressed in the
     * instance's *Day/Month/Year Format* date format.
     */
    userStartDate?: string;
}
/** The group or role to which this item is visible. */
interface Visibility extends Record<string, unknown> {
    /**
     * The ID of the group or the name of the role that visibility of this item is
     * restricted to.
     */
    identifier?: string | null;
    /** Whether visibility of this item is restricted to a group or role. */
    type?: "group" | "role";
    /**
     * The name of the group or role that visibility of this item is restricted to.
     * Please note that the name of a group is mutable, to reliably identify a group
     * use `identifier`.
     */
    value?: string;
}
/** Details about a workflow scheme. */
interface WorkflowScheme {
    /**
     * The name of the default workflow for the workflow scheme. The default workflow
     * has *All Unassigned Issue Types* assigned to it in Jira. If `defaultWorkflow`
     * is not specified when creating a workflow scheme, it is set to *Jira Workflow
     * (jira)*.
     */
    defaultWorkflow?: string;
    /** The description of the workflow scheme. */
    description?: string;
    /** Whether the workflow scheme is a draft or not. */
    draft?: boolean;
    /** The ID of the workflow scheme. */
    id?: number;
    /**
     * The issue type to workflow mappings, where each mapping is an issue type ID and
     * workflow name pair. Note that an issue type can only be mapped to one workflow
     * in a workflow scheme.
     */
    issueTypeMappings?: {
        [key: string]: string;
    };
    /** The issue types available in Jira. */
    issueTypes?: {
        /** Details about an issue type. */ [key: string]: IssueTypeDetails;
    };
    /**
     * The date-time that the draft workflow scheme was last modified. A modification
     * is a change to the issue type-project mappings only. This property does not
     * apply to non-draft workflows.
     */
    lastModified?: string;
    /**
     * The user that last modified the draft workflow scheme. A modification is a
     * change to the issue type-project mappings only. This property does not apply to
     * non-draft workflows.
     */
    lastModifiedUser?: User;
    /**
     * The name of the workflow scheme. The name must be unique. The maximum length is
     * 255 characters. Required when creating a workflow scheme.
     */
    name?: string;
    /**
     * For draft workflow schemes, this property is the name of the default workflow
     * for the original workflow scheme. The default workflow has *All Unassigned
     * Issue Types* assigned to it in Jira.
     */
    originalDefaultWorkflow?: string;
    /**
     * For draft workflow schemes, this property is the issue type to workflow
     * mappings for the original workflow scheme, where each mapping is an issue type
     * ID and workflow name pair. Note that an issue type can only be mapped to one
     * workflow in a workflow scheme.
     */
    originalIssueTypeMappings?: {
        [key: string]: string;
    };
    self?: string;
    /**
     * Whether to create or update a draft workflow scheme when updating an active
     * workflow scheme. An active workflow scheme is a workflow scheme that is used by
     * at least one project. The following examples show how this property works:
     *
     *  *  Update an active workflow scheme with `updateDraftIfNeeded` set to `true`:
     * If a draft workflow scheme exists, it is updated. Otherwise, a draft workflow
     * scheme is created.
     *  *  Update an active workflow scheme with `updateDraftIfNeeded` set to `false`:
     * An error is returned, as active workflow schemes cannot be updated.
     *  *  Update an inactive workflow scheme with `updateDraftIfNeeded` set to
     * `true`: The workflow scheme is updated, as inactive workflow schemes do not
     * require drafts to update.
     *
     * Defaults to `false`.
     */
    updateDraftIfNeeded?: boolean;
}
/** The scope of the workflow. */
interface WorkflowScope {
    /** Project ID details. */
    project?: ProjectId | null;
    /**
     * The scope of the workflow. `GLOBAL` for company-managed projects and `PROJECT`
     * for team-managed projects.
     */
    type?: "PROJECT" | "GLOBAL";
}
/** A workflow with transition rules. */
interface WorkflowTransitionRules {
    /** The list of conditions within the workflow. */
    conditions?: AppWorkflowTransitionRule[];
    /** The list of post functions within the workflow. */
    postFunctions?: AppWorkflowTransitionRule[];
    /** The list of validators within the workflow. */
    validators?: AppWorkflowTransitionRule[];
    /** Properties that identify a workflow. */
    workflowId: WorkflowId;
}
/** Fields and additional metadata for creating a request that uses the request type */
interface CustomerRequestCreateMetaDto {
    /** Flag indicating if participants can be added to a request (true) or not. */
    canAddRequestParticipants?: boolean;
    /**
     * Flag indicating if a request can be raised on behalf of another user (true) or
     * not.
     */
    canRaiseOnBehalfOf?: boolean;
    /** List of the fields included in this request. */
    requestTypeFields?: RequestTypeFieldDto[];
}
/** Date of the current build. */
interface DateDto {
    /**
     * Date as the number of milliseconds that have elapsed since 00:00:00 Coordinated
     * Universal Time (UTC), 1 January 1970.
     */
    epochMillis?: number;
    /** Date in a user-friendly text format. */
    friendly?: string;
    /** Date in ISO8601 format. */
    iso8601?: string;
    /**
     * Date in the format used in the Jira REST APIs, which is ISO8601 format but
     * extended with milliseconds. For example, 2016-09-28T23:08:32.097+1000.
     */
    jira?: string;
}
/**
 * An entity property, for more information see [Entity
 * properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/).
 */
interface EntityProperty {
    /** The key of the property. Required on create and update. */
    key?: string;
    /** The value of the property. Required on create and update. */
    value?: unknown;
}
/**
 * An entity property, for more information see [Entity
 * properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/).
 */
interface EntityProperty {
    /** The key of the property. Required on create and update. */
    key?: string;
    /** The value of the property. Required on create and update. */
    value?: unknown;
}
interface ErrorResponse {
    errorMessage?: string;
    i18nErrorMessage?: I18nErrorMessage;
}
/** The schema of a field. */
interface JsonTypeBean {
    /** If the field is a custom field, the configuration of the field. */
    configuration?: {
        [key: string]: unknown;
    };
    /** If the field is a custom field, the URI of the field. */
    custom?: string;
    /** If the field is a custom field, the custom ID of the field. */
    customId?: number;
    /** When the data type is an array, the name of the field items within the array. */
    items?: string;
    /** If the field is a system field, the name of the field. */
    system?: string;
    /** The data type of the field. */
    type: string;
}
/** The schema of a field. */
interface JsonTypeBean {
    /** If the field is a custom field, the configuration of the field. */
    configuration?: {
        [key: string]: unknown;
    };
    /** If the field is a custom field, the URI of the field. */
    custom?: string;
    /** If the field is a custom field, the custom ID of the field. */
    customId?: number;
    /** When the data type is an array, the name of the field items within the array. */
    items?: string;
    /** If the field is a system field, the name of the field. */
    system?: string;
    /** The data type of the field. */
    type: string;
}
interface PagedDtoArticleDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: ArticleDto[];
}
interface PagedDtoRequestTypeDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: RequestTypeDto[];
}
interface PagedDtoUserDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: UserDto[];
}
/** List of the links relating to the page. */
interface PagedLinkDto {
    /** Base URL for the REST API calls. */
    base?: string;
    context?: string;
    /** REST API URL for the next page, if there is one. */
    next?: string;
    /** REST API URL for the previous page, if there is one. */
    prev?: string;
    /** REST API URL for the current page. */
    self?: string;
}
/** List of property keys. */
interface PropertyKeys {
    /** Property key details. */
    keys?: PropertyKey[];
}
/** List of property keys. */
interface PropertyKeys {
    /** Property key details. */
    keys?: PropertyKey[];
}
/** Expandable details of the request type. */
interface RequestTypeDto {
    /**
     * List of items that can be expanded in the response by specifying the expand
     * query parameter.
     */
    _expands?: string[];
    /** REST API URL for the request type. */
    _links?: SelfLinkDto;
    /** Whether the user has permission to create a request with this request type. */
    canCreateRequest?: boolean;
    /** Description of the request type. */
    description?: string;
    /** Fields and additional metadata for creating a request that uses the request type */
    fields?: CustomerRequestCreateMetaDto;
    /** List of the request type groups the request type belongs to. */
    groupIds?: string[];
    /** Help text for the request type. */
    helpText?: string;
    /** Links to the request type's icons. */
    icon?: RequestTypeIconDto;
    /** ID for the request type. */
    id?: string;
    /** ID of the issue type the request type is based upon. */
    issueTypeId?: string;
    /** Short name for the request type. */
    name?: string;
    /** ID of the customer portal associated with the service desk project. */
    portalId?: string;
    /** The request type's practice */
    practice?: string;
    /** Whether request type is restricted or not. */
    restrictionStatus?: "OPEN" | "RESTRICTED";
    /** ID of the service desk the request type belongs to. */
    serviceDeskId?: string;
}
/** REST API URL of the instance. */
interface SelfLinkDto {
    self?: string;
}
/** Expandable details of the service desk. */
interface ServiceDeskDto {
    /** REST API URL to the service desk. */
    _links?: SelfLinkDto;
    /** ID of the service desk. */
    id?: string;
    /** ID of the peer project for the service desk. */
    projectId?: string;
    /** Key of the peer project of the service desk. */
    projectKey?: string;
    /** Name of the project and service desk. */
    projectName?: string;
    /** Key of the project type. */
    projectTypeKey?: string;
}
interface UserDto {
    /** URLs for the customer record and related items. */
    _links?: UserLinkDto;
    /**
     * The accountId of the user, which uniquely identifies the user across all
     * Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
     */
    accountId?: string;
    /** Indicates if the customer is active (true) or inactive (false) */
    active?: boolean;
    /**
     * Customer's name for display in a UI. Depending on the customer’s privacy
     * settings, this may return an alternative value.
     */
    displayName?: string;
    /**
     * Customer's email address. Depending on the customer’s privacy settings, this
     * may be returned as null.
     */
    emailAddress?: string;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    key?: string;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    name?: string;
    /**
     * Customer time zone. Depending on the customer’s privacy settings, this may be
     * returned as null.
     */
    timeZone?: string;
}
/**
 * An association type referencing issues in Jira.
 *
 * @example
 * {
 *   "associationType": "issueIdOrKeys",
 *   "values": [
 *     "ABC-123",
 *     "ABC-456"
 *   ]
 * }
 */
interface IssueIdOrKeysAssociation extends Record<string, unknown> {
    /**
     * Defines the association type.
     *
     * @example
     * issueIdOrKeys
     */
    associationType: "issueKeys" | "issueIdOrKeys";
    /**
     * The Jira issue keys or IDs to associate the entity with.
     *
     * The number of values counted across all associationTypes must not exceed a
     * limit of 500.
     */
    values: string[];
}

/** A list of custom field details. */
interface ConnectCustomFieldValue extends Record<string, unknown> {
    /** The type of custom field. */
    _type: "StringIssueField" | "NumberIssueField" | "RichTextIssueField" | "SingleSelectIssueField" | "MultiSelectIssueField" | "TextIssueField";
    /** The custom field ID. */
    fieldID: number;
    /** The issue ID. */
    issueID: number;
    /** The value of number type custom field when `_type` is `NumberIssueField`. */
    number?: number;
    /**
     * The value of single select and multiselect custom field type when `_type` is
     * `SingleSelectIssueField` or `MultiSelectIssueField`.
     */
    optionID?: string;
    /** The value of richText type custom field when `_type` is `RichTextIssueField`. */
    richText?: string;
    /** The value of string type custom field when `_type` is `StringIssueField`. */
    string?: string;
    /** The value of of text custom field type when `_type` is `TextIssueField`. */
    text?: string;
}
/** Details of updates for a custom field. */
interface ConnectCustomFieldValues {
    /** The list of custom field update details. */
    updateValueList?: ConnectCustomFieldValue[];
}
interface EntityPropertyDetails extends Record<string, unknown> {
    /**
     * The entity property ID.
     *
     * @example
     * 123
     */
    entityId: number;
    /**
     * The entity property key.
     *
     * @example
     * mykey
     */
    key: string;
    /**
     * The new value of the entity property.
     *
     * @example
     * newValue
     */
    value: string;
}
/** Details of the workflow and its transition rules. */
interface WorkflowRulesSearch extends Record<string, unknown> {
    /**
     * Use expand to include additional information in the response. This parameter
     * accepts `transition` which, for each rule, returns information about the
     * transition the rule is assigned to.
     *
     * @example
     * transition
     */
    expand?: string;
    /** The list of workflow rule IDs. */
    ruleIds: string[];
    /**
     * The workflow ID.
     *
     * @example
     * a498d711-685d-428d-8c3e-bc03bb450ea7
     */
    workflowEntityId: string;
}
/** Details of workflow transition rules. */
interface WorkflowRulesSearchDetails extends Record<string, unknown> {
    /**
     * List of workflow rule IDs that do not belong to the workflow or can not be
     * found.
     */
    invalidRules?: string[];
    /** List of valid workflow transition rules. */
    validRules?: WorkflowTransitionRules[];
    /**
     * The workflow ID.
     *
     * @example
     * a498d711-685d-428d-8c3e-bc03bb450ea7
     */
    workflowEntityId?: string;
}

/**
 * @example
 * {
 *   "message": "An example message.",
 *   "statusCode": 200
 * }
 */
interface OperationMessage {
    /** The human-readable message that describes the result. */
    message: string;
    /** The status code of the response. */
    statusCode: number;
}

/** Details of an item associated with the changed record. */
interface AssociatedItemBean {
    /** The ID of the associated record. */
    id?: string;
    /** The name of the associated record. */
    name?: string;
    /** The ID of the associated parent record. */
    parentId?: string;
    /** The name of the associated parent record. */
    parentName?: string;
    /** The type of the associated record. */
    typeName?: string;
}
/** An audit record. */
interface AuditRecordBean {
    /** The list of items associated with the changed record. */
    associatedItems?: AssociatedItemBean[];
    /**
     * Deprecated, use `authorAccountId` instead. The key of the user who created the
     * audit record.
     */
    authorKey?: string;
    /**
     * The category of the audit record. For a list of these categories, see the help
     * article [Auditing in Jira
     * applications](https://confluence.atlassian.com/x/noXKM).
     */
    category?: string;
    /** The list of values changed in the record event. */
    changedValues?: ChangedValueBean[];
    /** The date and time on which the audit record was created. */
    created?: string;
    /** The description of the audit record. */
    description?: string;
    /** The event the audit record originated from. */
    eventSource?: string;
    /** The ID of the audit record. */
    id?: number;
    /** Details of an item associated with the changed record. */
    objectItem?: AssociatedItemBean;
    /** The URL of the computer where the creation of the audit record was initiated. */
    remoteAddress?: string;
    /** The summary of the audit record. */
    summary?: string;
}
/** Container for a list of audit records. */
interface AuditRecords {
    /** The requested or default limit on the number of audit items to be returned. */
    limit?: number;
    /** The number of audit items skipped before the first item in this list. */
    offset?: number;
    /** The list of audit items. */
    records?: AuditRecordBean[];
    /** The total number of audit items returned. */
    total?: number;
}
/** Details of names changed in the record event. */
interface ChangedValueBean {
    /** The value of the field before the change. */
    changedFrom?: string;
    /** The value of the field after the change. */
    changedTo?: string;
    /** The name of the field changed. */
    fieldName?: string;
}

/** Details about system and custom avatars. */
interface Avatars {
    /** Custom avatars list. */
    custom?: Avatar[];
    /** System avatars list. */
    system?: Avatar[];
}
interface StreamingResponseBody {
}
/** List of system avatars. */
interface SystemAvatars {
    /** A list of avatar details. */
    system?: Avatar[];
}

/** The data classification. */
interface DataClassificationLevelsBean {
    /** The data classifications. */
    classifications?: DataClassificationTagBean[];
}
/** The data classification. */
interface DataClassificationTagBean {
    /** The color of the data classification object. */
    color?: string;
    /** The description of the data classification object. */
    description?: string;
    /** The guideline of the data classification object. */
    guideline?: string;
    /** The ID of the data classification object. */
    id: string;
    /** The name of the data classification object. */
    name?: string;
    /** The rank of the data classification object. */
    rank?: number;
    /** The status of the data classification object. */
    status: string;
}

/**
 * A [Connect
 * module](https://developer.atlassian.com/cloud/jira/platform/about-jira-modules/)
 * in the same format as in the
 * [app
 * descriptor](https://developer.atlassian.com/cloud/jira/platform/app-descriptor/).
 *
 * @example
 * {
 *   "description": {
 *     "value": "field with team"
 *   },
 *   "type": "single_select",
 *   "extractions": [
 *     {
 *       "path": "category",
 *       "type": "text",
 *       "name": "categoryName"
 *     }
 *   ],
 *   "name": {
 *     "value": "Team"
 *   },
 *   "key": "team-field"
 * }
 */
interface ConnectModule {
    [key: string]: unknown;
}
/**
 * @example
 * {
 *   "jiraEntityProperties": [
 *     {
 *       "keyConfigurations": [
 *         {
 *           "extractions": [
 *             {
 *               "objectName": "extension",
 *               "type": "text",
 *               "alias": "attachmentExtension"
 *             }
 *           ],
 *           "propertyKey": "attachment"
 *         }
 *       ],
 *       "entityType": "issue",
 *       "name": {
 *         "value": "Attachment Index Document"
 *       },
 *       "key": "dynamic-attachment-entity-property"
 *     }
 *   ],
 *   "jiraIssueFields": [
 *     {
 *       "description": {
 *         "value": "A dynamically added single-select field"
 *       },
 *       "type": "single_select",
 *       "extractions": [
 *         {
 *           "path": "category",
 *           "type": "text",
 *           "name": "categoryName"
 *         }
 *       ],
 *       "name": {
 *         "value": "Dynamic single select"
 *       },
 *       "key": "dynamic-select-field"
 *     }
 *   ]
 * }
 */
interface ConnectModules extends Record<string, unknown> {
    /**
     * A list of app modules in the same format as the `modules` property in the
     * [app
     * descriptor](https://developer.atlassian.com/cloud/jira/platform/app-descriptor/).
     */
    modules: ConnectModule[];
}

/** The account ID of the new owner. */
interface ChangeFilterOwner {
    /** The account ID of the new owner. */
    accountId: string;
}
/** Details about a filter. */
interface Filter {
    /**
     * \[Experimental\] Approximate last used time. Returns the date and time when the
     * filter was last used. Returns `null` if the filter hasn't been used after
     * tracking was enabled. For performance reasons, timestamps aren't updated in
     * real time and therefore may not be exactly accurate.
     */
    approximateLastUsed?: string;
    /** A description of the filter. */
    description?: string;
    /** The groups and projects that can edit the filter. */
    editPermissions?: SharePermission[];
    /** Whether the filter is selected as a favorite. */
    favourite?: boolean;
    /**
     * The count of how many users have selected this filter as a favorite, including
     * the filter owner.
     */
    favouritedCount?: number;
    /** The unique identifier for the filter. */
    id?: string;
    /** The JQL query for the filter. For example, *project = SSP AND issuetype = Bug*. */
    jql?: string;
    /** The name of the filter. Must be unique. */
    name: string;
    /**
     * The user who owns the filter. This is defaulted to the creator of the filter,
     * however Jira administrators can change the owner of a shared filter in the
     * admin settings.
     */
    owner?: User;
    /**
     * A URL to view the filter results in Jira, using the [Search for issues using
     * JQL](#api-rest-api-3-filter-search-get) operation with the filter's JQL string
     * to return the filter results. For example,
     * *https://your-domain.atlassian.net/rest/api/3/search?jql=project+%3D+SSP+AND+issuetype+%3D+Bug*.
     */
    searchUrl?: string;
    /** The URL of the filter. */
    self?: string;
    /** The groups and projects that the filter is shared with. */
    sharePermissions?: SharePermission[];
    /**
     * A paginated list of the users that the filter is shared with. This includes
     * users that are members of the groups or can browse the projects that the filter
     * is shared with.
     */
    sharedUsers?: UserList;
    /** A paginated list of the users that are subscribed to the filter. */
    subscriptions?: FilterSubscriptionsList;
    /**
     * A URL to view the filter results in Jira, using the ID of the filter. For
     * example, *https://your-domain.atlassian.net/issues/?filter=10100*.
     */
    viewUrl?: string;
}
/** Details of a filter. */
interface FilterDetails {
    /**
     * \[Experimental\] Approximate last used time. Returns the date and time when the
     * filter was last used. Returns `null` if the filter hasn't been used after
     * tracking was enabled. For performance reasons, timestamps aren't updated in
     * real time and therefore may not be exactly accurate.
     */
    approximateLastUsed?: string;
    /** The description of the filter. */
    description?: string;
    /**
     * The groups and projects that can edit the filter. This can be specified when
     * updating a filter, but not when creating a filter.
     */
    editPermissions?: SharePermission[];
    /** Expand options that include additional filter details in the response. */
    expand?: string;
    /**
     * Whether the filter is selected as a favorite by any users, not including the
     * filter owner.
     */
    favourite?: boolean;
    /**
     * The count of how many users have selected this filter as a favorite, including
     * the filter owner.
     */
    favouritedCount?: number;
    /** The unique identifier for the filter. */
    id?: string;
    /** The JQL query for the filter. For example, *project = SSP AND issuetype = Bug*. */
    jql?: string;
    /** The name of the filter. */
    name: string;
    /**
     * The user who owns the filter. Defaults to the creator of the filter, however,
     * Jira administrators can change the owner of a shared filter in the admin
     * settings.
     */
    owner?: User;
    /**
     * A URL to view the filter results in Jira, using the [Search for issues using
     * JQL](#api-rest-api-3-filter-search-get) operation with the filter's JQL string
     * to return the filter results. For example,
     * *https://your-domain.atlassian.net/rest/api/3/search?jql=project+%3D+SSP+AND+issuetype+%3D+Bug*.
     */
    searchUrl?: string;
    /** The URL of the filter. */
    self?: string;
    /**
     * The groups and projects that the filter is shared with. This can be specified
     * when updating a filter, but not when creating a filter.
     */
    sharePermissions?: SharePermission[];
    /** The users that are subscribed to the filter. */
    subscriptions?: FilterSubscription[];
    /**
     * A URL to view the filter results in Jira, using the ID of the filter. For
     * example, *https://your-domain.atlassian.net/issues/?filter=10100*.
     */
    viewUrl?: string;
}
/** Details of a user or group subscribing to a filter. */
interface FilterSubscription {
    /** The group subscribing to filter. */
    group?: GroupName;
    /** The ID of the filter subscription. */
    id?: number;
    /** The user subscribing to filter. */
    user?: User;
}
/** A paginated list of subscriptions to a filter. */
interface FilterSubscriptionsList {
    /** The index of the last item returned on the page. */
    "end-index"?: number;
    /** The list of items. */
    items?: FilterSubscription[];
    /** The maximum number of results that could be on the page. */
    "max-results"?: number;
    /** The number of items on the page. */
    size?: number;
    /** The index of the first item returned on the page. */
    "start-index"?: number;
}
/** A page of items. */
interface PageBeanFilterDetails {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: FilterDetails[];
}
/**
 * A paginated list of users sharing the filter. This includes users that are
 * members of the groups or can browse the projects that the filter is shared with.
 */
interface UserList {
    /** The index of the last item returned on the page. */
    "end-index"?: number;
    /** The list of items. */
    items?: User[];
    /** The maximum number of results that could be on the page. */
    "max-results"?: number;
    /** The number of items on the page. */
    size?: number;
    /** The index of the first item returned on the page. */
    "start-index"?: number;
}

/** Details of the scope of the default sharing for new filters and dashboards. */
interface DefaultShareScope {
    /**
     * The scope of the default sharing for new filters and dashboards:
     *
     *  *  `AUTHENTICATED` Shared with all logged-in users.
     *  *  `GLOBAL` Shared with all logged-in users. This shows as `AUTHENTICATED` in
     * the response.
     *  *  `PRIVATE` Not shared with any users.
     */
    scope: "GLOBAL" | "AUTHENTICATED" | "PRIVATE";
}
interface SharePermissionInputBean {
    /**
     * The user account ID that the filter is shared with. For a request, specify the
     * `accountId` property for the user.
     */
    accountId?: string;
    /**
     * The ID of the group, which uniquely identifies the group across all Atlassian
     * products.For example, *952d12c3-5b5b-4d04-bb32-44d383afc4b2*. Cannot be
     * provided with `groupname`.
     */
    groupId?: string;
    /**
     * The name of the group to share the filter with. Set `type` to `group`. Please
     * note that the name of a group is mutable, to reliably identify a group use
     * `groupId`.
     */
    groupname?: string;
    /** The ID of the project to share the filter with. Set `type` to `project`. */
    projectId?: string;
    /**
     * The ID of the project role to share the filter with. Set `type` to
     * `projectRole` and the `projectId` for the project that the role is in.
     */
    projectRoleId?: string;
    /** The rights for the share permission. */
    rights?: number;
    /**
     * The type of the share permission.Specify the type as follows:
     *
     *  *  `user` Share with a user.
     *  *  `group` Share with a group. Specify `groupname` as well.
     *  *  `project` Share with a project. Specify `projectId` as well.
     *  *  `projectRole` Share with a project role in a project. Specify `projectId`
     * and `projectRoleId` as well.
     *  *  `global` Share globally, including anonymous users. If set, this type
     * overrides all existing share permissions and must be deleted before any
     * non-global share permissions is set.
     *  *  `authenticated` Share with all logged-in users. This shows as `loggedin` in
     * the response. If set, this type overrides all existing share permissions and
     * must be deleted before any non-global share permissions is set.
     */
    type: "user" | "project" | "group" | "projectRole" | "global" | "authenticated";
}

/** Bulk Edit Get Fields Response. */
interface BulkEditGetFields {
    /** The end cursor for use in pagination. */
    endingBefore?: string;
    /** List of all the fields */
    fields?: IssueBulkEditField[];
    /** The start cursor for use in pagination. */
    startingAfter?: string;
}
interface BulkOperationErrorResponse {
    errors?: ErrorMessage[];
}
interface BulkOperationProgress {
    /** A timestamp of when the task was submitted. */
    created?: string;
    /**
     * Map of issue IDs for which the operation failed and that the user has
     * permission to view, to their one or more reasons for failure. These reasons are
     * open-ended text descriptions of the error and are not selected from a
     * predefined list of standard reasons.
     */
    failedAccessibleIssues?: {
        [key: string]: string[];
    };
    /**
     * The number of issues that are either invalid or issues that the user doesn't
     * have permission to view, regardless of the success or failure of the operation.
     */
    invalidOrInaccessibleIssueCount?: number;
    /**
     * List of issue IDs for which the operation was successful and that the user has
     * permission to view.
     */
    processedAccessibleIssues?: number[];
    /** Progress of the task as a percentage. */
    progressPercent?: number;
    /** A timestamp of when the task was started. */
    started?: string;
    /** The status of the task. */
    status?: "ENQUEUED" | "RUNNING" | "COMPLETE" | "FAILED" | "CANCEL_REQUESTED" | "CANCELLED" | "DEAD";
    /**
     * A user with details as permitted by the user's Atlassian Account privacy
     * settings. However, be aware of these exceptions:
     *
     *  *  User record deleted from Atlassian: This occurs as the result of a right to
     * be forgotten request. In this case, `displayName` provides an indication and
     * other parameters have default values or are blank (for example, email is blank).
     *  *  User record corrupted: This occurs as a results of events such as a server
     * import and can only happen to deleted users. In this case, `accountId` returns
     * *unknown* and all other parameters have fallback values.
     *  *  User record unavailable: This usually occurs due to an internal service
     * outage. In this case, all parameters have fallback values.
     */
    submittedBy?: User;
    /** The ID of the task. */
    taskId?: string;
    /** The number of issues that the bulk operation was attempted on. */
    totalIssueCount?: number;
    /** A timestamp of when the task progress was last updated. */
    updated?: string;
}
/** Bulk Transition Get Available Transitions Response. */
interface BulkTransitionGetAvailableTransitions {
    /**
     * List of available transitions for bulk transition operation for requested
     * issues grouped by workflow
     */
    availableTransitions?: IssueBulkTransitionForWorkflow[];
    /** The end cursor for use in pagination. */
    endingBefore?: string;
    /** The start cursor for use in pagination. */
    startingAfter?: string;
}
interface BulkTransitionSubmitInput {
    /** List of all the issue IDs or keys that are to be bulk transitioned. */
    selectedIssueIdsOrKeys: string[];
    /** The ID of the transition that is to be performed on the issues. */
    transitionId: string;
}
/** Can contain multiple field values of following types depending on `type` key */
type BulkOperationFields = MandatoryFieldValue | MandatoryFieldValueForAdf;
/** Issue Bulk Delete Payload */
interface IssueBulkDeletePayload {
    /**
     * List of issue IDs or keys which are to be bulk deleted. These IDs or keys can
     * be from different projects and issue types.
     */
    selectedIssueIdsOrKeys: string[];
    /**
     * A boolean value that indicates whether to send a bulk change notification when
     * the issues are being deleted.
     *
     * If `true`, dispatches a bulk notification email to users about the updates.
     */
    sendBulkNotification?: boolean | null;
}
interface IssueBulkEditField {
    /** Description of the field. */
    description?: string;
    /**
     * A list of options related to the field, applicable in contexts where multiple
     * selections are allowed.
     */
    fieldOptions?: IssueBulkOperationsFieldOption[];
    /** The unique ID of the field. */
    id?: string;
    /** Indicates whether the field is mandatory for the operation. */
    isRequired?: boolean;
    /**
     * Specifies supported actions (like add, replace, remove) on multi-select fields
     * via an enum.
     */
    multiSelectFieldOptions?: ("ADD" | "REMOVE" | "REPLACE" | "REMOVE_ALL")[];
    /** The display name of the field. */
    name?: string;
    /** A URL to fetch additional data for the field */
    searchUrl?: string;
    /** The type of the field. */
    type?: string;
    /** A message indicating why the field is unavailable for editing. */
    unavailableMessage?: string;
}
/** Issue Bulk Edit Payload */
interface IssueBulkEditPayload {
    /**
     * An object that defines the values to be updated in specified fields of an
     * issue. The structure and content of this parameter vary depending on the type
     * of field being edited. Although the order is not significant, ensure that field
     * IDs align with those in selectedActions.
     */
    editedFieldsInput: JiraIssueFields;
    /**
     * List of all the field IDs that are to be bulk edited. Each field ID in this
     * list corresponds to a specific attribute of an issue that is set to be modified
     * in the bulk edit operation. The relevant field ID can be obtained by calling
     * the Bulk Edit Get Fields REST API (documentation available on this page itself).
     */
    selectedActions: string[];
    /**
     * List of issue IDs or keys which are to be bulk edited. These IDs or keys can be
     * from different projects and issue types.
     */
    selectedIssueIdsOrKeys: string[];
    /**
     * A boolean value that indicates whether to send a bulk change notification when
     * the issues are being edited.
     *
     * If `true`, dispatches a bulk notification email to users about the updates.
     */
    sendBulkNotification?: boolean | null;
}
/** Issue Bulk Move Payload */
interface IssueBulkMovePayload {
    /**
     * A boolean value that indicates whether to send a bulk change notification when
     * the issues are being moved.
     *
     * If `true`, dispatches a bulk notification email to users about the updates.
     */
    sendBulkNotification?: boolean | null;
    /**
     * An object representing the mapping of issues and data related to destination
     * entities, like fields and statuses, that are required during a bulk move.
     *
     * The key is a string that is created by concatenating the following three
     * entities in order, separated by commas. The format is `<project ID or
     * key>,<issueType ID>,<parent ID or key>`. It should be unique across mappings
     * provided in the payload. If you provide multiple mappings for the same key,
     * only one will be processed. However, the operation won't fail, so the error may
     * be hard to track down.
     *
     *  *  ***Destination project*** (Required): ID or key of the project to which the
     * issues are being moved.
     *  *  ***Destination issueType*** (Required): ID of the issueType to which the
     * issues are being moved.
     *  *  ***Destination parent ID or key*** (Optional): ID or key of the issue which
     * will become the parent of the issues being moved. Only required when the
     * destination issueType is a subtask.
     */
    targetToSourcesMapping?: {
        /**
         * An object representing the mapping of issues and data related to destination
         * entities, like fields and statuses, that are required during a bulk move.
         */
        [key: string]: TargetToSourcesMapping;
    };
}
interface IssueBulkOperationsFieldOption {
}
interface IssueBulkTransitionForWorkflow {
    /**
     * Indicates whether all the transitions of this workflow are available in the
     * transitions list or not.
     */
    isTransitionsFiltered?: boolean;
    /** List of issue keys from the request which are associated with this workflow. */
    issues?: string[];
    /**
     * List of transitions available for issues from the request which are associated
     * with this workflow.
     *
     *  **This list includes only those transitions that are common across the issues
     * in this workflow and do not involve any additional field updates.**
     */
    transitions?: SimplifiedIssueTransition[];
}
/** Issue Bulk Transition Payload */
interface IssueBulkTransitionPayload {
    /**
     * List of objects and each object has two properties:
     *
     *  *  Issues that will be bulk transitioned.
     *  *  TransitionId that corresponds to a specific transition of issues that share
     * the same workflow.
     */
    bulkTransitionInputs: BulkTransitionSubmitInput[];
    /**
     * A boolean value that indicates whether to send a bulk change notification when
     * the issues are being transitioned.
     *
     * If `true`, dispatches a bulk notification email to users about the updates.
     */
    sendBulkNotification?: boolean | null;
}
/** Issue Bulk Watch Or Unwatch Payload */
interface IssueBulkWatchOrUnwatchPayload {
    /**
     * List of issue IDs or keys which are to be bulk watched or unwatched. These IDs
     * or keys can be from different projects and issue types.
     */
    selectedIssueIdsOrKeys: string[];
}
/** The issue status change of the transition. */
interface IssueTransitionStatus {
    /** The unique ID of the status. */
    statusId?: number;
    /** The name of the status. */
    statusName?: string;
}
interface JiraCascadingSelectField {
    childOptionValue?: JiraSelectedOptionField;
    fieldId: string;
    parentOptionValue: JiraSelectedOptionField;
}
interface JiraColorField {
    color: JiraColorInput;
    fieldId: string;
}
interface JiraColorInput {
    name: string;
}
interface JiraComponentField {
    componentId: number;
}
interface JiraDateField {
    date?: JiraDateInput;
    fieldId: string;
}
interface JiraDateInput {
    formattedDate: string;
}
interface JiraDateTimeField {
    dateTime: JiraDateTimeInput;
    fieldId: string;
}
interface JiraDateTimeInput {
    formattedDateTime: string;
}
/** Edit the original estimate field. */
interface JiraDurationField {
    originalEstimateField: string;
}
interface JiraGroupInput {
    groupName: string;
}
/**
 * An object that defines the values to be updated in specified fields of an
 * issue. The structure and content of this parameter vary depending on the type
 * of field being edited. Although the order is not significant, ensure that field
 * IDs align with those in selectedActions.
 */
interface JiraIssueFields {
    /**
     * Add or clear a cascading select field:
     *
     *  *  To add, specify `optionId` for both parent and child.
     *  *  To clear the child, set its `optionId` to null.
     *  *  To clear both, set the parent's `optionId` to null.
     */
    cascadingSelectFields?: JiraCascadingSelectField[];
    /**
     * Add or clear a number field:
     *
     *  *  To add, specify a numeric `value`.
     *  *  To clear, set `value` to `null`.
     */
    clearableNumberFields?: JiraNumberField[];
    /**
     * Add or clear a color field:
     *
     *  *  To add, specify the color `name`. Available colors are: `purple`, `blue`,
     * `green`, `teal`, `yellow`, `orange`, `grey`, `dark purple`, `dark blue`, `dark
     * green`, `dark teal`, `dark yellow`, `dark orange`, `dark grey`.
     *  *  To clear, set the color `name` to an empty string.
     */
    colorFields?: JiraColorField[];
    /**
     * Add or clear a date picker field:
     *
     *  *  To add, specify the date in `d/mmm/yy` format or ISO format `dd-mm-yyyy`.
     *  *  To clear, set `formattedDate` to an empty string.
     */
    datePickerFields?: JiraDateField[];
    /**
     * Add or clear the planned start date and time:
     *
     *  *  To add, specify the date and time in ISO format for `formattedDateTime`.
     *  *  To clear, provide an empty string for `formattedDateTime`.
     */
    dateTimePickerFields?: JiraDateTimeField[];
    /** Set the issue type field by providing an `issueTypeId`. */
    issueType?: JiraIssueTypeField;
    /**
     * Edit a labels field:
     *
     *  *  Options include `ADD`, `REPLACE`, `REMOVE`, or `REMOVE_ALL` for bulk edits.
     *  *  To clear labels, use the `REMOVE_ALL` option with an empty `labels` array.
     */
    labelsFields?: JiraLabelsField[];
    /**
     * Add or clear a multi-group picker field:
     *
     *  *  To add groups, provide an array of groups with `groupName`s.
     *  *  To clear all groups, use an empty `groups` array.
     */
    multipleGroupPickerFields?: JiraMultipleGroupPickerField[];
    /**
     * Assign or unassign multiple users to/from a field:
     *
     *  *  To assign, provide an array of user `accountId`s.
     *  *  To clear, set `users` to `null`.
     */
    multipleSelectClearableUserPickerFields?: JiraMultipleSelectUserPickerField[];
    /**
     * Add or clear a multi-select field:
     *
     *  *  To add, provide an array of options with `optionId`s.
     *  *  To clear, use an empty `options` array.
     */
    multipleSelectFields?: JiraMultipleSelectField[];
    /**
     * Edit a multi-version picker field like Fix Versions/Affects Versions:
     *
     *  *  Options include `ADD`, `REPLACE`, `REMOVE`, or `REMOVE_ALL` for bulk edits.
     *  *  To clear the field, use the `REMOVE_ALL` option with an empty `versions`
     * array.
     */
    multipleVersionPickerFields?: JiraMultipleVersionPickerField[];
    /**
     * Edit a multi select components field:
     *
     *  *  Options include `ADD`, `REPLACE`, `REMOVE`, or `REMOVE_ALL` for bulk edits.
     *  *  To clear, use the `REMOVE_ALL` option with an empty `components` array.
     */
    multiselectComponents?: JiraMultiSelectComponentField;
    /** Edit the original estimate field. */
    originalEstimateField?: JiraDurationField;
    /** Set the priority of an issue by specifying a `priorityId`. */
    priority?: JiraPriorityField;
    /**
     * Add or clear a rich text field:
     *
     *  *  To add, provide `adfValue`. Note that rich text fields only support ADF
     * values.
     *  *  To clear, use an empty `richText` object.
     *
     * For ADF format details, refer to: [Atlassian Document
     * Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure).
     */
    richTextFields?: JiraRichTextField[];
    /**
     * Add or clear a single group picker field:
     *
     *  *  To add, specify the group with `groupName`.
     *  *  To clear, set `groupName` to an empty string.
     */
    singleGroupPickerFields?: JiraSingleGroupPickerField[];
    /**
     * Add or clear a single line text field:
     *
     *  *  To add, provide the `text` value.
     *  *  To clear, set `text` to an empty string.
     */
    singleLineTextFields?: JiraSingleLineTextField[];
    /**
     * Edit assignment for single select user picker fields like Assignee/Reporter:
     *
     *  *  To assign an issue, specify the user's `accountId`.
     *  *  To unassign an issue, set `user` to `null`.
     *  *  For automatic assignment, set `accountId` to `-1`.
     */
    singleSelectClearableUserPickerFields?: JiraSingleSelectUserPickerField[];
    /**
     * Add or clear a single select field:
     *
     *  *  To add, specify the option with an `optionId`.
     *  *  To clear, pass an option with `optionId` as `-1`.
     */
    singleSelectFields?: JiraSingleSelectField[];
    /**
     * Add or clear a single version picker field:
     *
     *  *  To add, specify the version with a `versionId`.
     *  *  To clear, set `versionId` to `-1`.
     */
    singleVersionPickerFields?: JiraSingleVersionPickerField[];
    status?: JiraStatusInput;
    /** Edit the time tracking field. */
    timeTrackingField?: JiraTimeTrackingField;
    /**
     * Add or clear a URL field:
     *
     *  *  To add, provide the `url` with the desired URL value.
     *  *  To clear, set `url` to an empty string.
     */
    urlFields?: JiraUrlField[];
}
/** Set the issue type field by providing an `issueTypeId`. */
interface JiraIssueTypeField {
    issueTypeId: string;
}
interface JiraLabelPropertiesInputJackson1 {
    color?: "GREY_LIGHTEST" | "GREY_LIGHTER" | "GREY" | "GREY_DARKER" | "GREY_DARKEST" | "PURPLE_LIGHTEST" | "PURPLE_LIGHTER" | "PURPLE" | "PURPLE_DARKER" | "PURPLE_DARKEST" | "BLUE_LIGHTEST" | "BLUE_LIGHTER" | "BLUE" | "BLUE_DARKER" | "BLUE_DARKEST" | "TEAL_LIGHTEST" | "TEAL_LIGHTER" | "TEAL" | "TEAL_DARKER" | "TEAL_DARKEST" | "GREEN_LIGHTEST" | "GREEN_LIGHTER" | "GREEN" | "GREEN_DARKER" | "GREEN_DARKEST" | "LIME_LIGHTEST" | "LIME_LIGHTER" | "LIME" | "LIME_DARKER" | "LIME_DARKEST" | "YELLOW_LIGHTEST" | "YELLOW_LIGHTER" | "YELLOW" | "YELLOW_DARKER" | "YELLOW_DARKEST" | "ORANGE_LIGHTEST" | "ORANGE_LIGHTER" | "ORANGE" | "ORANGE_DARKER" | "ORANGE_DARKEST" | "RED_LIGHTEST" | "RED_LIGHTER" | "RED" | "RED_DARKER" | "RED_DARKEST" | "MAGENTA_LIGHTEST" | "MAGENTA_LIGHTER" | "MAGENTA" | "MAGENTA_DARKER" | "MAGENTA_DARKEST";
    name?: string;
}
interface JiraLabelsField {
    bulkEditMultiSelectFieldOption: "ADD" | "REMOVE" | "REPLACE" | "REMOVE_ALL";
    fieldId: string;
    labelProperties?: JiraLabelPropertiesInputJackson1[];
    labels: JiraLabelsInput[];
}
interface JiraLabelsInput {
    name: string;
}
interface JiraMultipleGroupPickerField {
    fieldId: string;
    groups: JiraGroupInput[];
}
interface JiraMultipleSelectField {
    fieldId: string;
    options: JiraSelectedOptionField[];
}
interface JiraMultipleSelectUserPickerField {
    fieldId: string;
    users?: JiraUserField[];
}
interface JiraMultipleVersionPickerField {
    bulkEditMultiSelectFieldOption: "ADD" | "REMOVE" | "REPLACE" | "REMOVE_ALL";
    fieldId: string;
    versions: JiraVersionField[];
}
/**
 * Edit a multi select components field:
 *
 *  *  Options include `ADD`, `REPLACE`, `REMOVE`, or `REMOVE_ALL` for bulk edits.
 *  *  To clear, use the `REMOVE_ALL` option with an empty `components` array.
 */
interface JiraMultiSelectComponentField {
    bulkEditMultiSelectFieldOption: "ADD" | "REMOVE" | "REPLACE" | "REMOVE_ALL";
    components: JiraComponentField[];
    fieldId: string;
}
interface JiraNumberField {
    fieldId: string;
    value?: number;
}
/** Set the priority of an issue by specifying a `priorityId`. */
interface JiraPriorityField {
    priorityId: string;
}
interface JiraRichTextField {
    fieldId: string;
    richText: JiraRichTextInput;
}
interface JiraRichTextInput {
    adfValue?: {
        [key: string]: unknown;
    };
}
interface JiraSelectedOptionField {
    optionId?: number;
}
interface JiraSingleGroupPickerField {
    fieldId: string;
    group: JiraGroupInput;
}
interface JiraSingleLineTextField {
    fieldId: string;
    text: string;
}
/**
 * Add or clear a single select field:
 *
 *  *  To add, specify the option with an `optionId`.
 *  *  To clear, pass an option with `optionId` as `-1`.
 */
interface JiraSingleSelectField {
    fieldId: string;
    option: JiraSelectedOptionField;
}
interface JiraSingleSelectUserPickerField {
    fieldId: string;
    user?: JiraUserField;
}
interface JiraSingleVersionPickerField {
    fieldId: string;
    version: JiraVersionField;
}
interface JiraStatusInput {
    statusId: string;
}
/** Edit the time tracking field. */
interface JiraTimeTrackingField {
    timeRemaining: string;
}
interface JiraUrlField {
    fieldId: string;
    url: string;
}
interface JiraUserField {
    accountId: string;
}
interface JiraVersionField {
    versionId?: string;
}
/** List of string of inputs */
interface MandatoryFieldValue {
    /** If `true`, will try to retain original non-null issue field values on move. */
    retain?: boolean | null;
    /** Will treat as `MandatoryFieldValue` if type is `raw` or `empty` */
    type?: "adf" | "raw" | null;
    /** Value for each field. Provide a `list of strings` for non-ADF fields. */
    value: string[];
}
/** An object notation input */
interface MandatoryFieldValueForAdf {
    /** If `true`, will try to retain original non-null issue field values on move. */
    retain?: boolean | null;
    /** Will treat as `MandatoryFieldValueForADF` if type is `adf` */
    type: "adf" | "raw";
    /**
     * Value for each field. Accepts Atlassian Document Format (ADF) for rich text
     * fields like `description`, `environments`. For ADF format details, refer to:
     * [Atlassian Document
     * Format](https://developer.atlassian.com/cloud/jira/platform/apis/document/structure)
     */
    value: {
        [key: string]: unknown;
    };
}
interface SimplifiedIssueTransition {
    /** The issue status change of the transition. */
    to?: IssueTransitionStatus;
    /** The unique ID of the transition. */
    transitionId?: number;
    /** The name of the transition. */
    transitionName?: string;
}
interface SubmittedBulkOperation {
    taskId?: string;
}
/**
 * Classification mapping for classifications in source issues to respective
 * target classification.
 */
interface TargetClassification {
    /**
     * An object with the key as the ID of the target classification and value with
     * the list of the IDs of the current source classifications.
     */
    classifications: {
        [key: string]: string[];
    };
    /** ID of the source issueType to which issues present in `issueIdOrKeys` belongs. */
    issueType?: string;
    /**
     * ID or key of the source project to which issues present in `issueIdOrKeys`
     * belongs.
     */
    projectKeyOrId?: string;
}
/** Field mapping for mandatory fields in target */
interface TargetMandatoryFields {
    /** Contains the value of mandatory fields */
    fields: {
        /** Can contain multiple field values of following types depending on `type` key */
        [key: string]: BulkOperationFields;
    };
}
/**
 * Status mapping for statuses in source workflow to respective target status in
 * target workflow.
 */
interface TargetStatus {
    /**
     * An object with the key as the ID of the target status and value with the list
     * of the IDs of the current source statuses.
     */
    statuses: {
        [key: string]: string[];
    };
}
/**
 * An object representing the mapping of issues and data related to destination
 * entities, like fields and statuses, that are required during a bulk move.
 */
interface TargetToSourcesMapping {
    /**
     * If `true`, when issues are moved into this target group, they will adopt the
     * target project's default classification, if they don't have a classification
     * already. If they do have a classification, it will be kept the same even after
     * the move. Leave `targetClassification` empty when using this.
     *
     * If `false`, you must provide a `targetClassification` mapping for each
     * classification associated with the selected issues.
     *
     * [Benefit from data
     * classification](https://support.atlassian.com/security-and-access-policies/docs/what-is-data-classification/)
     */
    inferClassificationDefaults: boolean;
    /**
     * If `true`, values from the source issues will be retained for the mandatory
     * fields in the field configuration of the destination project. The
     * `targetMandatoryFields` property shouldn't be defined.
     *
     * If `false`, the user is required to set values for mandatory fields present in
     * the field configuration of the destination project. Provide input by defining
     * the `targetMandatoryFields` property
     */
    inferFieldDefaults: boolean;
    /**
     * If `true`, the statuses of issues being moved in this target group that are not
     * present in the target workflow will be changed to the default status of the
     * target workflow (see below). Leave `targetStatus` empty when using this.
     *
     * If `false`, you must provide a `targetStatus` for each status not present in
     * the target workflow.
     *
     * The default status in a workflow is referred to as the "initial status". Each
     * workflow has its own unique initial status. When an issue is created, it is
     * automatically assigned to this initial status. Read more about configuring
     * initial statuses: [Configure the initial status | Atlassian
     * Support.](https://support.atlassian.com/jira-cloud-administration/docs/configure-the-initial-status/)
     */
    inferStatusDefaults: boolean;
    /**
     * When an issue is moved, its subtasks (if there are any) need to be moved with
     * it. `inferSubtaskTypeDefault` helps with moving the subtasks by picking a
     * random subtask type in the target project.
     *
     * If `true`, subtasks will automatically move to the same project as their parent.
     *
     * When they move:
     *
     *  *  Their `issueType` will be set to the default for subtasks in the target
     * project.
     *  *  Values for mandatory fields will be retained from the source issues
     *  *  Specifying separate mapping for implicit subtasks won’t be allowed.
     *
     * If `false`, you must manually move the subtasks. They will retain the parent
     * which they had in the current project after being moved.
     */
    inferSubtaskTypeDefault: boolean;
    /** List of issue IDs or keys to be moved. */
    issueIdsOrKeys?: string[];
    /**
     * List of the objects containing classifications in the source issues and their
     * new values which need to be set during the bulk move operation.
     *
     * It is mandatory to provide source classification to target classification
     * mapping when the source classification is invalid for the target project and
     * issue type.
     *
     *  *  **You should only define this property when `inferClassificationDefaults`
     * is `false`.**
     *  *  **In order to provide mapping for issues which don't have a classification,
     * use `"-1"`.**
     */
    targetClassification?: (TargetClassification | null)[] | null;
    /**
     * List of objects containing mandatory fields in the target field configuration
     * and new values that need to be set during the bulk move operation.
     *
     * The new values will only be applied if the field is mandatory in the target
     * project and at least one issue from the source has that field empty, or if the
     * field context is different in the target project (e.g. project-scoped version
     * fields).
     *
     * **You should only define this property when `inferFieldDefaults` is `false`.**
     */
    targetMandatoryFields?: (TargetMandatoryFields | null)[] | null;
    /**
     * List of the objects containing statuses in the source workflow and their new
     * values which need to be set during the bulk move operation.
     *
     * The new values will only be applied if the source status is invalid for the
     * target project and issue type.
     *
     * It is mandatory to provide source status to target status mapping when the
     * source status is invalid for the target project and issue type.
     *
     * **You should only define this property when `inferStatusDefaults` is `false`.**
     */
    targetStatus?: (TargetStatus | null)[] | null;
}

interface IssueCommentListRequestBean {
    /** The list of comment IDs. A maximum of 1000 IDs can be specified. */
    ids: number[];
}
/** A page of items. */
interface PageBeanComment {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Comment[];
}
/** A page of comments. */
interface PageOfComments extends Record<string, unknown> {
    /** The list of comments. */
    comments?: Comment[];
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
}

/** Field association for example PROJECT\_ID. */
interface AssociationContextObject {
    identifier?: {
        [key: string]: unknown;
    };
    type: string;
}
/** Details of field associations with projects. */
interface FieldAssociationsRequest {
    /** Contexts to associate/unassociate the fields with. */
    associationContexts: AssociationContextObject[];
    /** Fields to associate/unassociate with projects. */
    fields: FieldIdentifierObject[];
}
/** Identifier for a field for example FIELD\_ID. */
interface FieldIdentifierObject {
    identifier?: {
        [key: string]: unknown;
    };
    type: string;
}

/** Details of the contextual configuration for a custom field. */
interface BulkContextualConfiguration {
    /** The field configuration. */
    configuration?: unknown;
    /** The ID of the custom field. */
    customFieldId: string;
    /** The ID of the field context the configuration is associated with. */
    fieldContextId: string;
    /** The ID of the configuration. */
    id: string;
    /** The field value schema. */
    schema?: unknown;
}
/** List of custom fields identifiers which will be used to filter configurations */
interface ConfigurationsListParameters {
    /**
     * List of IDs or keys of the custom fields. It can be a mix of IDs and keys in
     * the same query.
     */
    fieldIdsOrKeys: string[];
}
/** Details of the contextual configuration for a custom field. */
interface ContextualConfiguration {
    /** The field configuration. */
    configuration?: unknown;
    /** The ID of the field context the configuration is associated with. */
    fieldContextId: string;
    /** The ID of the configuration. */
    id: string;
    /** The field value schema. */
    schema?: unknown;
}
/** Details of configurations for a custom field. */
interface CustomFieldConfigurations {
    /** The list of custom field configuration details. */
    configurations: ContextualConfiguration[];
}
/** A page of items. */
interface PageBeanBulkContextualConfiguration {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: BulkContextualConfiguration[];
}
/** A page of items. */
interface PageBeanContextualConfiguration {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: ContextualConfiguration[];
}

/** The project and issue type mapping with a matching custom field context. */
interface ContextForProjectAndIssueType {
    /** The ID of the custom field context. */
    contextId: string;
    /** The ID of the issue type. */
    issueTypeId: string;
    /** The ID of the project. */
    projectId: string;
}
/** The details of a created custom field context. */
interface CreateCustomFieldContext {
    /** The description of the context. */
    description?: string;
    /** The ID of the context. */
    id?: string;
    /**
     * The list of issue types IDs for the context. If the list is empty, the context
     * refers to all issue types.
     */
    issueTypeIds?: string[];
    /** The name of the context. */
    name: string;
    /**
     * The list of project IDs associated with the context. If the list is empty, the
     * context is global.
     */
    projectIds?: string[];
}
/** The details of a custom field context. */
interface CustomFieldContext {
    /** The description of the context. */
    description: string;
    /** The ID of the context. */
    id: string;
    /** Whether the context apply to all issue types. */
    isAnyIssueType: boolean;
    /** Whether the context is global. */
    isGlobalContext: boolean;
    /** The name of the context. */
    name: string;
}
type CustomFieldContextDefaultValue = CustomFieldContextDefaultValueCascadingOption | CustomFieldContextDefaultValueMultipleOption | CustomFieldContextDefaultValueSingleOption | CustomFieldContextSingleUserPickerDefaults | CustomFieldContextDefaultValueMultiUserPicker | CustomFieldContextDefaultValueSingleGroupPicker | CustomFieldContextDefaultValueMultipleGroupPicker | CustomFieldContextDefaultValueDate | CustomFieldContextDefaultValueDateTime | CustomFieldContextDefaultValueUrl | CustomFieldContextDefaultValueProject | CustomFieldContextDefaultValueFloat | CustomFieldContextDefaultValueLabels | CustomFieldContextDefaultValueTextField | CustomFieldContextDefaultValueTextArea | CustomFieldContextDefaultValueReadOnly | CustomFieldContextDefaultValueSingleVersionPicker | CustomFieldContextDefaultValueMultipleVersionPicker | CustomFieldContextDefaultValueForgeStringField | CustomFieldContextDefaultValueForgeMultiStringField | CustomFieldContextDefaultValueForgeObjectField | CustomFieldContextDefaultValueForgeDateTimeField | CustomFieldContextDefaultValueForgeGroupField | CustomFieldContextDefaultValueForgeMultiGroupField | CustomFieldContextDefaultValueForgeNumberField | CustomFieldContextDefaultValueForgeUserField | CustomFieldContextDefaultValueForgeMultiUserField;
/** The default value for a cascading select custom field. */
interface CustomFieldContextDefaultValueCascadingOption {
    /** The ID of the default cascading option. */
    cascadingOptionId?: string;
    /** The ID of the context. */
    contextId: string;
    /** The ID of the default option. */
    optionId: string;
    type: string;
}
/** The default value for a Date custom field. */
interface CustomFieldContextDefaultValueDate {
    /** The default date in ISO format. Ignored if `useCurrent` is true. */
    date?: string;
    type: string;
    /** Whether to use the current date. */
    useCurrent?: boolean;
}
/** The default value for a date time custom field. */
interface CustomFieldContextDefaultValueDateTime {
    /** The default date-time in ISO format. Ignored if `useCurrent` is true. */
    dateTime?: string;
    type: string;
    /** Whether to use the current date. */
    useCurrent?: boolean;
}
/** Default value for a float (number) custom field. */
interface CustomFieldContextDefaultValueFloat {
    /** The default floating-point number. */
    number: number;
    type: string;
}
/** The default value for a Forge date time custom field. */
interface CustomFieldContextDefaultValueForgeDateTimeField {
    /** The ID of the context. */
    contextId: string;
    /** The default date-time in ISO format. Ignored if `useCurrent` is true. */
    dateTime?: string;
    type: string;
    /** Whether to use the current date. */
    useCurrent?: boolean;
}
/** The default value for a Forge group custom field. */
interface CustomFieldContextDefaultValueForgeGroupField {
    /** The ID of the context. */
    contextId: string;
    /** The ID of the the default group. */
    groupId: string;
    type: string;
}
/** The default value for a Forge collection of groups custom field. */
interface CustomFieldContextDefaultValueForgeMultiGroupField {
    /** The ID of the context. */
    contextId: string;
    /** The IDs of the default groups. */
    groupIds: string[];
    type: string;
}
/** The default text for a Forge collection of strings custom field. */
interface CustomFieldContextDefaultValueForgeMultiStringField {
    type: string;
    /** List of string values. The maximum length for a value is 254 characters. */
    values?: string[];
}
/** Defaults for a Forge collection of users custom field. */
interface CustomFieldContextDefaultValueForgeMultiUserField {
    /** The IDs of the default users. */
    accountIds: string[];
    /** The ID of the context. */
    contextId: string;
    type: string;
}
/** Default value for a Forge number custom field. */
interface CustomFieldContextDefaultValueForgeNumberField {
    /** The ID of the context. */
    contextId: string;
    /** The default floating-point number. */
    number: number;
    type: string;
}
/** The default value for a Forge object custom field. */
interface CustomFieldContextDefaultValueForgeObjectField {
    /** The default JSON object. */
    object?: {
        [key: string]: unknown;
    };
    type: string;
}
/** The default text for a Forge string custom field. */
interface CustomFieldContextDefaultValueForgeStringField {
    /** The ID of the context. */
    contextId: string;
    /** The default text. The maximum length is 254 characters. */
    text?: string;
    type: string;
}
/** Defaults for a Forge user custom field. */
interface CustomFieldContextDefaultValueForgeUserField {
    /** The ID of the default user. */
    accountId: string;
    /** The ID of the context. */
    contextId: string;
    type: string;
    /** Filter for a User Picker (single) custom field. */
    userFilter: UserFilter;
}
/** Default value for a labels custom field. */
interface CustomFieldContextDefaultValueLabels {
    /** The default labels value. */
    labels: string[];
    type: string;
}
/** The default value for a multiple group picker custom field. */
interface CustomFieldContextDefaultValueMultipleGroupPicker {
    /** The ID of the context. */
    contextId: string;
    /** The IDs of the default groups. */
    groupIds: string[];
    type: string;
}
/** The default value for a multi-select custom field. */
interface CustomFieldContextDefaultValueMultipleOption {
    /** The ID of the context. */
    contextId: string;
    /** The list of IDs of the default options. */
    optionIds: string[];
    type: string;
}
/** The default value for a multiple version picker custom field. */
interface CustomFieldContextDefaultValueMultipleVersionPicker {
    type: string;
    /** The IDs of the default versions. */
    versionIds: string[];
    /**
     * The order the pickable versions are displayed in. If not provided, the
     * released-first order is used. Available version orders are `"releasedFirst"`
     * and `"unreleasedFirst"`.
     */
    versionOrder?: string;
}
/** The default value for a User Picker (multiple) custom field. */
interface CustomFieldContextDefaultValueMultiUserPicker {
    /** The IDs of the default users. */
    accountIds: string[];
    /** The ID of the context. */
    contextId: string;
    type: string;
}
/** The default value for a project custom field. */
interface CustomFieldContextDefaultValueProject {
    /** The ID of the context. */
    contextId: string;
    /** The ID of the default project. */
    projectId: string;
    type: string;
}
/** The default text for a read only custom field. */
interface CustomFieldContextDefaultValueReadOnly {
    /** The default text. The maximum length is 255 characters. */
    text?: string;
    type: string;
}
/** The default value for a group picker custom field. */
interface CustomFieldContextDefaultValueSingleGroupPicker {
    /** The ID of the context. */
    contextId: string;
    /** The ID of the the default group. */
    groupId: string;
    type: string;
}
/** The default value for a single select custom field. */
interface CustomFieldContextDefaultValueSingleOption {
    /** The ID of the context. */
    contextId: string;
    /** The ID of the default option. */
    optionId: string;
    type: string;
}
/** The default value for a version picker custom field. */
interface CustomFieldContextDefaultValueSingleVersionPicker {
    type: string;
    /** The ID of the default version. */
    versionId: string;
    /**
     * The order the pickable versions are displayed in. If not provided, the
     * released-first order is used. Available version orders are `"releasedFirst"`
     * and `"unreleasedFirst"`.
     */
    versionOrder?: string;
}
/** The default text for a text area custom field. */
interface CustomFieldContextDefaultValueTextArea {
    /** The default text. The maximum length is 32767 characters. */
    text?: string;
    type: string;
}
/** The default text for a text custom field. */
interface CustomFieldContextDefaultValueTextField {
    /** The default text. The maximum length is 254 characters. */
    text?: string;
    type: string;
}
/** Default values to update. */
interface CustomFieldContextDefaultValueUpdate {
    defaultValues?: CustomFieldContextDefaultValue[];
}
/** The default value for a URL custom field. */
interface CustomFieldContextDefaultValueUrl {
    /** The ID of the context. */
    contextId: string;
    type: string;
    /** The default URL. */
    url: string;
}
/** Details of a context to project association. */
interface CustomFieldContextProjectMapping {
    /** The ID of the context. */
    contextId: string;
    /** Whether context is global. */
    isGlobalContext?: boolean;
    /** The ID of the project. */
    projectId?: string;
}
/** Defaults for a User Picker (single) custom field. */
interface CustomFieldContextSingleUserPickerDefaults {
    /** The ID of the default user. */
    accountId: string;
    /** The ID of the context. */
    contextId: string;
    type: string;
    /** Filter for a User Picker (single) custom field. */
    userFilter: UserFilter;
}
/** Details of a custom field context. */
interface CustomFieldContextUpdateDetails {
    /**
     * The description of the custom field context. The maximum length is 255
     * characters.
     */
    description?: string;
    /**
     * The name of the custom field context. The name must be unique. The maximum
     * length is 255 characters.
     */
    name?: string;
}
/** Mapping of an issue type to a context. */
interface IssueTypeToContextMapping {
    /** The ID of the context. */
    contextId: string;
    /** Whether the context is mapped to any issue type. */
    isAnyIssueType?: boolean;
    /** The ID of the issue type. */
    issueTypeId?: string;
}
/** A page of items. */
interface PageBeanContextForProjectAndIssueType {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: ContextForProjectAndIssueType[];
}
/** A page of items. */
interface PageBeanCustomFieldContext {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: CustomFieldContext[];
}
/** A page of items. */
interface PageBeanCustomFieldContextDefaultValue {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: CustomFieldContextDefaultValue[];
}
/** A page of items. */
interface PageBeanCustomFieldContextProjectMapping {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: CustomFieldContextProjectMapping[];
}
/** A page of items. */
interface PageBeanIssueTypeToContextMapping {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: IssueTypeToContextMapping[];
}
/** A list of project IDs. */
interface ProjectIds {
    /** The IDs of projects. */
    projectIds: string[];
}
/** The project and issue type mapping. */
interface ProjectIssueTypeMapping {
    /** The ID of the issue type. */
    issueTypeId: string;
    /** The ID of the project. */
    projectId: string;
}
/** The project and issue type mappings. */
interface ProjectIssueTypeMappings {
    /** The project and issue type mappings. */
    mappings: ProjectIssueTypeMapping[];
}
/** Filter for a User Picker (single) custom field. */
interface UserFilter extends Record<string, unknown> {
    /** Whether the filter is enabled. */
    enabled: boolean;
    /**
     * User groups autocomplete suggestion users must belong to. If not provided, the
     * default values are used. A maximum of 10 groups can be provided.
     */
    groups?: string[];
    /**
     * Roles that autocomplete suggestion users must belong to. If not provided, the
     * default values are used. A maximum of 10 roles can be provided.
     */
    roleIds?: number[];
}

/**
 * Defines the behavior of the option within the global context. If this property
 * is set, even if set to an empty object, then the option is available in all
 * projects.
 */
interface GlobalScopeBean {
    /**
     * Defines the behavior of the option in the global context.If notSelectable is
     * set, the option cannot be set as the field's value. This is useful for
     * archiving an option that has previously been selected but shouldn't be used
     * anymore.If defaultValue is set, the option is selected by default.
     */
    attributes?: ("notSelectable" | "defaultValue")[];
}
/** Details of the options for a select list issue field. */
interface IssueFieldOption {
    /** Details of the projects the option is available in. */
    config?: IssueFieldOptionConfiguration;
    /**
     * The unique identifier for the option. This is only unique within the select
     * field's set of options.
     */
    id: number;
    /**
     * The properties of the object, as arbitrary key-value pairs. These properties
     * can be searched using JQL, if the extractions (see [Issue Field Option Property
     * Index](https://developer.atlassian.com/cloud/jira/platform/modules/issue-field-option-property-index/))
     * are defined in the descriptor for the issue field module.
     */
    properties?: {
        [key: string]: unknown;
    };
    /** The option's name, which is displayed in Jira. */
    value: string;
}
/** Details of the projects the option is available in. */
interface IssueFieldOptionConfiguration {
    /** DEPRECATED */
    attributes?: ("notSelectable" | "defaultValue")[];
    /**
     * Defines the projects that the option is available in. If the scope is not
     * defined, then the option is available in all projects.
     */
    scope?: IssueFieldOptionScopeBean;
}
interface IssueFieldOptionCreateBean extends Record<string, unknown> {
    /** Details of the projects the option is available in. */
    config?: IssueFieldOptionConfiguration;
    /**
     * The properties of the option as arbitrary key-value pairs. These properties can
     * be searched using JQL, if the extractions (see
     * https://developer.atlassian.com/cloud/jira/platform/modules/issue-field-option-property-index/)
     * are defined in the descriptor for the issue field module.
     */
    properties?: {
        [key: string]: unknown;
    };
    /** The option's name, which is displayed in Jira. */
    value: string;
}
/**
 * Defines the projects that the option is available in. If the scope is not
 * defined, then the option is available in all projects.
 */
interface IssueFieldOptionScopeBean {
    /**
     * Defines the behavior of the option within the global context. If this property
     * is set, even if set to an empty object, then the option is available in all
     * projects.
     */
    global?: GlobalScopeBean;
    /** DEPRECATED */
    projects?: number[];
    /**
     * Defines the projects in which the option is available and the behavior of the
     * option within each project. Specify one object per project. The behavior of the
     * option in a project context overrides the behavior in the global context.
     */
    projects2?: ProjectScopeBean[];
}
/** A page of items. */
interface PageBeanIssueFieldOption {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: IssueFieldOption[];
}
interface ProjectScopeBean {
    /**
     * Defines the behavior of the option in the project.If notSelectable is set, the
     * option cannot be set as the field's value. This is useful for archiving an
     * option that has previously been selected but shouldn't be used anymore.If
     * defaultValue is set, the option is selected by default.
     */
    attributes?: ("notSelectable" | "defaultValue")[];
    /** The ID of the project that the option's behavior applies to. */
    id?: number;
}

/** A list of issue IDs and the value to update a custom field to. */
interface CustomFieldValueUpdate {
    /** The list of issue IDs. */
    issueIds: number[];
    /**
     * The value for the custom field. The value must be compatible with the [custom
     * field
     * type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#data-types)
     * as follows:
     *
     *  *  `string` the value must be a string.
     *  *  `number` the value must be a number.
     *  *  `datetime` the value must be a string that represents a date in the ISO
     * format or the simplified extended ISO format. For example,
     * `"2023-01-18T12:00:00-03:00"` or `"2023-01-18T12:00:00.000Z"`. However, the
     * milliseconds part is ignored.
     *  *  `user` the value must be an object that contains the `accountId` field.
     *  *  `group` the value must be an object that contains the group `name` or
     * `groupId` field. Because group names can change, we recommend using `groupId`.
     *
     * A list of appropriate values must be provided if the field is of the `list`
     * [collection
     * type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#collection-types).
     */
    value: unknown;
}
/** Details of updates for a custom field. */
interface CustomFieldValueUpdateDetails {
    /** The list of custom field update details. */
    updates?: CustomFieldValueUpdate[];
}
/** A custom field and its new value with a list of issue to update. */
interface MultipleCustomFieldValuesUpdate {
    /** The ID or key of the custom field. For example, `customfield_10010`. */
    customField: string;
    /** The list of issue IDs. */
    issueIds: number[];
    /**
     * The value for the custom field. The value must be compatible with the [custom
     * field
     * type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#data-types)
     * as follows:
     *
     *  *  `string` the value must be a string.
     *  *  `number` the value must be a number.
     *  *  `datetime` the value must be a string that represents a date in the ISO
     * format or the simplified extended ISO format. For example,
     * `"2023-01-18T12:00:00-03:00"` or `"2023-01-18T12:00:00.000Z"`. However, the
     * milliseconds part is ignored.
     *  *  `user` the value must be an object that contains the `accountId` field.
     *  *  `group` the value must be an object that contains the group `name` or
     * `groupId` field. Because group names can change, we recommend using `groupId`.
     *
     * A list of appropriate values must be provided if the field is of the `list`
     * [collection
     * type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/#collection-types).
     */
    value: unknown;
}
/** List of updates for a custom fields. */
interface MultipleCustomFieldValuesUpdateDetails {
    updates?: MultipleCustomFieldValuesUpdate[];
}

/** Details of a field configuration to issue type mappings. */
interface AssociateFieldConfigurationsWithIssueTypesRequest {
    /** Field configuration to issue type mappings. */
    mappings: FieldConfigurationToIssueTypeMapping[];
}
/** Details of a field configuration. */
interface FieldConfiguration {
    /** The description of the field configuration. */
    description: string;
    /** The ID of the field configuration. */
    id: number;
    /** Whether the field configuration is the default. */
    isDefault?: boolean;
    /** The name of the field configuration. */
    name: string;
}
/** Details of a field configuration. */
interface FieldConfigurationDetails {
    /** The description of the field configuration. */
    description?: string;
    /** The name of the field configuration. Must be unique. */
    name: string;
}
/** The field configuration for an issue type. */
interface FieldConfigurationIssueTypeItem {
    /** The ID of the field configuration. */
    fieldConfigurationId: string;
    /** The ID of the field configuration scheme. */
    fieldConfigurationSchemeId: string;
    /**
     * The ID of the issue type or *default*. When set to *default* this field
     * configuration issue type item applies to all issue types without a field
     * configuration.
     */
    issueTypeId: string;
}
/** A field within a field configuration. */
interface FieldConfigurationItem {
    /** The description of the field within the field configuration. */
    description?: string;
    /** The ID of the field within the field configuration. */
    id: string;
    /** Whether the field is hidden in the field configuration. */
    isHidden?: boolean;
    /** Whether the field is required in the field configuration. */
    isRequired?: boolean;
    /** The renderer type for the field within the field configuration. */
    renderer?: string;
}
/** Details of field configuration items. */
interface FieldConfigurationItemsDetails {
    /** Details of fields in a field configuration. */
    fieldConfigurationItems: FieldConfigurationItem[];
}
/** Details of a field configuration scheme. */
interface FieldConfigurationScheme {
    /** The description of the field configuration scheme. */
    description?: string;
    /** The ID of the field configuration scheme. */
    id: string;
    /** The name of the field configuration scheme. */
    name: string;
}
/** Associated field configuration scheme and project. */
interface FieldConfigurationSchemeProjectAssociation {
    /**
     * The ID of the field configuration scheme. If the field configuration scheme ID
     * is `null`, the operation assigns the default field configuration scheme.
     */
    fieldConfigurationSchemeId?: string;
    /** The ID of the project. */
    projectId: string;
}
/** Project list with assigned field configuration schema. */
interface FieldConfigurationSchemeProjects {
    /** Details of a field configuration scheme. */
    fieldConfigurationScheme?: FieldConfigurationScheme;
    /** The IDs of projects using the field configuration scheme. */
    projectIds: string[];
}
/** The field configuration to issue type mapping. */
interface FieldConfigurationToIssueTypeMapping {
    /** The ID of the field configuration. */
    fieldConfigurationId: string;
    /**
     * The ID of the issue type or *default*. When set to *default* this field
     * configuration issue type item applies to all issue types without a field
     * configuration. An issue type can be included only once in a request.
     */
    issueTypeId: string;
}
/** The list of issue type IDs to be removed from the field configuration scheme. */
interface IssueTypeIdsToRemove {
    /**
     * The list of issue type IDs. Must contain unique values not longer than 255
     * characters and not be empty. Maximum of 100 IDs.
     */
    issueTypeIds: string[];
}
/** A page of items. */
interface PageBeanFieldConfigurationDetails {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: FieldConfigurationDetails[];
}
/** A page of items. */
interface PageBeanFieldConfigurationIssueTypeItem {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: FieldConfigurationIssueTypeItem[];
}
/** A page of items. */
interface PageBeanFieldConfigurationItem {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: FieldConfigurationItem[];
}
/** A page of items. */
interface PageBeanFieldConfigurationScheme {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: FieldConfigurationScheme[];
}
/** A page of items. */
interface PageBeanFieldConfigurationSchemeProjects {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: FieldConfigurationSchemeProjects[];
}
/** The details of the field configuration scheme. */
interface UpdateFieldConfigurationSchemeDetails {
    /** The description of the field configuration scheme. */
    description?: string;
    /** The name of the field configuration scheme. The name must be unique. */
    name: string;
}

/** A context. */
interface Context {
    /** The ID of the context. */
    id?: number;
    /** The name of the context. */
    name?: string;
    /** The scope of the context. */
    scope?: Scope;
}
interface CustomFieldDefinitionJsonBean {
    /** The description of the custom field, which is displayed in Jira. */
    description?: string;
    /**
     * The name of the custom field, which is displayed in Jira. This is not the
     * unique identifier.
     */
    name: string;
    /**
     * The searcher defines the way the field is searched in Jira. For example,
     * *com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher*.
     * The search UI (basic search and JQL search) will display different operations
     * and values for the field, based on the field searcher. You must specify a
     * searcher that is valid for the field type, as listed below (abbreviated values
     * shown):
     *
     *  *  `cascadingselect`: `cascadingselectsearcher`
     *  *  `datepicker`: `daterange`
     *  *  `datetime`: `datetimerange`
     *  *  `float`: `exactnumber` or `numberrange`
     *  *  `grouppicker`: `grouppickersearcher`
     *  *  `importid`: `exactnumber` or `numberrange`
     *  *  `labels`: `labelsearcher`
     *  *  `multicheckboxes`: `multiselectsearcher`
     *  *  `multigrouppicker`: `multiselectsearcher`
     *  *  `multiselect`: `multiselectsearcher`
     *  *  `multiuserpicker`: `userpickergroupsearcher`
     *  *  `multiversion`: `versionsearcher`
     *  *  `project`: `projectsearcher`
     *  *  `radiobuttons`: `multiselectsearcher`
     *  *  `readonlyfield`: `textsearcher`
     *  *  `select`: `multiselectsearcher`
     *  *  `textarea`: `textsearcher`
     *  *  `textfield`: `textsearcher`
     *  *  `url`: `exacttextsearcher`
     *  *  `userpicker`: `userpickergroupsearcher`
     *  *  `version`: `versionsearcher`
     *
     * If no searcher is provided, the field isn't searchable. However, [Forge custom
     * fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/#jira-custom-field-type--beta-)
     * have a searcher set automatically, so are always searchable.
     */
    searcherKey?: "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:daterange" | "com.atlassian.jira.plugin.system.customfieldtypes:datetimerange" | "com.atlassian.jira.plugin.system.customfieldtypes:exactnumber" | "com.atlassian.jira.plugin.system.customfieldtypes:exacttextsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:labelsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:multiselectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:numberrange" | "com.atlassian.jira.plugin.system.customfieldtypes:projectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:textsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:userpickergroupsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:versionsearcher";
    /**
     * The type of the custom field. These built-in custom field types are available:
     *
     *  *  `cascadingselect`: Enables values to be selected from two levels of select
     * lists (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:cascadingselect`)
     *  *  `datepicker`: Stores a date using a picker control (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:datepicker`)
     *  *  `datetime`: Stores a date with a time component (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:datetime`)
     *  *  `float`: Stores and validates a numeric (floating point) input (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:float`)
     *  *  `grouppicker`: Stores a user group using a picker control (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:grouppicker`)
     *  *  `importid`: A read-only field that stores the ID the issue had in the
     * system it was imported from (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:importid`)
     *  *  `labels`: Stores labels (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:labels`)
     *  *  `multicheckboxes`: Stores multiple values using checkboxes (value: ``)
     *  *  `multigrouppicker`: Stores multiple user groups using a picker control
     * (value: ``)
     *  *  `multiselect`: Stores multiple values using a select list (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:multicheckboxes`)
     *  *  `multiuserpicker`: Stores multiple users using a picker control (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:multigrouppicker`)
     *  *  `multiversion`: Stores multiple versions from the versions available in a
     * project using a picker control (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:multiversion`)
     *  *  `project`: Stores a project from a list of projects that the user is
     * permitted to view (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:project`)
     *  *  `radiobuttons`: Stores a value using radio buttons (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:radiobuttons`)
     *  *  `readonlyfield`: Stores a read-only text value, which can only be populated
     * via the API (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:readonlyfield`)
     *  *  `select`: Stores a value from a configurable list of options (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:select`)
     *  *  `textarea`: Stores a long text string using a multiline text area (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:textarea`)
     *  *  `textfield`: Stores a text string using a single-line text box (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:textfield`)
     *  *  `url`: Stores a URL (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:url`)
     *  *  `userpicker`: Stores a user using a picker control (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:userpicker`)
     *  *  `version`: Stores a version using a picker control (value:
     * `com.atlassian.jira.plugin.system.customfieldtypes:version`)
     *
     * To create a field based on a [Forge custom field
     * type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/#jira-custom-field-type--beta-),
     * use the ID of the Forge custom field type as the value. For example,
     * `ari:cloud:ecosystem::extension/e62f20a2-4b61-4dbe-bfb9-9a88b5e3ac84/548c5df1-24aa-4f7c-bbbb-3038d947cb05/static/my-cf-type-key`.
     */
    type: string;
}
/** Details of a field. */
interface Field {
    /** Number of contexts where the field is used. */
    contextsCount?: number;
    /** The description of the field. */
    description?: string;
    /** The ID of the field. */
    id: string;
    /** Whether the field is locked. */
    isLocked?: boolean;
    /** Whether the field is shown on screen or not. */
    isUnscreenable?: boolean;
    /** The key of the field. */
    key?: string;
    /** Information about the most recent use of a field. */
    lastUsed?: FieldLastUsed;
    /** The name of the field. */
    name: string;
    /** Number of projects where the field is used. */
    projectsCount?: number;
    /** The schema of a field. */
    schema: JsonTypeBean;
    /** Number of screens where the field is used. */
    screensCount?: number;
    /** The searcher key of the field. Returned for custom fields. */
    searcherKey?: string;
    /** The stable ID of the field. */
    stableId?: string;
}
/** Information about the most recent use of a field. */
interface FieldLastUsed {
    /**
     * Last used value type:
     *
     *  *  *TRACKED*: field is tracked and a last used date is available.
     *  *  *NOT\_TRACKED*: field is not tracked, last used date is not available.
     *  *  *NO\_INFORMATION*: field is tracked, but no last used date is available.
     */
    type?: "TRACKED" | "NOT_TRACKED" | "NO_INFORMATION";
    /** The date when the value of the field last changed. */
    value?: string;
}
/** A page of items. */
interface PageBeanContext {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Context[];
}
/** A page of items. */
interface PageBeanField {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Field[];
}
/** Details of a custom field. */
interface UpdateCustomFieldDetails {
    /** The description of the custom field. The maximum length is 40000 characters. */
    description?: string;
    /**
     * The name of the custom field. It doesn't have to be unique. The maximum length
     * is 255 characters.
     */
    name?: string;
    /**
     * The searcher that defines the way the field is searched in Jira. It can be set
     * to `null`, otherwise you must specify the valid searcher for the field type, as
     * listed below (abbreviated values shown):
     *
     *  *  `cascadingselect`: `cascadingselectsearcher`
     *  *  `datepicker`: `daterange`
     *  *  `datetime`: `datetimerange`
     *  *  `float`: `exactnumber` or `numberrange`
     *  *  `grouppicker`: `grouppickersearcher`
     *  *  `importid`: `exactnumber` or `numberrange`
     *  *  `labels`: `labelsearcher`
     *  *  `multicheckboxes`: `multiselectsearcher`
     *  *  `multigrouppicker`: `multiselectsearcher`
     *  *  `multiselect`: `multiselectsearcher`
     *  *  `multiuserpicker`: `userpickergroupsearcher`
     *  *  `multiversion`: `versionsearcher`
     *  *  `project`: `projectsearcher`
     *  *  `radiobuttons`: `multiselectsearcher`
     *  *  `readonlyfield`: `textsearcher`
     *  *  `select`: `multiselectsearcher`
     *  *  `textarea`: `textsearcher`
     *  *  `textfield`: `textsearcher`
     *  *  `url`: `exacttextsearcher`
     *  *  `userpicker`: `userpickergroupsearcher`
     *  *  `version`: `versionsearcher`
     */
    searcherKey?: "com.atlassian.jira.plugin.system.customfieldtypes:cascadingselectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:daterange" | "com.atlassian.jira.plugin.system.customfieldtypes:datetimerange" | "com.atlassian.jira.plugin.system.customfieldtypes:exactnumber" | "com.atlassian.jira.plugin.system.customfieldtypes:exacttextsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:grouppickersearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:labelsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:multiselectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:numberrange" | "com.atlassian.jira.plugin.system.customfieldtypes:projectsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:textsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:userpickergroupsearcher" | "com.atlassian.jira.plugin.system.customfieldtypes:versionsearcher";
}

/** A list of issue link type beans. */
interface IssueLinkTypes {
    /** The issue link type bean. */
    issueLinkTypes?: IssueLinkType[];
}

/** Details of an issue priority. */
interface CreatePriorityDetails extends Record<string, unknown> {
    /**
     * The ID for the avatar for the priority. Either the iconUrl or avatarId must be
     * defined, but not both. This parameter is nullable and will become mandatory
     * once the iconUrl parameter is deprecated.
     */
    avatarId?: number;
    /** The description of the priority. */
    description?: string | null;
    /**
     * The URL of an icon for the priority. Accepted protocols are HTTP and HTTPS.
     * Built in icons can also be used. Either the iconUrl or avatarId must be
     * defined, but not both.
     */
    iconUrl?: "/images/icons/priorities/blocker.png" | "/images/icons/priorities/critical.png" | "/images/icons/priorities/high.png" | "/images/icons/priorities/highest.png" | "/images/icons/priorities/low.png" | "/images/icons/priorities/lowest.png" | "/images/icons/priorities/major.png" | "/images/icons/priorities/medium.png" | "/images/icons/priorities/minor.png" | "/images/icons/priorities/trivial.png" | "/images/icons/priorities/blocker_new.png" | "/images/icons/priorities/critical_new.png" | "/images/icons/priorities/high_new.png" | "/images/icons/priorities/highest_new.png" | "/images/icons/priorities/low_new.png" | "/images/icons/priorities/lowest_new.png" | "/images/icons/priorities/major_new.png" | "/images/icons/priorities/medium_new.png" | "/images/icons/priorities/minor_new.png" | "/images/icons/priorities/trivial_new.png" | null;
    /** The name of the priority. Must be unique. */
    name: string;
    /** The status color of the priority in 3-digit or 6-digit hexadecimal format. */
    statusColor: string;
}
/** A page of items. */
interface PageBeanPriority {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Priority[];
}
/** The ID of an issue priority. */
interface PriorityId extends Record<string, unknown> {
    /** The ID of the issue priority. */
    id: string;
}
/** Change the order of issue priorities. */
interface ReorderIssuePriorities {
    /** The ID of the priority. Required if `position` isn't provided. */
    after?: string;
    /** The list of issue IDs to be reordered. Cannot contain duplicates nor after ID. */
    ids: string[];
    /**
     * The position for issue priorities to be moved to. Required if `after` isn't
     * provided.
     */
    position?: string;
}
/** The new default issue priority. */
interface SetDefaultPriorityRequest {
    /**
     * The ID of the new default issue priority. Must be an existing ID or null.
     * Setting this to null erases the default priority setting.
     */
    id: string;
}
/** Details of an issue priority. */
interface UpdatePriorityDetails extends Record<string, unknown> {
    /**
     * The ID for the avatar for the priority. This parameter is nullable and both
     * iconUrl and avatarId cannot be defined.
     */
    avatarId?: number;
    /** The description of the priority. */
    description?: string | null;
    /**
     * The URL of an icon for the priority. Accepted protocols are HTTP and HTTPS.
     * Built in icons can also be used. Both iconUrl and avatarId cannot be defined.
     */
    iconUrl?: "/images/icons/priorities/blocker.png" | "/images/icons/priorities/critical.png" | "/images/icons/priorities/high.png" | "/images/icons/priorities/highest.png" | "/images/icons/priorities/low.png" | "/images/icons/priorities/lowest.png" | "/images/icons/priorities/major.png" | "/images/icons/priorities/medium.png" | "/images/icons/priorities/minor.png" | "/images/icons/priorities/trivial.png" | "/images/icons/priorities/blocker_new.png" | "/images/icons/priorities/critical_new.png" | "/images/icons/priorities/high_new.png" | "/images/icons/priorities/highest_new.png" | "/images/icons/priorities/low_new.png" | "/images/icons/priorities/lowest_new.png" | "/images/icons/priorities/major_new.png" | "/images/icons/priorities/medium_new.png" | "/images/icons/priorities/minor_new.png" | "/images/icons/priorities/trivial_new.png" | null;
    /** The name of the priority. Must be unique. */
    name?: string | null;
    /** The status color of the priority in 3-digit or 6-digit hexadecimal format. */
    statusColor?: string | null;
}

/** Bulk issue property update request details. */
interface BulkIssuePropertyUpdateRequest {
    /**
     * EXPERIMENTAL. The Jira expression to calculate the value of the property. The
     * value of the expression must be an object that can be converted to JSON, such
     * as a number, boolean, string, list, or map. The context variables available to
     * the expression are `issue` and `user`. Issues for which the expression returns
     * a value whose JSON representation is longer than 32768 characters are ignored.
     */
    expression?: string;
    /** The bulk operation filter. */
    filter?: IssueFilterForBulkPropertySet;
    /**
     * The value of the property. The value must be a
     * [valid](https://tools.ietf.org/html/rfc4627), non-empty JSON blob. The maximum
     * length is 32768 characters.
     */
    value?: unknown;
}
/**
 * Lists of issues and entity properties. See [Entity
 * properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/)
 * for more information.
 */
interface IssueEntityProperties {
    /** A list of entity property IDs. */
    entitiesIds?: number[];
    /** A list of entity property keys and values. */
    properties?: {
        [key: string]: JsonNode;
    };
}
/**
 * An issue ID with entity property values. See [Entity
 * properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/)
 * for more information.
 */
interface IssueEntityPropertiesForMultiUpdate {
    /** The ID of the issue. */
    issueID?: number;
    /**
     * Entity properties to set on the issue. The maximum length of an issue property
     * value is 32768 characters.
     */
    properties?: {
        [key: string]: JsonNode;
    };
}
/** Bulk operation filter details. */
interface IssueFilterForBulkPropertyDelete {
    /** The value of properties to perform the bulk operation on. */
    currentValue?: unknown;
    /** List of issues to perform the bulk delete operation on. */
    entityIds?: number[];
}
/** Bulk operation filter details. */
interface IssueFilterForBulkPropertySet {
    /** The value of properties to perform the bulk operation on. */
    currentValue?: unknown;
    /** List of issues to perform the bulk operation on. */
    entityIds?: number[];
    /**
     * Whether the bulk operation occurs only when the property is present on or
     * absent from an issue.
     */
    hasProperty?: boolean;
}
/**
 * A list of issues and their respective properties to set or update. See [Entity
 * properties](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/)
 * for more information.
 */
interface MultiIssueEntityProperties {
    /** A list of issue IDs and their respective properties. */
    issues?: IssueEntityPropertiesForMultiUpdate[];
}

interface BulkRedactionRequest {
    redactions?: SingleRedactionRequest[];
}
interface BulkRedactionResponse {
    /** Result for requested redactions */
    results: SingleRedactionResponse[];
}
/** Represents the content to redact */
interface ContentItem {
    /**
     * The ID of the content entity.
     *
     *  *  For redacting an issue field, this will be the field ID (e.g., summary,
     * customfield\_10000).
     *  *  For redacting a comment, this will be the comment ID.
     *  *  For redacting a worklog, this will be the worklog ID.
     *
     * @example
     * summary
     */
    entityId: string;
    /**
     * The type of the entity to redact; It will be one of the following:
     *
     *  *  **issuefieldvalue** \- To redact in issue fields
     *  *  **issue-comment** \- To redact in issue comments.
     *  *  **issue-worklog** \- To redact in issue worklogs
     */
    entityType: "issuefieldvalue" | "issue-comment" | "issue-worklog";
    /**
     * This would be the issue ID
     *
     * @example
     * 10000
     */
    id: string;
}
interface RedactionJobStatusResponse {
    bulkRedactionResponse?: BulkRedactionResponse;
    jobStatus?: "PENDING" | "IN_PROGRESS" | "COMPLETED";
}
/** Represents the position of the redaction */
interface RedactionPosition {
    /**
     * The ADF pointer indicating the position of the text to be redacted. This is
     * only required when redacting from rich text(ADF) fields. For plain text fields,
     * this field can be omitted.
     *
     * @example
     * /content/0/content/0/text
     */
    adfPointer?: string;
    /**
     * The text which will be redacted, encoded using SHA256 hash and Base64 digest
     *
     * @example
     * ODFiNjM3ZDhmY2QyYzZkYTYzNTllNjk2MzExM2ExMTcwZGU3OTVlNGI3MjViODRkMWUwYjRjZmQ5ZWM1OGNlOQ==
     */
    expectedText: string;
    /**
     * The start index(inclusive) for the redaction in specified content
     *
     * @example
     * 14
     */
    from: number;
    /**
     * The ending index(exclusive) for the redaction in specified content
     *
     * @example
     * 20
     */
    to: number;
}
interface SingleRedactionRequest {
    /** Represents the content to redact */
    contentItem: ContentItem;
    /**
     * Unique id for the redaction request; ID format should be of UUID
     *
     * @example
     * 51101de6-d001-429d-a095-b2b96dd57fcb
     */
    externalId: string;
    /**
     * The reason why the content is being redacted
     *
     * @example
     * PII data
     */
    reason: string;
    /** Represents the position of the redaction */
    redactionPosition: RedactionPosition;
}
/** Result for requested redactions */
interface SingleRedactionResponse {
    /** An unique id for the redaction request */
    externalId: string;
    /** Indicates if redaction was success/failure */
    successful: boolean;
}

/** The application the linked item is in. */
interface Application extends Record<string, unknown> {
    /**
     * The name of the application. Used in conjunction with the (remote) object icon
     * title to display a tooltip for the link's icon. The tooltip takes the format
     * "\[application name\] icon title". Blank items are excluded from the tooltip
     * title. If both items are blank, the icon tooltop displays as "Web Link".
     * Grouping and sorting of links may place links without an application name last.
     */
    name?: string;
    /** The name-spaced type of the application, used by registered rendering apps. */
    type?: string;
}
/**
 * An icon. If no icon is defined:
 *
 *  *  for a status icon, no status icon displays in Jira.
 *  *  for the remote object icon, the default link icon displays in Jira.
 */
interface Icon extends Record<string, unknown> {
    /**
     * The URL of the tooltip, used only for a status icon. If not set, the status
     * icon in Jira is not clickable.
     */
    link?: string;
    /**
     * The title of the icon. This is used as follows:
     *
     *  *  For a status icon it is used as a tooltip on the icon. If not set, the
     * status icon doesn't display a tooltip in Jira.
     *  *  For the remote object icon it is used in conjunction with the application
     * name to display a tooltip for the link's icon. The tooltip takes the format
     * "\[application name\] icon title". Blank itemsare excluded from the tooltip
     * title. If both items are blank, the icon tooltop displays as "Web Link".
     */
    title?: string;
    /** The URL of an icon that displays at 16x16 pixel in Jira. */
    url16x16?: string;
}
/** Details of an issue remote link. */
interface RemoteIssueLink {
    /** Details of the remote application the linked item is in. */
    application?: Application;
    /** The global ID of the link, such as the ID of the item on the remote system. */
    globalId?: string;
    /** The ID of the link. */
    id?: number;
    /** Details of the item linked to. */
    object?: RemoteObject;
    /** Description of the relationship between the issue and the linked item. */
    relationship?: string;
    /** The URL of the link. */
    self?: string;
}
/** Details of the identifiers for a created or updated remote issue link. */
interface RemoteIssueLinkIdentifies {
    /**
     * The ID of the remote issue link, such as the ID of the item on the remote
     * system.
     */
    id?: number;
    /** The URL of the remote issue link. */
    self?: string;
}
/** Details of a remote issue link. */
interface RemoteIssueLinkRequest extends Record<string, unknown> {
    /** Details of the remote application the linked item is in. For example, trello. */
    application?: Application;
    /**
     * An identifier for the remote item in the remote system. For example, the global
     * ID for a remote item in Confluence would consist of the app ID and page ID,
     * like this: `appId=456&pageId=123`.
     *
     * Setting this field enables the remote issue link details to be updated or
     * deleted using remote system and item details as the record identifier, rather
     * than using the record's Jira ID.
     *
     * The maximum length is 255 characters.
     */
    globalId?: string;
    /** Details of the item linked to. */
    object: RemoteObject;
    /**
     * Description of the relationship between the issue and the linked item. If not
     * set, the relationship description "links to" is used in Jira.
     */
    relationship?: string;
}
/** The linked item. */
interface RemoteObject extends Record<string, unknown> {
    /**
     * Details of the icon for the item. If no icon is defined, the default link icon
     * is used in Jira.
     */
    icon?: Icon;
    /** The status of the item. */
    status?: Status;
    /** The summary details of the item. */
    summary?: string;
    /** The title of the item. */
    title: string;
    /** The URL of the item. */
    url: string;
}
/** The status of the item. */
interface Status extends Record<string, unknown> {
    /**
     * Details of the icon representing the status. If not provided, no status icon
     * displays in Jira.
     */
    icon?: Icon;
    /**
     * Whether the item is resolved. If set to "true", the link to the issue is
     * displayed in a strikethrough font, otherwise the link displays in normal font.
     */
    resolved?: boolean;
}

/** Details of an issue resolution. */
interface CreateResolutionDetails extends Record<string, unknown> {
    /** The description of the resolution. */
    description?: string;
    /** The name of the resolution. Must be unique (case-insensitive). */
    name: string;
}
/** A page of items. */
interface PageBeanResolutionJsonBean {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: ResolutionJsonBean[];
}
/** Change the order of issue resolutions. */
interface ReorderIssueResolutionsRequest {
    /** The ID of the resolution. Required if `position` isn't provided. */
    after?: string;
    /**
     * The list of resolution IDs to be reordered. Cannot contain duplicates nor after
     * ID.
     */
    ids: string[];
    /**
     * The position for issue resolutions to be moved to. Required if `after` isn't
     * provided.
     */
    position?: string;
}
/** Details of an issue resolution. */
interface Resolution {
    /** The description of the issue resolution. */
    description?: string;
    /** The ID of the issue resolution. */
    id?: string;
    /** The name of the issue resolution. */
    name?: string;
    /** The URL of the issue resolution. */
    self?: string;
}
/** The ID of an issue resolution. */
interface ResolutionId extends Record<string, unknown> {
    /** The ID of the issue resolution. */
    id: string;
}
interface ResolutionJsonBean {
    default?: boolean;
    description?: string;
    iconUrl?: string;
    id?: string;
    name?: string;
    self?: string;
}
/** The new default issue resolution. */
interface SetDefaultResolutionRequest {
    /**
     * The ID of the new default issue resolution. Must be an existing ID or null.
     * Setting this to null erases the default resolution setting.
     */
    id: string;
}
/** Details of an issue resolution. */
interface UpdateResolutionDetails extends Record<string, unknown> {
    /** The description of the resolution. */
    description?: string;
    /** The name of the resolution. Must be unique. */
    name: string;
}

/**
 * A list of matched issues or errors for each JQL query, in the order the JQL
 * queries were passed.
 */
interface IssueMatches {
    matches: IssueMatchesForJql[];
}
/**
 * A list of the issues matched to a JQL query or details of errors encountered
 * during matching.
 */
interface IssueMatchesForJql {
    /** A list of errors. */
    errors: string[];
    /** A list of issue IDs. */
    matchedIssues: number[];
}
/** A list of issues suggested for use in auto-completion. */
interface IssuePickerSuggestions {
    /** A list of issues for an issue type suggested for use in auto-completion. */
    sections?: IssuePickerSuggestionsIssueType[];
}
/** A type of issue suggested for use in auto-completion. */
interface IssuePickerSuggestionsIssueType {
    /** The ID of the type of issues suggested for use in auto-completion. */
    id?: string;
    /** A list of issues suggested for use in auto-completion. */
    issues?: SuggestedIssue[];
    /** The label of the type of issues suggested for use in auto-completion. */
    label?: string;
    /**
     * If no issue suggestions are found, returns a message indicating no suggestions
     * were found,
     */
    msg?: string;
    /**
     * If issue suggestions are found, returns a message indicating the number of
     * issues suggestions found and returned.
     */
    sub?: string;
}
/** List of issues and JQL queries. */
interface IssuesAndJqlQueries {
    /** A list of issue IDs. */
    issueIds: number[];
    /** A list of JQL queries. */
    jqls: string[];
}
interface JqlCountRequestBean {
    /**
     * A [JQL](https://confluence.atlassian.com/x/egORLQ) expression. For performance
     * reasons, this parameter requires a bounded query. A bounded query is a query
     * with a search restriction.
     */
    jql: string;
}
interface JqlCountResultsBean {
    /** Number of issues matching JQL query. */
    count: number;
}
interface SearchAndReconcileRequestBean {
    /**
     * Use [expand](#expansion) to include additional information about issues in the
     * response. Note that, unlike the majority of instances where `expand` is
     * specified, `expand` is defined as a comma-delimited string of values. The
     * expand options are:
     *
     *  *  `renderedFields` Returns field values rendered in HTML format.
     *  *  `names` Returns the display name of each field.
     *  *  `schema` Returns the schema describing a field type.
     *  *  `transitions` Returns all possible transitions for the issue.
     *  *  `operations` Returns all possible operations for the issue.
     *  *  `editmeta` Returns information about how each field can be edited.
     *  *  `changelog` Returns a list of recent updates to an issue, sorted by date,
     * starting from the most recent.
     *  *  `versionedRepresentations` Instead of `fields`, returns
     * `versionedRepresentations` a JSON array containing each version of a field's
     * value, with the highest numbered item representing the most recent version.
     *
     * Examples: `"names,changelog"` Returns the display name of each field as well as
     * a list of recent updates to an issue.
     */
    expand?: string;
    /**
     * A list of fields to return for each issue. Use it to retrieve a subset of
     * fields. This parameter accepts a comma-separated list. Expand options include:
     *
     *  *  `*all` Returns all fields.
     *  *  `*navigable` Returns navigable fields.
     *  *  `id` Returns only issue IDs.
     *  *  Any issue field, prefixed with a dash to exclude.
     *
     * The default is `id`.
     *
     * Examples:
     *
     *  *  `summary,comment` Returns the summary and comments fields only.
     *  *  `*all,-comment` Returns all fields except comments.
     *
     * Multiple `fields` parameters can be included in a request.
     *
     * Note: By default, this resource returns IDs only. This differs from [GET
     * issue](#api-rest-api-3-issue-issueIdOrKey-get) where the default is all fields.
     */
    fields?: IssueFieldKeys;
    /** Reference fields by their key (rather than ID). The default is `false`. */
    fieldsByKeys?: boolean;
    /**
     * A [JQL](https://confluence.atlassian.com/x/egORLQ) expression. For performance
     * reasons, this parameter requires a bounded query. A bounded query is a query
     * with a search restriction.
     *
     *  *  Example of an unbounded query: `order by key desc`.
     *  *  Example of a bounded query: `assignee = currentUser() order by key`.
     *
     * Additionally, `orderBy` clause can contain a maximum of 7 fields.
     */
    jql: string;
    /**
     * The maximum number of items to return per page. To manage page size, API may
     * return fewer items per page where a large number of fields are requested. The
     * greatest number of items returned per page is achieved when requesting `id` or
     * `key` only. It returns max 5000 issues.
     */
    maxResults?: number;
    /**
     * The token for a page to fetch that is not the first page. The first page has a
     * `nextPageToken` of `null`. Use the `nextPageToken` to fetch the next page of
     * issues.
     */
    nextPageToken?: string;
    /**
     * A list of up to 5 issue properties to include in the results. This parameter
     * accepts a comma-separated list.
     */
    properties?: string[];
    /**
     * Strong consistency issue ids to be reconciled with search results. Accepts max
     * 50 ids
     */
    reconcileIssues?: number[];
}
/** The result of a JQL search with issues reconsilation. */
interface SearchAndReconcileResults {
    /** Indicates whether this is the last page of the paginated response. */
    isLast?: boolean;
    /** The list of issues found by the search or reconsiliation. */
    issues?: IssueBean[];
    /** The ID and name of each field in the search results. */
    names?: {
        [key: string]: string;
    };
    /**
     * Continuation token to fetch the next page. If this result represents the last
     * or the only page this token will be null. This token will expire in 7 days.
     */
    nextPageToken?: string;
    /** The schema describing the field types in the search results. */
    schema?: {
        /** The schema of a field. */ [key: string]: JsonTypeBean;
    };
}
interface SearchRequestBean {
    /**
     * Use [expand](#expansion) to include additional information about issues in the
     * response. Note that, unlike the majority of instances where `expand` is
     * specified, `expand` is defined as a list of values. The expand options are:
     *
     *  *  `renderedFields` Returns field values rendered in HTML format.
     *  *  `names` Returns the display name of each field.
     *  *  `schema` Returns the schema describing a field type.
     *  *  `transitions` Returns all possible transitions for the issue.
     *  *  `operations` Returns all possible operations for the issue.
     *  *  `editmeta` Returns information about how each field can be edited.
     *  *  `changelog` Returns a list of recent updates to an issue, sorted by date,
     * starting from the most recent.
     *  *  `versionedRepresentations` Instead of `fields`, returns
     * `versionedRepresentations` a JSON array containing each version of a field's
     * value, with the highest numbered item representing the most recent version.
     */
    expand?: string[];
    /**
     * A list of fields to return for each issue, use it to retrieve a subset of
     * fields. This parameter accepts a comma-separated list. Expand options include:
     *
     *  *  `*all` Returns all fields.
     *  *  `*navigable` Returns navigable fields.
     *  *  Any issue field, prefixed with a minus to exclude.
     *
     * The default is `*navigable`.
     *
     * Examples:
     *
     *  *  `summary,comment` Returns the summary and comments fields only.
     *  *  `-description` Returns all navigable (default) fields except description.
     *  *  `*all,-comment` Returns all fields except comments.
     *
     * Multiple `fields` parameters can be included in a request.
     *
     * Note: All navigable fields are returned by default. This differs from [GET
     * issue](#api-rest-api-3-issue-issueIdOrKey-get) where the default is all fields.
     */
    fields?: string[];
    /** Reference fields by their key (rather than ID). The default is `false`. */
    fieldsByKeys?: boolean;
    /** A [JQL](https://confluence.atlassian.com/x/egORLQ) expression. */
    jql?: string;
    /** The maximum number of items to return per page. */
    maxResults?: number;
    /**
     * A list of up to 5 issue properties to include in the results. This parameter
     * accepts a comma-separated list.
     */
    properties?: string[];
    /**
     * The index of the first item to return in the page of results (page offset). The
     * base index is `0`.
     */
    startAt?: number;
    /**
     * Determines how to validate the JQL query and treat the validation results.
     * Supported values:
     *
     *  *  `strict` Returns a 400 response code if any errors are found, along with a
     * list of all errors (and warnings).
     *  *  `warn` Returns all errors as warnings.
     *  *  `none` No validation is performed.
     *  *  `true` *Deprecated* A legacy synonym for `strict`.
     *  *  `false` *Deprecated* A legacy synonym for `warn`.
     *
     * The default is `strict`.
     *
     * Note: If the JQL is not correctly formed a 400 response code is returned,
     * regardless of the `validateQuery` value.
     */
    validateQuery?: "strict" | "warn" | "none" | "true" | "false";
}
/** The result of a JQL search. */
interface SearchResults {
    /** Expand options that include additional search result details in the response. */
    expand?: string;
    /** The list of issues found by the search. */
    issues?: IssueBean[];
    /** The maximum number of results that could be on the page. */
    maxResults?: number;
    /** The ID and name of each field in the search results. */
    names?: {
        [key: string]: string;
    };
    /** The schema describing the field types in the search results. */
    schema?: {
        /** The schema of a field. */ [key: string]: JsonTypeBean;
    };
    /** The index of the first item returned on the page. */
    startAt?: number;
    /** The number of results on the page. */
    total?: number;
    /** Any warnings related to the JQL query. */
    warningMessages?: string[];
}
/** An issue suggested for use in the issue picker auto-completion. */
interface SuggestedIssue {
    /** The ID of the issue. */
    id?: number;
    /** The URL of the issue type's avatar. */
    img?: string;
    /** The key of the issue. */
    key?: string;
    /** The key of the issue in HTML format. */
    keyHtml?: string;
    /**
     * The phrase containing the query string in HTML format, with the string
     * highlighted with HTML bold tags.
     */
    summary?: string;
    /** The phrase containing the query string, as plain text. */
    summaryText?: string;
}

/** Issue security level member. */
interface IssueSecurityLevelMember {
    /**
     * The user or group being granted the permission. It consists of a `type` and a
     * type-dependent `parameter`. See [Holder
     * object](../api-group-permission-schemes/#holder-object) in *Get all permission
     * schemes* for more information.
     */
    holder: PermissionHolder;
    /** The ID of the issue security level member. */
    id: number;
    /** The ID of the issue security level. */
    issueSecurityLevelId: number;
}
/** A page of items. */
interface PageBeanIssueSecurityLevelMember {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: IssueSecurityLevelMember[];
}

interface AddSecuritySchemeLevelsRequestBean {
    /** The list of scheme levels which should be added to the security scheme. */
    levels?: SecuritySchemeLevelBean[];
}
/** Issue security scheme, project, and remapping details. */
interface AssociateSecuritySchemeWithProjectDetails {
    /**
     * The list of scheme levels which should be remapped to new levels of the issue
     * security scheme.
     */
    oldToNewSecurityLevelMappings?: OldToNewSecurityLevelMappingsBean[];
    /** The ID of the project. */
    projectId: string;
    /**
     * The ID of the issue security scheme. Providing null will clear the association
     * with the issue security scheme.
     */
    schemeId: string;
}
/** Issue security scheme and it's details */
interface CreateIssueSecuritySchemeDetails extends Record<string, unknown> {
    /** The description of the issue security scheme. */
    description?: string;
    /** The list of scheme levels which should be added to the security scheme. */
    levels?: SecuritySchemeLevelBean[];
    /** The name of the issue security scheme. Must be unique (case-insensitive). */
    name: string;
}
/** Details of scheme and new default level. */
interface DefaultLevelValue extends Record<string, unknown> {
    /**
     * The ID of the issue security level to set as default for the specified scheme.
     * Providing null will reset the default level.
     */
    defaultLevelId: string;
    /** The ID of the issue security scheme to set default level for. */
    issueSecuritySchemeId: string;
}
/** Details about an project using security scheme mapping. */
interface IssueSecuritySchemeToProjectMapping extends Record<string, unknown> {
    issueSecuritySchemeId?: string;
    projectId?: string;
}
interface OldToNewSecurityLevelMappingsBean {
    /**
     * The new issue security level ID. Providing null will clear the assigned old
     * level from issues.
     */
    newLevelId: string;
    /**
     * The old issue security level ID. Providing null will remap all issues without
     * any assigned levels.
     */
    oldLevelId: string;
}
/** A page of items. */
interface PageBeanIssueSecuritySchemeToProjectMapping {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: IssueSecuritySchemeToProjectMapping[];
}
/** A page of items. */
interface PageBeanSecurityLevel {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: SecurityLevel[];
}
/** A page of items. */
interface PageBeanSecurityLevelMember {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: SecurityLevelMember[];
}
/** A page of items. */
interface PageBeanSecuritySchemeWithProjects {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: SecuritySchemeWithProjects[];
}
/** Issue security level member. */
interface SecurityLevelMember extends Record<string, unknown> {
    /**
     * The user or group being granted the permission. It consists of a `type` and a
     * type-dependent `parameter`. See [Holder
     * object](../api-group-permission-schemes/#holder-object) in *Get all permission
     * schemes* for more information.
     */
    holder: PermissionHolder;
    /** The ID of the issue security level member. */
    id: string;
    /** The ID of the issue security level. */
    issueSecurityLevelId: string;
    /** The ID of the issue security scheme. */
    issueSecuritySchemeId: string;
    managed?: boolean;
}
/** The ID of the issue security scheme. */
interface SecuritySchemeId extends Record<string, unknown> {
    /** The ID of the issue security scheme. */
    id: string;
}
interface SecuritySchemeLevelBean {
    /** The description of the issue security scheme level. */
    description?: string;
    /** Specifies whether the level is the default level. False by default. */
    isDefault?: boolean;
    /**
     * The list of level members which should be added to the issue security scheme
     * level.
     */
    members?: SecuritySchemeLevelMemberBean[];
    /** The name of the issue security scheme level. Must be unique. */
    name: string;
}
interface SecuritySchemeLevelMemberBean {
    /** The value corresponding to the specified member type. */
    parameter?: string;
    /**
     * The issue security level member type, e.g `reporter`, `group`, `user`,
     * `projectrole`, `applicationRole`.
     */
    type: string;
}
/** Details of issue security scheme level new members. */
interface SecuritySchemeMembersRequest {
    /**
     * The list of level members which should be added to the issue security scheme
     * level.
     */
    members?: SecuritySchemeLevelMemberBean[];
}
/** List of security schemes. */
interface SecuritySchemes {
    /** List of security schemes. */
    issueSecuritySchemes?: SecurityScheme[];
}
/** Details about an issue security scheme. */
interface SecuritySchemeWithProjects extends Record<string, unknown> {
    /** The default level ID of the issue security scheme. */
    defaultLevel?: number;
    /** The description of the issue security scheme. */
    description?: string;
    /** The ID of the issue security scheme. */
    id: number;
    /** The name of the issue security scheme. */
    name: string;
    /** The list of project IDs associated with the issue security scheme. */
    projectIds?: number[];
    /** The URL of the issue security scheme. */
    self: string;
}
/** Details of new default levels. */
interface SetDefaultLevelsRequest extends Record<string, unknown> {
    /** List of objects with issue security scheme ID and new default level ID. */
    defaultValues: DefaultLevelValue[];
}
/** Details of issue security scheme level. */
interface UpdateIssueSecurityLevelDetails extends Record<string, unknown> {
    /** The description of the issue security scheme level. */
    description?: string;
    /** The name of the issue security scheme level. Must be unique. */
    name?: string;
}
interface UpdateIssueSecuritySchemeRequestBean {
    /** The description of the security scheme scheme. */
    description?: string;
    /** The name of the security scheme scheme. Must be unique. */
    name?: string;
}

interface IssueTypeCreateBean {
    /** The description of the issue type. */
    description?: string;
    /**
     * The hierarchy level of the issue type. Use:
     *
     *  *  `-1` for Subtask.
     *  *  `0` for Base.
     *
     * Defaults to `0`.
     */
    hierarchyLevel?: number;
    /** The unique name for the issue type. The maximum length is 60 characters. */
    name: string;
    /**
     * Deprecated. Use `hierarchyLevel` instead. See the [deprecation
     * notice](https://community.developer.atlassian.com/t/deprecation-of-the-epic-link-parent-link-and-other-related-fields-in-rest-apis-and-webhooks/54048)
     * for details.
     *
     * Whether the issue type is `subtype` or `standard`. Defaults to `standard`.
     */
    type?: "subtask" | "standard";
}
interface IssueTypeUpdateBean {
    /**
     * The ID of an issue type avatar. This can be obtained be obtained from the
     * following endpoints:
     *
     *  *  [System issue type avatar IDs
     * only](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-avatars/#api-rest-api-3-avatar-type-system-get)
     *  *  [System and custom issue type avatar
     * IDs](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-avatars/#api-rest-api-3-universal-avatar-type-type-owner-entityid-get)
     */
    avatarId?: number;
    /** The description of the issue type. */
    description?: string;
    /** The unique name for the issue type. The maximum length is 60 characters. */
    name?: string;
}

/** Details of an issue type scheme. */
interface IssueTypeScheme {
    /** The ID of the default issue type of the issue type scheme. */
    defaultIssueTypeId?: string;
    /** The description of the issue type scheme. */
    description?: string;
    /** The ID of the issue type scheme. */
    id: string;
    /** Whether the issue type scheme is the default. */
    isDefault?: boolean;
    /** The name of the issue type scheme. */
    name: string;
}
/** Details of an issue type scheme and its associated issue types. */
interface IssueTypeSchemeDetails {
    /**
     * The ID of the default issue type of the issue type scheme. This ID must be
     * included in `issueTypeIds`.
     */
    defaultIssueTypeId?: string;
    /** The description of the issue type scheme. The maximum length is 4000 characters. */
    description?: string;
    /**
     * The list of issue types IDs of the issue type scheme. At least one standard
     * issue type ID is required.
     */
    issueTypeIds: string[];
    /**
     * The name of the issue type scheme. The name must be unique. The maximum length
     * is 255 characters.
     */
    name: string;
}
/** The ID of an issue type scheme. */
interface IssueTypeSchemeId {
    /** The ID of the issue type scheme. */
    issueTypeSchemeId: string;
}
/** Issue type scheme item. */
interface IssueTypeSchemeMapping {
    /** The ID of the issue type. */
    issueTypeId: string;
    /** The ID of the issue type scheme. */
    issueTypeSchemeId: string;
}
/** Details of the association between an issue type scheme and project. */
interface IssueTypeSchemeProjectAssociation {
    /** The ID of the issue type scheme. */
    issueTypeSchemeId: string;
    /** The ID of the project. */
    projectId: string;
}
/** Issue type scheme with a list of the projects that use it. */
interface IssueTypeSchemeProjects {
    /** Details of an issue type scheme. */
    issueTypeScheme: IssueTypeScheme;
    /** The IDs of the projects using the issue type scheme. */
    projectIds: string[];
}
/**
 * Details of the name, description, and default issue type for an issue type
 * scheme.
 */
interface IssueTypeSchemeUpdateDetails {
    /** The ID of the default issue type of the issue type scheme. */
    defaultIssueTypeId?: string;
    /** The description of the issue type scheme. The maximum length is 4000 characters. */
    description?: string;
    /**
     * The name of the issue type scheme. The name must be unique. The maximum length
     * is 255 characters.
     */
    name?: string;
}
/** An ordered list of issue type IDs and information about where to move them. */
interface OrderOfIssueTypes {
    /**
     * The ID of the issue type to place the moved issue types after. Required if
     * `position` isn't provided.
     */
    after?: string;
    /**
     * A list of the issue type IDs to move. The order of the issue type IDs in the
     * list is the order they are given after the move.
     */
    issueTypeIds: string[];
    /**
     * The position the issue types should be moved to. Required if `after` isn't
     * provided.
     */
    position?: "First" | "Last";
}
/** A page of items. */
interface PageBeanIssueTypeScheme {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: IssueTypeScheme[];
}
/** A page of items. */
interface PageBeanIssueTypeSchemeMapping {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: IssueTypeSchemeMapping[];
}
/** A page of items. */
interface PageBeanIssueTypeSchemeProjects {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: IssueTypeSchemeProjects[];
}

/** The details of votes on an issue. */
interface Votes {
    /** Whether the user making this request has voted on the issue. */
    hasVoted?: boolean;
    /** The URL of these issue vote details. */
    self?: string;
    /**
     * List of the users who have voted on this issue. An empty list is returned when
     * the calling user doesn't have the *View voters and watchers* project permission.
     */
    voters?: User[];
    /** The number of votes on the issue. */
    votes?: number;
}

/** A container for the watch status of a list of issues. */
interface BulkIssueIsWatching {
    /** The map of issue ID to boolean watch status. */
    issuesIsWatching?: {
        [key: string]: boolean;
    };
}
/** A list of issue IDs. */
interface IssueList {
    /** The list of issue IDs. */
    issueIds: string[];
}
/** The details of watchers on an issue. */
interface Watchers {
    /** Whether the calling user is watching this issue. */
    isWatching?: boolean;
    /** The URL of these issue watcher details. */
    self?: string;
    /** The number of users watching this issue. */
    watchCount?: number;
    /** Details of the users watching this issue. */
    watchers?: UserDetails[];
}

type CustomContextVariable = UserContextVariable | IssueContextVariable | JsonContextVariable;
/**
 * The project that is available under the `project` variable when evaluating the
 * expression.
 */
interface IdOrKeyBean {
    /** The ID of the referenced item. */
    id?: number;
    /** The key of the referenced item. */
    key?: string;
}
/**
 * An
 * [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)
 * specified by ID or key. All the fields of the issue object are available in the
 * Jira expression.
 */
interface IssueContextVariable {
    /** Type of custom context variable. */
    type: string;
    /** The issue ID. */
    id?: number;
    /** The issue key. */
    key?: string;
}
/** The description of the page of issues loaded by the provided JQL query. */
interface IssuesJqlMetaDataBean {
    /** The number of issues that were loaded in this evaluation. */
    count: number;
    /** The maximum number of issues that could be loaded in this evaluation. */
    maxResults: number;
    /** The index of the first issue. */
    startAt: number;
    /** The total number of issues the JQL returned. */
    totalCount: number;
    /**
     * Any warnings related to the JQL query. Present only if the validation mode was
     * set to `warn`.
     */
    validationWarnings?: string[];
}
/** Meta data describing the `issues` context variable. */
interface IssuesMetaBean {
    /** The description of the page of issues loaded by the provided JQL query. */
    jql?: IssuesJqlMetaDataBean;
}
/**
 * The JQL specifying the issues available in the evaluated Jira expression under
 * the `issues` context variable. This bean will be replacing `JexpIssues` bean as
 * part of new `evaluate` endpoint
 */
interface JexpEvaluateCtxIssues {
    /** The JQL query that specifies the set of issues available in the Jira expression. */
    jql?: JexpEvaluateCtxJqlIssues;
}
/**
 * The JQL specifying the issues available in the evaluated Jira expression under
 * the `issues` context variable. Not all issues returned by the JQL query are
 * loaded, only those described by the `nextPageToken` and `maxResults`
 * properties. This bean will be replacing JexpJqlIssues bean as part of new
 * `evaluate` endpoint
 */
interface JexpEvaluateCtxJqlIssues {
    /**
     * The maximum number of issues to return from the JQL query. max results value
     * considered may be lower than the number specific here.
     */
    maxResults?: number;
    /**
     * The token for a page to fetch that is not the first page. The first page has a
     * `nextPageToken` of `null`. Use the `nextPageToken` to fetch the next page of
     * issues.
     */
    nextPageToken?: string;
    /**
     * The JQL query, required to be bounded. Additionally, `orderBy` clause can
     * contain a maximum of 7 fields
     */
    query?: string;
}
/**
 * The description of the page of issues loaded by the provided JQL query.This
 * bean will be replacing IssuesJqlMetaDataBean bean as part of new `evaluate`
 * endpoint
 */
interface JexpEvaluateIssuesJqlMetaDataBean {
    /** Indicates whether this is the last page of the paginated response. */
    isLast?: boolean;
    /** Next Page token for the next page of issues. */
    nextPageToken: string;
}
/**
 * Meta data describing the `issues` context variable.This bean will be replacing
 * IssuesMetaBean bean as part of new `evaluate` endpoint
 */
interface JexpEvaluateIssuesMetaBean {
    /**
     * The description of the page of issues loaded by the provided JQL query.This
     * bean will be replacing IssuesJqlMetaDataBean bean as part of new `evaluate`
     * endpoint
     */
    jql?: JexpEvaluateIssuesJqlMetaDataBean;
}
/**
 * The result of evaluating a Jira expression.This bean will be replacing
 * `JiraExpressionResultBean` bean as part of new evaluate endpoint
 */
interface JexpEvaluateJiraExpressionResultBean {
    /** Contains various characteristics of the performed expression evaluation. */
    meta?: JexpEvaluateMetaDataBean;
    /**
     * The value of the evaluated expression. It may be a primitive JSON value or a
     * Jira REST API object. (Some expressions do not produce any meaningful
     * results—for example, an expression that returns a lambda function—if that's the
     * case a simple string representation is returned. These string representations
     * should not be relied upon and may change without notice.)
     */
    value: unknown;
}
/**
 * Contains information about the expression evaluation. This bean will be
 * replacing `JiraExpressionEvaluationMetaDataBean` bean as part of new `evaluate`
 * endpoint
 */
interface JexpEvaluateMetaDataBean {
    /**
     * Contains information about the expression complexity. For example, the number
     * of steps it took to evaluate the expression.
     */
    complexity?: JiraExpressionsComplexityBean;
    /**
     * Contains information about the `issues` variable in the context. For example,
     * is the issues were loaded with JQL, information about the page will be included
     * here.
     */
    issues?: JexpEvaluateIssuesMetaBean;
}
/**
 * The JQL specifying the issues available in the evaluated Jira expression under
 * the `issues` context variable.
 */
interface JexpIssues {
    /** The JQL query that specifies the set of issues available in the Jira expression. */
    jql?: JexpJqlIssues;
}
/**
 * The JQL specifying the issues available in the evaluated Jira expression under
 * the `issues` context variable. Not all issues returned by the JQL query are
 * loaded, only those described by the `startAt` and `maxResults` properties. To
 * determine whether it is necessary to iterate to ensure all the issues returned
 * by the JQL query are evaluated, inspect `meta.issues.jql.count` in the response.
 */
interface JexpJqlIssues {
    /**
     * The maximum number of issues to return from the JQL query. Inspect
     * `meta.issues.jql.maxResults` in the response to ensure the maximum value has
     * not been exceeded.
     */
    maxResults?: number;
    /** The JQL query. */
    query?: string;
    /** The index of the first issue to return from the JQL query. */
    startAt?: number;
    /** Determines how to validate the JQL query and treat the validation results. */
    validation?: "strict" | "warn" | "none";
}
/** Details about the analysed Jira expression. */
interface JiraExpressionAnalysis {
    /** Details about the complexity of the analysed Jira expression. */
    complexity?: JiraExpressionComplexity;
    /** A list of validation errors. Not included if the expression is valid. */
    errors?: JiraExpressionValidationError[];
    /** The analysed expression. */
    expression: string;
    /** EXPERIMENTAL. The inferred type of the expression. */
    type?: string;
    /**
     * Whether the expression is valid and the interpreter will evaluate it. Note that
     * the expression may fail at runtime (for example, if it executes too many
     * expensive operations).
     */
    valid: boolean;
}
/** Details about the complexity of the analysed Jira expression. */
interface JiraExpressionComplexity {
    /**
     * Information that can be used to determine how many [expensive
     * operations](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#expensive-operations)
     * the evaluation of the expression will perform. This information may be a
     * formula or number. For example:
     *
     *  *  `issues.map(i => i.comments)` performs as many expensive operations as
     * there are issues on the issues list. So this parameter returns `N`, where `N`
     * is the size of issue list.
     *  *  `new Issue(10010).comments` gets comments for one issue, so its complexity
     * is `2` (`1` to retrieve issue 10010 from the database plus `1` to get its
     * comments).
     */
    expensiveOperations: string;
    /**
     * Variables used in the formula, mapped to the parts of the expression they refer
     * to.
     */
    variables?: {
        /**
         * Variables used in the formula, mapped to the parts of the expression they refer
         * to.
         */
        [key: string]: string;
    };
}
/** The context in which the Jira expression is evaluated. */
interface JiraExpressionEvalContextBean {
    /**
     * The ID of the board that is available under the `board` variable when
     * evaluating the expression.
     */
    board?: number;
    /**
     * Custom context variables and their types. These variable types are available
     * for use in a custom context:
     *
     *  *  `user`: A
     * [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)
     * specified as an Atlassian account ID.
     *  *  `issue`: An
     * [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)
     * specified by ID or key. All the fields of the issue object are available in the
     * Jira expression.
     *  *  `json`: A JSON object containing custom content.
     *  *  `list`: A JSON list of `user`, `issue`, or `json` variable types.
     */
    custom?: CustomContextVariable[];
    /**
     * The ID of the customer request that is available under the `customerRequest`
     * variable when evaluating the expression. This is the same as the ID of the
     * underlying Jira issue, but the customer request context variable will have a
     * different type.
     */
    customerRequest?: number;
    /**
     * The issue that is available under the `issue` variable when evaluating the
     * expression.
     */
    issue?: IdOrKeyBean;
    /**
     * The collection of issues that is available under the `issues` variable when
     * evaluating the expression.
     */
    issues?: JexpIssues;
    /**
     * The project that is available under the `project` variable when evaluating the
     * expression.
     */
    project?: IdOrKeyBean;
    /**
     * The ID of the service desk that is available under the `serviceDesk` variable
     * when evaluating the expression.
     */
    serviceDesk?: number;
    /**
     * The ID of the sprint that is available under the `sprint` variable when
     * evaluating the expression.
     */
    sprint?: number;
}
interface JiraExpressionEvalRequestBean {
    /** The context in which the Jira expression is evaluated. */
    context?: JiraExpressionEvalContextBean;
    /**
     * The Jira expression to evaluate.
     *
     * @example
     * { key: issue.key, type: issue.issueType.name, links: issue.links.map(link => link.linkedIssue.id) }
     */
    expression: string;
}
/** The context in which the Jira expression is evaluated. */
interface JiraExpressionEvaluateContextBean {
    /**
     * The ID of the board that is available under the `board` variable when
     * evaluating the expression.
     */
    board?: number;
    /**
     * Custom context variables and their types. These variable types are available
     * for use in a custom context:
     *
     *  *  `user`: A
     * [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)
     * specified as an Atlassian account ID.
     *  *  `issue`: An
     * [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)
     * specified by ID or key. All the fields of the issue object are available in the
     * Jira expression.
     *  *  `json`: A JSON object containing custom content.
     *  *  `list`: A JSON list of `user`, `issue`, or `json` variable types.
     */
    custom?: CustomContextVariable[];
    /**
     * The ID of the customer request that is available under the `customerRequest`
     * variable when evaluating the expression. This is the same as the ID of the
     * underlying Jira issue, but the customer request context variable will have a
     * different type.
     */
    customerRequest?: number;
    /**
     * The issue that is available under the `issue` variable when evaluating the
     * expression.
     */
    issue?: IdOrKeyBean;
    /**
     * The collection of issues that is available under the `issues` variable when
     * evaluating the expression.
     */
    issues?: JexpEvaluateCtxIssues;
    /**
     * The project that is available under the `project` variable when evaluating the
     * expression.
     */
    project?: IdOrKeyBean;
    /**
     * The ID of the service desk that is available under the `serviceDesk` variable
     * when evaluating the expression.
     */
    serviceDesk?: number;
    /**
     * The ID of the sprint that is available under the `sprint` variable when
     * evaluating the expression.
     */
    sprint?: number;
}
/**
 * The request to evaluate a Jira expression. This bean will be replacing
 * `JiraExpressionEvaluateRequest` as part of new `evaluate` endpoint
 */
interface JiraExpressionEvaluateRequestBean {
    /** The context in which the Jira expression is evaluated. */
    context?: JiraExpressionEvaluateContextBean;
    /**
     * The Jira expression to evaluate.
     *
     * @example
     * { key: issue.key, type: issue.issueType.name, links: issue.links.map(link => link.linkedIssue.id) }
     */
    expression: string;
}
/** Contains various characteristics of the performed expression evaluation. */
interface JiraExpressionEvaluationMetaDataBean {
    /**
     * Contains information about the expression complexity. For example, the number
     * of steps it took to evaluate the expression.
     */
    complexity?: JiraExpressionsComplexityBean;
    /**
     * Contains information about the `issues` variable in the context. For example,
     * is the issues were loaded with JQL, information about the page will be included
     * here.
     */
    issues?: IssuesMetaBean;
}
/** Details of Jira expressions for analysis. */
interface JiraExpressionForAnalysis {
    /**
     * Context variables and their types. The type checker assumes that [common
     * context
     * variables](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables),
     * such as `issue` or `project`, are available in context and sets their type. Use
     * this property to override the default types or provide details of new variables.
     */
    contextVariables?: {
        /**
         * Context variables and their types. The type checker assumes that
         * https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables
         * common context variables, such as <code>issue</code> or <code>project</code>,
         * are available in context and sets their type. Use this property to override the
         * default types or provide details of new variables.
         */
        [key: string]: string;
    };
    /**
     * The list of Jira expressions to analyse.
     *
     * @example
     * issues.map(issue => issue.properties['property_key'])
     */
    expressions: string[];
}
/** The result of evaluating a Jira expression. */
interface JiraExpressionResult {
    /** Contains various characteristics of the performed expression evaluation. */
    meta?: JiraExpressionEvaluationMetaDataBean;
    /**
     * The value of the evaluated expression. It may be a primitive JSON value or a
     * Jira REST API object. (Some expressions do not produce any meaningful
     * results—for example, an expression that returns a lambda function—if that's the
     * case a simple string representation is returned. These string representations
     * should not be relied upon and may change without notice.)
     */
    value: unknown;
}
/** Details about the analysed Jira expression. */
interface JiraExpressionsAnalysis {
    /** The results of Jira expressions analysis. */
    results: JiraExpressionAnalysis[];
}
/**
 * Contains information about the expression complexity. For example, the number
 * of steps it took to evaluate the expression.
 */
interface JiraExpressionsComplexityBean {
    /** The number of Jira REST API beans returned in the response. */
    beans: JiraExpressionsComplexityValueBean;
    /**
     * The number of expensive operations executed while evaluating the expression.
     * Expensive operations are those that load additional data, such as entity
     * properties, comments, or custom fields.
     */
    expensiveOperations: JiraExpressionsComplexityValueBean;
    /** The number of primitive values returned in the response. */
    primitiveValues: JiraExpressionsComplexityValueBean;
    /**
     * The number of steps it took to evaluate the expression, where a step is a
     * high-level operation performed by the expression. A step is an operation such
     * as arithmetic, accessing a property, accessing a context variable, or calling a
     * function.
     */
    steps: JiraExpressionsComplexityValueBean;
}
/**
 * The number of steps it took to evaluate the expression, where a step is a
 * high-level operation performed by the expression. A step is an operation such
 * as arithmetic, accessing a property, accessing a context variable, or calling a
 * function.
 */
interface JiraExpressionsComplexityValueBean {
    /**
     * The maximum allowed complexity. The evaluation will fail if this value is
     * exceeded.
     */
    limit: number;
    /** The complexity value of the current expression. */
    value: number;
}
/**
 * Details about syntax and type errors. The error details apply to the entire
 * expression, unless the object includes:
 *
 *  *  `line` and `column`
 *  *  `expression`
 */
interface JiraExpressionValidationError {
    /** The text column in which the error occurred. */
    column?: number;
    /** The part of the expression in which the error occurred. */
    expression?: string;
    /** The text line in which the error occurred. */
    line?: number;
    /**
     * Details about the error.
     *
     * @example
     * !, -, typeof, (, IDENTIFIER, null, true, false, NUMBER, STRING, TEMPLATE_LITERAL, new, [ or { expected, > encountered.
     */
    message: string;
    /** The error type. */
    type: "syntax" | "type" | "other";
}
/** A JSON object with custom content. */
interface JsonContextVariable {
    /** Type of custom context variable. */
    type: string;
    /** A JSON object containing custom content. */
    value?: {
        [key: string]: unknown;
    };
}
/**
 * A
 * [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)
 * specified as an Atlassian account ID.
 */
interface UserContextVariable {
    /** Type of custom context variable. */
    type: string;
    /** The account ID of the user. */
    accountId: string;
}

/** Details of an application property. */
interface ApplicationProperty {
    /** The allowed values, if applicable. */
    allowedValues?: string[];
    /** The default value of the application property. */
    defaultValue?: string;
    /** The description of the application property. */
    desc?: string;
    example?: string;
    /** The ID of the application property. The ID and key are the same. */
    id?: string;
    /** The key of the application property. The ID and key are the same. */
    key?: string;
    /** The name of the application property. */
    name?: string;
    /** The data type of the application property. */
    type?: string;
    /** The new value. */
    value?: string;
}
/** Details about the configuration of Jira. */
interface Configuration {
    /** Whether the ability to add attachments to issues is enabled. */
    attachmentsEnabled?: boolean;
    /** Whether the ability to link issues is enabled. */
    issueLinkingEnabled?: boolean;
    /** Whether the ability to create subtasks for issues is enabled. */
    subTasksEnabled?: boolean;
    /** The configuration of time tracking. */
    timeTrackingConfiguration?: TimeTrackingConfiguration;
    /** Whether the ability to track time is enabled. This property is deprecated. */
    timeTrackingEnabled?: boolean;
    /**
     * Whether the ability to create unassigned issues is enabled. See [Configuring
     * Jira application options](https://confluence.atlassian.com/x/uYXKM) for details.
     */
    unassignedIssuesAllowed?: boolean;
    /**
     * Whether the ability for users to vote on issues is enabled. See [Configuring
     * Jira application options](https://confluence.atlassian.com/x/uYXKM) for details.
     */
    votingEnabled?: boolean;
    /**
     * Whether the ability for users to watch issues is enabled. See [Configuring Jira
     * application options](https://confluence.atlassian.com/x/uYXKM) for details.
     */
    watchingEnabled?: boolean;
}
interface SimpleApplicationPropertyBean {
    /** The ID of the application property. */
    id?: string;
    /** The new value. */
    value?: string;
}

/** A field auto-complete suggestion. */
interface AutoCompleteSuggestion {
    /**
     * The display name of a suggested item. If `fieldValue` or `predicateValue` are
     * provided, the matching text is highlighted with the HTML bold tag.
     */
    displayName?: string;
    /** The value of a suggested item. */
    value?: string;
}
/** The results from a JQL query. */
interface AutoCompleteSuggestions {
    /** The list of suggested item. */
    results?: AutoCompleteSuggestion[];
}
/**
 * A JQL query clause that consists of nested clauses. For example, `(labels in
 * (urgent, blocker) OR lastCommentedBy = currentUser()). Note that, where nesting
 * is not defined, the parser nests JQL clauses based on the operator precedence.
 * For example, "A OR B AND C" is parsed as "(A OR B) AND C". See Setting the
 * precedence of operators for more information about precedence in JQL queries.`
 */
interface CompoundClause {
    /** The list of nested clauses. */
    clauses: JqlQueryClause[];
    /** The operator between the clauses. */
    operator: "and" | "or" | "not";
}
/** The converted JQL queries. */
interface ConvertedJqlQueries {
    /**
     * List of queries containing user information that could not be mapped to an
     * existing user
     */
    queriesWithUnknownUsers?: JqlQueryWithUnknownUsers[];
    /**
     * The list of converted query strings with account IDs in place of user
     * identifiers.
     */
    queryStrings?: string[];
}
/**
 * A clause that asserts whether a field was changed. For example, `status CHANGED
 * AFTER startOfMonth(-1M)`.See
 * [CHANGED](https://confluence.atlassian.com/x/dgiiLQ#Advancedsearching-operatorsreference-CHANGEDCHANGED)
 * for more information about the CHANGED operator.
 */
interface FieldChangedClause {
    /**
     * A field used in a JQL query. See [Advanced searching - fields
     * reference](https://confluence.atlassian.com/x/dAiiLQ) for more information
     * about fields in JQL queries.
     */
    field: JqlQueryField;
    /** The operator applied to the field. */
    operator: "changed";
    /** The list of time predicates. */
    predicates: JqlQueryClauseTimePredicate[];
}
/** Details of a field that can be used in advanced searches. */
interface FieldReferenceData {
    /** Whether the field provide auto-complete suggestions. */
    auto?: "true" | "false";
    /** If the item is a custom field, the ID of the custom field. */
    cfid?: string;
    /** Whether this field has been deprecated. */
    deprecated?: "true" | "false";
    /** The searcher key of the field, only passed when the field is deprecated. */
    deprecatedSearcherKey?: string;
    /**
     * The display name contains the following:
     *
     *  *  for system fields, the field name. For example, `Summary`.
     *  *  for collapsed custom fields, the field name followed by a hyphen and then
     * the field name and field type. For example, `Component - Component[Dropdown]`.
     *  *  for other custom fields, the field name followed by a hyphen and then the
     * custom field ID. For example, `Component - cf[10061]`.
     */
    displayName?: string;
    /** The valid search operators for the field. */
    operators?: string[];
    /** Whether the field can be used in a query's `ORDER BY` clause. */
    orderable?: "true" | "false";
    /** Whether the content of this field can be searched. */
    searchable?: "true" | "false";
    /** The data types of items in the field. */
    types?: string[];
    /** The field identifier. */
    value?: string;
}
/**
 * A clause that asserts the current value of a field. For example, `summary ~
 * test`.
 */
interface FieldValueClause {
    /**
     * A field used in a JQL query. See [Advanced searching - fields
     * reference](https://confluence.atlassian.com/x/dAiiLQ) for more information
     * about fields in JQL queries.
     */
    field: JqlQueryField;
    /** Details of an operand in a JQL clause. */
    operand: JqlQueryClauseOperand;
    /** The operator between the field and operand. */
    operator: "=" | "!=" | ">" | "<" | ">=" | "<=" | "in" | "not in" | "~" | "~=" | "is" | "is not";
}
/**
 * A clause that asserts a previous value of a field. For example, `status WAS
 * "Resolved" BY currentUser() BEFORE "2019/02/02"`. See
 * [WAS](https://confluence.atlassian.com/x/dgiiLQ#Advancedsearching-operatorsreference-WASWAS)
 * for more information about the WAS operator.
 */
interface FieldWasClause {
    /**
     * A field used in a JQL query. See [Advanced searching - fields
     * reference](https://confluence.atlassian.com/x/dAiiLQ) for more information
     * about fields in JQL queries.
     */
    field: JqlQueryField;
    /** Details of an operand in a JQL clause. */
    operand: JqlQueryClauseOperand;
    /** The operator between the field and operand. */
    operator: "was" | "was in" | "was not in" | "was not";
    /** The list of time predicates. */
    predicates: JqlQueryClauseTimePredicate[];
}
/**
 * An operand that is a function. See [Advanced searching - functions
 * reference](https://confluence.atlassian.com/x/dwiiLQ) for more information
 * about JQL functions.
 */
interface FunctionOperand extends Record<string, unknown> {
    /** The list of function arguments. */
    arguments: string[];
    /** Encoded operand, which can be used directly in a JQL query. */
    encodedOperand?: string;
    /** The name of the function. */
    function: string;
}
/** Details of functions that can be used in advanced searches. */
interface FunctionReferenceData {
    /** The display name of the function. */
    displayName?: string;
    /** Whether the function can take a list of arguments. */
    isList?: "true" | "false";
    /** Whether the function supports both single and list value operators. */
    supportsListAndSingleValueOperators?: "true" | "false";
    /** The data types returned by the function. */
    types?: string[];
    /** The function identifier. */
    value?: string;
}
/** The JQL queries to be converted. */
interface JqlPersonalDataMigrationRequest {
    /** A list of queries with user identifiers. Maximum of 100 queries. */
    queryStrings?: string[];
}
/** A list of JQL queries to parse. */
interface JqlQueriesToParse {
    /** A list of queries to parse. */
    queries: string[];
}
/** The list of JQL queries to sanitize for the given account IDs. */
interface JqlQueriesToSanitize {
    /**
     * The list of JQL queries to sanitize. Must contain unique values. Maximum of 20
     * queries.
     */
    queries: JqlQueryToSanitize[];
}
/** A parsed JQL query. */
interface JqlQuery {
    /** Details of the order-by JQL clause. */
    orderBy?: JqlQueryOrderByClause;
    /** A JQL query clause. */
    where?: JqlQueryClause;
}
/** A JQL query clause. */
type JqlQueryClause = CompoundClause | FieldValueClause | FieldWasClause | FieldChangedClause;
/** Details of an operand in a JQL clause. */
type JqlQueryClauseOperand = ListOperand | ValueOperand | FunctionOperand | KeywordOperand;
/** A time predicate for a temporal JQL clause. */
interface JqlQueryClauseTimePredicate extends Record<string, unknown> {
    /** Details of an operand in a JQL clause. */
    operand: JqlQueryClauseOperand;
    /** The operator between the field and the operand. */
    operator: "before" | "after" | "from" | "to" | "on" | "during" | "by";
}
/**
 * A field used in a JQL query. See [Advanced searching - fields
 * reference](https://confluence.atlassian.com/x/dAiiLQ) for more information
 * about fields in JQL queries.
 */
interface JqlQueryField {
    /** The encoded name of the field, which can be used directly in a JQL query. */
    encodedName?: string;
    /** The name of the field. */
    name: string;
    /**
     * When the field refers to a value in an entity property, details of the entity
     * property value.
     */
    property?: JqlQueryFieldEntityProperty[];
}
/** Details of an entity property. */
interface JqlQueryFieldEntityProperty extends Record<string, unknown> {
    /**
     * The object on which the property is set.
     *
     * @example
     * issue
     */
    entity: string;
    /**
     * The key of the property.
     *
     * @example
     * stats
     */
    key: string;
    /**
     * The path in the property value to query.
     *
     * @example
     * comments.count
     */
    path: string;
    /**
     * The type of the property value extraction. Not available if the extraction for
     * the property is not registered on the instance with the [Entity
     * property](https://developer.atlassian.com/cloud/jira/platform/modules/entity-property/)
     * module.
     *
     * @example
     * number
     */
    type?: "number" | "string" | "text" | "date" | "user";
}
/** Details of the order-by JQL clause. */
interface JqlQueryOrderByClause {
    /** The list of order-by clause fields and their ordering directives. */
    fields: JqlQueryOrderByClauseElement[];
}
/** An element of the order-by JQL clause. */
interface JqlQueryOrderByClauseElement {
    /** The direction in which to order the results. */
    direction?: "asc" | "desc";
    /**
     * A field used in a JQL query. See [Advanced searching - fields
     * reference](https://confluence.atlassian.com/x/dAiiLQ) for more information
     * about fields in JQL queries.
     */
    field: JqlQueryField;
}
/**
 * The JQL query to sanitize for the account ID. If the account ID is null,
 * sanitizing is performed for an anonymous user.
 */
interface JqlQueryToSanitize {
    /**
     * The account ID of the user, which uniquely identifies the user across all
     * Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*.
     */
    accountId?: string | null;
    /** The query to sanitize. */
    query: string;
}
/** An operand that can be part of a list operand. */
type JqlQueryUnitaryOperand = ValueOperand | FunctionOperand | KeywordOperand;
/** JQL queries that contained users that could not be found */
interface JqlQueryWithUnknownUsers {
    /**
     * The converted query, with accountIDs instead of user identifiers, or 'unknown'
     * for users that could not be found
     */
    convertedQuery?: string;
    /** The original query, for reference */
    originalQuery?: string;
}
/** Lists of JQL reference data. */
interface JqlReferenceData {
    /** List of JQL query reserved words. */
    jqlReservedWords?: string[];
    /** List of fields usable in JQL queries. */
    visibleFieldNames?: FieldReferenceData[];
    /** List of functions usable in JQL queries. */
    visibleFunctionNames?: FunctionReferenceData[];
}
/**
 * An operand that is a JQL keyword. See [Advanced searching - keywords
 * reference](https://confluence.atlassian.com/jiracorecloud/advanced-searching-keywords-reference-765593717.html#Advancedsearching-keywordsreference-EMPTYEMPTY)
 * for more information about operand keywords.
 */
interface KeywordOperand extends Record<string, unknown> {
    /** The keyword that is the operand value. */
    keyword: "empty";
}
/** An operand that is a list of values. */
interface ListOperand extends Record<string, unknown> {
    /** Encoded operand, which can be used directly in a JQL query. */
    encodedOperand?: string;
    /** The list of operand values. */
    values: JqlQueryUnitaryOperand[];
}
/** A list of parsed JQL queries. */
interface ParsedJqlQueries {
    /** A list of parsed JQL queries. */
    queries: ParsedJqlQuery[];
}
/** Details of a parsed JQL query. */
interface ParsedJqlQuery {
    /** The list of syntax or validation errors. */
    errors?: string[];
    /** The JQL query that was parsed and validated. */
    query: string;
    /** The syntax tree of the query. Empty if the query was invalid. */
    structure?: JqlQuery;
    /** The list of warning messages */
    warnings?: string[];
}
/** The sanitized JQL queries for the given account IDs. */
interface SanitizedJqlQueries {
    /** The list of sanitized JQL queries. */
    queries?: SanitizedJqlQuery[];
}
/** Details of the sanitized JQL query. */
interface SanitizedJqlQuery {
    /** The account ID of the user for whom sanitization was performed. */
    accountId?: string | null;
    /** The list of errors. */
    errors?: ErrorCollection;
    /** The initial query. */
    initialQuery?: string;
    /** The sanitized query, if there were no errors. */
    sanitizedQuery?: string | null;
}
/** Details of how to filter and list search auto complete information. */
interface SearchAutoCompleteFilter {
    /** Include collapsed fields for fields that have non-unique names. */
    includeCollapsedFields?: boolean;
    /** List of project IDs used to filter the visible field details returned. */
    projectIds?: number[];
}
/** An operand that is a user-provided value. */
interface ValueOperand extends Record<string, unknown> {
    /** Encoded value, which can be used directly in a JQL query. */
    encodedValue?: string;
    /** The operand value. */
    value: string;
}

/** Jql function precomputation. */
interface JqlFunctionPrecomputationBean {
    /** The list of arguments function was invoked with. */
    arguments?: string[];
    /** The timestamp of the precomputation creation. */
    created?: string;
    /** The error message to be displayed to the user. */
    error?: string;
    /** The field the function was executed against. */
    field?: string;
    /** The function key. */
    functionKey?: string;
    /** The name of the function. */
    functionName?: string;
    /** The id of the precomputation. */
    id?: string;
    /** The operator in context of which function was executed. */
    operator?: string;
    /** The timestamp of the precomputation last update. */
    updated?: string;
    /** The timestamp of the precomputation last usage. */
    used?: string;
    /** The JQL fragment stored as the precomputation. */
    value?: string;
}
/** Request to fetch precomputations by ID. */
interface JqlFunctionPrecomputationGetByIdRequest {
    precomputationIDs?: string[];
}
/** Get precomputations by ID response. */
interface JqlFunctionPrecomputationGetByIdResponse {
    /** List of precomputations that were not found. */
    notFoundPrecomputationIDs?: string[];
    /** The list of precomputations. */
    precomputations?: JqlFunctionPrecomputationBean[];
}
/** Precomputation id and its new value. */
interface JqlFunctionPrecomputationUpdateBean {
    /**
     * The error message to be displayed to the user if the given function clause is
     * no longer valid during recalculation of the precomputation.
     */
    error?: string;
    /** The id of the precomputation to update. */
    id: string;
    /** The new value of the precomputation. */
    value?: string;
}
/** Error response returned updating JQL Function precomputations fails. */
interface JqlFunctionPrecomputationUpdateErrorResponse {
    /** The list of error messages produced by this operation. */
    errorMessages?: string[];
    /** List of precomputations that were not found. */
    notFoundPrecomputationIDs?: string[];
}
/** List of pairs (id and value) for precomputation updates. */
interface JqlFunctionPrecomputationUpdateRequestBean {
    values?: JqlFunctionPrecomputationUpdateBean[];
}
/** Result of updating JQL Function precomputations. */
interface JqlFunctionPrecomputationUpdateResponse {
    /**
     * List of precomputations that were not found and skipped. Only returned if the
     * request passed skipNotFoundPrecomputations=true.
     */
    notFoundPrecomputationIDs?: string[];
}
/** A page of items. */
interface PageBean2JqlFunctionPrecomputationBean {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: JqlFunctionPrecomputationBean[];
}

/** A page of items. */
interface PageBeanString {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: string[];
}

interface ErrorCollections {
}
/** Details about a license for the Jira instance. */
interface License {
    /** The applications under this license. */
    applications: LicensedApplication[];
}
/** Details about a licensed Jira application. */
interface LicensedApplication {
    /** The ID of the application. */
    id: string;
    /** The licensing plan. */
    plan: "UNLICENSED" | "FREE" | "PAID";
}
/** A metric that provides insight into the active licence details */
interface LicenseMetric {
    /** The key of a specific license metric. */
    key?: string;
    /**
     * The calculated value of a licence metric linked to the key. An example licence
     * metric is the approximate number of user accounts.
     */
    value?: string;
}

/** Details of a locale. */
interface Locale {
    /**
     * The locale code. The Java the locale format is used: a two character language
     * code (ISO 639), an underscore, and two letter country code (ISO 3166). For
     * example, en\_US represents a locale of English (United States). Required on
     * create.
     */
    locale?: string;
}

/** Details of global and project permissions granted to the user. */
interface BulkPermissionGrants {
    /** List of permissions granted to the user. */
    globalPermissions: string[];
    /**
     * List of project permissions and the projects and issues those permissions
     * provide access to.
     */
    projectPermissions: BulkProjectPermissionGrants[];
}
/**
 * Details of global permissions to look up and project permissions with
 * associated projects and issues to look up.
 */
interface BulkPermissionsRequestBean {
    /** The account ID of a user. */
    accountId?: string;
    /** Global permissions to look up. */
    globalPermissions?: string[];
    /** Project permissions with associated projects and issues to look up. */
    projectPermissions?: BulkProjectPermissions[];
}
/**
 * List of project permissions and the projects and issues those permissions grant
 * access to.
 */
interface BulkProjectPermissionGrants {
    /** IDs of the issues the user has the permission for. */
    issues: number[];
    /** A project permission, */
    permission: string;
    /** IDs of the projects the user has the permission for. */
    projects: number[];
}
/** Details of project permissions and associated issues and projects to look up. */
interface BulkProjectPermissions {
    /** List of issue IDs. */
    issues?: number[];
    /** List of project permissions. */
    permissions: string[];
    /** List of project IDs. */
    projects?: number[];
}
/** Details about permissions. */
interface Permissions {
    /** List of permissions. */
    permissions?: {
        /** Details of a permission and its availability to a user. */ [key: string]: UserPermission;
    };
}
interface PermissionsKeysBean {
    /** A list of permission keys. */
    permissions: string[];
}
/** A list of projects in which a user is granted permissions. */
interface PermittedProjects {
    /** A list of projects. */
    projects?: ProjectIdentifierBean[];
}
/** The identifiers for a project. */
interface ProjectIdentifierBean {
    /** The ID of the project. */
    id?: number;
    /** The key of the project. */
    key?: string;
}
/** Details of a permission and its availability to a user. */
interface UserPermission extends Record<string, unknown> {
    /**
     * Indicate whether the permission key is deprecated. Note that deprecated keys
     * cannot be used in the `permissions parameter of Get my permissions. Deprecated
     * keys are not returned by Get all permissions.`
     */
    deprecatedKey?: boolean;
    /** The description of the permission. */
    description?: string;
    /** Whether the permission is available to the user in the queried context. */
    havePermission?: boolean;
    /**
     * The ID of the permission. Either `id` or `key` must be specified. Use [Get all
     * permissions](#api-rest-api-3-permissions-get) to get the list of permissions.
     */
    id?: string;
    /**
     * The key of the permission. Either `id` or `key` must be specified. Use [Get all
     * permissions](#api-rest-api-3-permissions-get) to get the list of permissions.
     */
    key?: string;
    /** The name of the permission. */
    name?: string;
    /** The type of the permission. */
    type?: "GLOBAL" | "PROJECT";
}

interface CreateCrossProjectReleaseRequest {
    /** The cross-project release name. */
    name: string;
    /** The IDs of the releases to include in the cross-project release. */
    releaseIds?: number[];
}
interface CreateCustomFieldRequest {
    /** The custom field ID. */
    customFieldId: number;
    /** Allows filtering issues based on their values for the custom field. */
    filter?: boolean;
}
/** The start date field for the plan. */
interface CreateDateFieldRequest {
    /** A date custom field ID. This is required if the type is "DateCustomField". */
    dateCustomFieldId?: number;
    /**
     * The date field type. This must be "DueDate", "TargetStartDate", "TargetEndDate"
     * or "DateCustomField".
     */
    type: "DueDate" | "TargetStartDate" | "TargetEndDate" | "DateCustomField";
}
/** The exclusion rules for the plan. */
interface CreateExclusionRulesRequest {
    /** The IDs of the issues to exclude from the plan. */
    issueIds?: number[];
    /** The IDs of the issue types to exclude from the plan. */
    issueTypeIds?: number[];
    /** Issues completed this number of days ago will be excluded from the plan. */
    numberOfDaysToShowCompletedIssues?: number;
    /** The IDs of the releases to exclude from the plan. */
    releaseIds?: number[];
    /** The IDs of the work status categories to exclude from the plan. */
    workStatusCategoryIds?: number[];
    /** The IDs of the work statuses to exclude from the plan. */
    workStatusIds?: number[];
}
interface CreateIssueSourceRequest {
    /** The issue source type. This must be "Board", "Project" or "Filter". */
    type: "Board" | "Project" | "Filter";
    /**
     * The issue source value. This must be a board ID if the type is "Board", a
     * project ID if the type is "Project" or a filter ID if the type is "Filter".
     */
    value: number;
}
/** The permission holder. */
interface CreatePermissionHolderRequest {
    /** The permission holder type. This must be "Group" or "AccountId". */
    type: "Group" | "AccountId";
    /**
     * The permission holder value. This must be a group name if the type is "Group"
     * or an account ID if the type is "AccountId".
     */
    value: string;
}
interface CreatePermissionRequest {
    /** The permission holder. */
    holder: CreatePermissionHolderRequest;
    /** The permission type. This must be "View" or "Edit". */
    type: "View" | "Edit";
}
interface CreatePlanRequest {
    /** The cross-project releases to include in the plan. */
    crossProjectReleases?: CreateCrossProjectReleaseRequest[];
    /** The custom fields for the plan. */
    customFields?: CreateCustomFieldRequest[];
    /** The exclusion rules for the plan. */
    exclusionRules?: CreateExclusionRulesRequest;
    /** The issue sources to include in the plan. */
    issueSources: CreateIssueSourceRequest[];
    /** The account ID of the plan lead. */
    leadAccountId?: string;
    /** The plan name. */
    name: string;
    /** The permissions for the plan. */
    permissions?: CreatePermissionRequest[];
    /** The scheduling settings for the plan. */
    scheduling: CreateSchedulingRequest;
}
/** The scheduling settings for the plan. */
interface CreateSchedulingRequest {
    /** The dependencies for the plan. This must be "Sequential" or "Concurrent". */
    dependencies?: "Sequential" | "Concurrent";
    /** The end date field for the plan. */
    endDate?: CreateDateFieldRequest;
    /** The estimation unit for the plan. This must be "StoryPoints", "Days" or "Hours". */
    estimation: "StoryPoints" | "Days" | "Hours";
    /**
     * The inferred dates for the plan. This must be "None", "SprintDates" or
     * "ReleaseDates".
     */
    inferredDates?: "None" | "SprintDates" | "ReleaseDates";
    /** The start date field for the plan. */
    startDate?: CreateDateFieldRequest;
}
interface DuplicatePlanRequest {
    /** The plan name. */
    name: string;
}
interface GetCrossProjectReleaseResponse {
    /** The cross-project release name. */
    name?: string;
    /** The IDs of the releases included in the cross-project release. */
    releaseIds?: number[];
}
interface GetCustomFieldResponse {
    /** The custom field ID. */
    customFieldId: number;
    /** Allows filtering issues based on their values for the custom field. */
    filter?: boolean;
}
/** The start date field for the plan. */
interface GetDateFieldResponse {
    /** A date custom field ID. This is returned if the type is "DateCustomField". */
    dateCustomFieldId?: number;
    /**
     * The date field type. This is "DueDate", "TargetStartDate", "TargetEndDate" or
     * "DateCustomField".
     */
    type: "DueDate" | "TargetStartDate" | "TargetEndDate" | "DateCustomField";
}
/** The exclusion rules for the plan. */
interface GetExclusionRulesResponse {
    /** The IDs of the issues excluded from the plan. */
    issueIds?: number[];
    /** The IDs of the issue types excluded from the plan. */
    issueTypeIds?: number[];
    /** Issues completed this number of days ago are excluded from the plan. */
    numberOfDaysToShowCompletedIssues: number;
    /** The IDs of the releases excluded from the plan. */
    releaseIds?: number[];
    /** The IDs of the work status categories excluded from the plan. */
    workStatusCategoryIds?: number[];
    /** The IDs of the work statuses excluded from the plan. */
    workStatusIds?: number[];
}
interface GetIssueSourceResponse {
    /** The issue source type. This is "Board", "Project" or "Filter". */
    type: "Board" | "Project" | "Filter" | "Custom";
    /**
     * The issue source value. This is a board ID if the type is "Board", a project ID
     * if the type is "Project" or a filter ID if the type is "Filter".
     */
    value: number;
}
/** The permission holder. */
interface GetPermissionHolderResponse {
    /** The permission holder type. This is "Group" or "AccountId". */
    type: "Group" | "AccountId";
    /**
     * The permission holder value. This is a group name if the type is "Group" or an
     * account ID if the type is "AccountId".
     */
    value: string;
}
interface GetPermissionResponse {
    /** The permission holder. */
    holder: GetPermissionHolderResponse;
    /** The permission type. This is "View" or "Edit". */
    type: "View" | "Edit";
}
interface GetPlanResponse {
    /** The cross-project releases included in the plan. */
    crossProjectReleases?: GetCrossProjectReleaseResponse[];
    /** The custom fields for the plan. */
    customFields?: GetCustomFieldResponse[];
    /** The exclusion rules for the plan. */
    exclusionRules?: GetExclusionRulesResponse;
    /** The plan ID. */
    id: number;
    /** The issue sources included in the plan. */
    issueSources?: GetIssueSourceResponse[];
    /** The date when the plan was last saved in UTC. */
    lastSaved?: string;
    /** The account ID of the plan lead. */
    leadAccountId?: string;
    /** The plan name. */
    name?: string;
    /** The permissions for the plan. */
    permissions?: GetPermissionResponse[];
    /** The scheduling settings for the plan. */
    scheduling: GetSchedulingResponse;
    /** The plan status. This is "Active", "Trashed" or "Archived". */
    status: "Active" | "Trashed" | "Archived";
}
interface GetPlanResponseForPage {
    /** The plan ID. */
    id: string;
    /** The issue sources included in the plan. */
    issueSources?: GetIssueSourceResponse[];
    /** The plan name. */
    name: string;
    /** Default scenario ID. */
    scenarioId: string;
    /** The plan status. This is "Active", "Trashed" or "Archived". */
    status: "Active" | "Trashed" | "Archived";
}
/** The scheduling settings for the plan. */
interface GetSchedulingResponse {
    /** The dependencies for the plan. This is "Sequential" or "Concurrent". */
    dependencies: "Sequential" | "Concurrent";
    /** The end date field for the plan. */
    endDate: GetDateFieldResponse;
    /** The estimation unit for the plan. This is "StoryPoints", "Days" or "Hours". */
    estimation: "StoryPoints" | "Days" | "Hours";
    /**
     * The inferred dates for the plan. This is "None", "SprintDates" or
     * "ReleaseDates".
     */
    inferredDates: "None" | "SprintDates" | "ReleaseDates";
    /** The start date field for the plan. */
    startDate: GetDateFieldResponse;
}
interface PageWithCursorGetPlanResponseForPage {
    cursor?: string;
    last?: boolean;
    nextPageCursor?: string;
    size?: number;
    total?: number;
    values?: GetPlanResponseForPage[];
}

/** Details of a new priority scheme */
interface CreatePrioritySchemeDetails {
    /** The ID of the default priority for the priority scheme. */
    defaultPriorityId: number;
    /** The description of the priority scheme. */
    description?: string;
    /**
     * Instructions to migrate the priorities of issues.
     *
     * `in` mappings are used to migrate the priorities of issues to priorities used
     * within the priority scheme.
     *
     * `out` mappings are used to migrate the priorities of issues to priorities not
     * used within the priority scheme.
     *
     *  *  When **priorities** are **added** to the new priority scheme, no mapping
     * needs to be provided as the new priorities are not used by any issues.
     *  *  When **priorities** are **removed** from the new priority scheme, no
     * mapping needs to be provided as the removed priorities are not used by any
     * issues.
     *  *  When **projects** are **added** to the priority scheme, the priorities of
     * issues in those projects might need to be migrated to new priorities used by
     * the priority scheme. This can occur when the current scheme does not use all
     * the priorities in the project(s)' priority scheme(s).
     *
     *      *  An `in` mapping must be provided for each of these priorities.
     *  *  When **projects** are **removed** from the priority scheme, no mapping
     * needs to be provided as the removed projects are not using the priorities of
     * the new priority scheme.
     *
     * For more information on `in` and `out` mappings, see the child properties
     * documentation for the `PriorityMapping` object below.
     */
    mappings?: PriorityMapping;
    /** The name of the priority scheme. Must be unique. */
    name: string;
    /** The IDs of priorities in the scheme. */
    priorityIds: number[];
    /** The IDs of projects that will use the priority scheme. */
    projectIds?: number[];
}
/** A page of items. */
interface PageBeanPrioritySchemeWithPaginatedPrioritiesAndProjects {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: PrioritySchemeWithPaginatedPrioritiesAndProjects[];
}
/** A page of items. */
interface PageBeanPriorityWithSequence {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: PriorityWithSequence[];
}
/** Mapping of issue priorities for changes in priority schemes. */
interface PriorityMapping {
    /**
     * The mapping of priorities for issues being migrated **into** this priority
     * scheme. Key is the old priority ID, value is the new priority ID (must exist in
     * this priority scheme).
     *
     * E.g. The current priority scheme has priority ID `10001`. Issues with priority
     * ID `10000` are being migrated into this priority scheme will need mapping to
     * new priorities. The `in` mapping would be `{"10000": 10001}`.
     */
    in?: {
        [key: string]: number;
    };
    /**
     * The mapping of priorities for issues being migrated **out of** this priority
     * scheme. Key is the old priority ID (must exist in this priority scheme), value
     * is the new priority ID (must exist in the default priority scheme). Required
     * for updating an existing priority scheme. Not used when creating a new priority
     * scheme.
     *
     * E.g. The current priority scheme has priority ID `10001`. Issues with priority
     * ID `10001` are being migrated out of this priority scheme will need mapping to
     * new priorities. The `out` mapping would be `{"10001": 10000}`.
     */
    out?: {
        [key: string]: number;
    };
}
/** Priorities to remove from a scheme */
interface PrioritySchemeChangesWithoutMappings {
    /** Affected entity ids. */
    ids: number[];
}
/** The ID of a priority scheme. */
interface PrioritySchemeId {
    /** The ID of the priority scheme. */
    id?: string;
    /** The in-progress issue migration task. */
    task?: TaskProgressBeanJsonNode;
}
/** A priority scheme with paginated priorities and projects. */
interface PrioritySchemeWithPaginatedPrioritiesAndProjects extends Record<string, unknown> {
    default?: boolean;
    /** The ID of the default issue priority. */
    defaultPriorityId?: string;
    /** The description of the priority scheme */
    description?: string;
    /** The ID of the priority scheme. */
    id: string;
    isDefault?: boolean;
    /** The name of the priority scheme */
    name: string;
    /** The paginated list of priorities. */
    priorities?: PageBeanPriorityWithSequence;
    /** The paginated list of projects. */
    projects?: PageBeanProjectDetails;
    /** The URL of the priority scheme. */
    self?: string;
}
/** An issue priority with sequence information. */
interface PriorityWithSequence {
    /** The description of the issue priority. */
    description?: string;
    /** The URL of the icon for the issue priority. */
    iconUrl?: string;
    /** The ID of the issue priority. */
    id?: string;
    /** Whether this priority is the default. */
    isDefault?: boolean;
    /** The name of the issue priority. */
    name?: string;
    /** The URL of the issue priority. */
    self?: string;
    /** The sequence of the issue priority. */
    sequence?: string;
    /** The color used to indicate the issue priority. */
    statusColor?: string;
}
/**
 * Details of changes to a priority scheme's priorities that require suggested
 * priority mappings.
 */
interface SuggestedMappingsForPrioritiesRequestBean {
    /** The ids of priorities being removed from the scheme. */
    add?: number[];
    /** The ids of priorities being removed from the scheme. */
    remove?: number[];
}
/**
 * Details of changes to a priority scheme's projects that require suggested
 * priority mappings.
 */
interface SuggestedMappingsForProjectsRequestBean {
    /** The ids of projects being added to the scheme. */
    add?: number[];
}
/**
 * Details of changes to a priority scheme that require suggested priority
 * mappings.
 */
interface SuggestedMappingsRequestBean {
    /** The maximum number of results that could be on the page. */
    maxResults?: number;
    /** The priority changes in the scheme. */
    priorities?: SuggestedMappingsForPrioritiesRequestBean;
    /** The project changes in the scheme. */
    projects?: SuggestedMappingsForProjectsRequestBean;
    /** The id of the priority scheme. */
    schemeId?: number;
    /** The index of the first item returned on the page. */
    startAt?: number;
}
/** Details about a task. */
interface TaskProgressBeanJsonNode {
    /** The description of the task. */
    description?: string;
    /** The execution time of the task, in milliseconds. */
    elapsedRuntime: number;
    /** A timestamp recording when the task was finished. */
    finished?: number;
    /** The ID of the task. */
    id: string;
    /** A timestamp recording when the task progress was last updated. */
    lastUpdate: number;
    /** Information about the progress of the task. */
    message?: string;
    /** The progress of the task, as a percentage complete. */
    progress: number;
    /** The result of the task execution. */
    result?: JsonNode;
    /** The URL of the task. */
    self: string;
    /** A timestamp recording when the task was started. */
    started?: number;
    /** The status of the task. */
    status: "ENQUEUED" | "RUNNING" | "COMPLETE" | "FAILED" | "CANCEL_REQUESTED" | "CANCELLED" | "DEAD";
    /** A timestamp recording when the task was submitted. */
    submitted: number;
    /** The ID of the user who submitted the task. */
    submittedBy: number;
}
/** Update priorities in a scheme */
interface UpdatePrioritiesInSchemeRequestBean extends Record<string, unknown> {
    /** Priorities to add to a scheme */
    add?: PrioritySchemeChangesWithoutMappings;
    /** Priorities to remove from a scheme */
    remove?: PrioritySchemeChangesWithoutMappings;
}
/** Details of a priority scheme. */
interface UpdatePrioritySchemeRequestBean {
    /** The default priority of the scheme. */
    defaultPriorityId?: number;
    /** The description of the priority scheme. */
    description?: string;
    /**
     * Instructions to migrate the priorities of issues.
     *
     * `in` mappings are used to migrate the priorities of issues to priorities used
     * within the priority scheme.
     *
     * `out` mappings are used to migrate the priorities of issues to priorities not
     * used within the priority scheme.
     *
     *  *  When **priorities** are **added** to the priority scheme, no mapping needs
     * to be provided as the new priorities are not used by any issues.
     *  *  When **priorities** are **removed** from the priority scheme, issues that
     * are using those priorities must be migrated to new priorities used by the
     * priority scheme.
     *
     *      *  An `in` mapping must be provided for each of these priorities.
     *  *  When **projects** are **added** to the priority scheme, the priorities of
     * issues in those projects might need to be migrated to new priorities used by
     * the priority scheme. This can occur when the current scheme does not use all
     * the priorities in the project(s)' priority scheme(s).
     *
     *      *  An `in` mapping must be provided for each of these priorities.
     *  *  When **projects** are **removed** from the priority scheme, the priorities
     * of issues in those projects might need to be migrated to new priorities within
     * the **Default Priority Scheme** that are not used by the priority scheme. This
     * can occur when the **Default Priority Scheme** does not use all the priorities
     * within the current scheme.
     *
     *      *  An `out` mapping must be provided for each of these priorities.
     *
     * For more information on `in` and `out` mappings, see the child properties
     * documentation for the `PriorityMapping` object below.
     */
    mappings?: PriorityMapping;
    /** The name of the priority scheme. Must be unique. */
    name?: string;
    /** The priorities in the scheme. */
    priorities?: UpdatePrioritiesInSchemeRequestBean;
    /** The projects in the scheme. */
    projects?: UpdateProjectsInSchemeRequestBean;
}
/** Details of the updated priority scheme. */
interface UpdatePrioritySchemeResponseBean extends Record<string, unknown> {
    /** A priority scheme with paginated priorities and projects. */
    priorityScheme?: PrioritySchemeWithPaginatedPrioritiesAndProjects;
    /** The in-progress issue migration task. */
    task?: TaskProgressBeanJsonNode;
}
/** Update projects in a scheme */
interface UpdateProjectsInSchemeRequestBean extends Record<string, unknown> {
    /** Projects to add to a scheme */
    add?: PrioritySchemeChangesWithoutMappings;
    /** Projects to remove from a scheme */
    remove?: PrioritySchemeChangesWithoutMappings;
}

/** List of project avatars. */
interface ProjectAvatars {
    /** List of avatars added to Jira. These avatars may be deleted. */
    custom?: Avatar[];
    /** List of avatars included with Jira. These avatars cannot be deleted. */
    system?: Avatar[];
}

/** The request for updating the default project classification level. */
interface UpdateDefaultProjectClassificationBean {
    /** The ID of the project classification. */
    id: string;
}

/** Count of issues assigned to a component. */
interface ComponentIssuesCount {
    /** The count of issues assigned to a component. */
    issueCount?: number;
    /** The URL for this count of issues for a component. */
    self?: string;
}
interface ComponentJsonBean extends Record<string, unknown> {
    ari?: string;
    description?: string;
    id?: string;
    metadata?: {
        [key: string]: string;
    };
    name?: string;
    self?: string;
}
/** Details about a component with a count of the issues it contains. */
interface ComponentWithIssueCount {
    /**
     * The details of the user associated with `assigneeType`, if any. See
     * `realAssignee` for details of the user assigned to issues created with this
     * component.
     */
    assignee?: User;
    /**
     * The nominal user type used to determine the assignee for issues created with
     * this component. See `realAssigneeType` for details on how the type of the user,
     * and hence the user, assigned to issues is determined. Takes the following
     * values:
     *
     *  *  `PROJECT_LEAD` the assignee to any issues created with this component is
     * nominally the lead for the project the component is in.
     *  *  `COMPONENT_LEAD` the assignee to any issues created with this component is
     * nominally the lead for the component.
     *  *  `UNASSIGNED` an assignee is not set for issues created with this component.
     *  *  `PROJECT_DEFAULT` the assignee to any issues created with this component is
     * nominally the default assignee for the project that the component is in.
     */
    assigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED";
    /** The description for the component. */
    description?: string;
    /** The unique identifier for the component. */
    id?: string;
    /**
     * Whether a user is associated with `assigneeType`. For example, if the
     * `assigneeType` is set to `COMPONENT_LEAD` but the component lead is not set,
     * then `false` is returned.
     */
    isAssigneeTypeValid?: boolean;
    /** Count of issues for the component. */
    issueCount?: number;
    /** The user details for the component's lead user. */
    lead?: User;
    /** The name for the component. */
    name?: string;
    /** The key of the project to which the component is assigned. */
    project?: string;
    /** Not used. */
    projectId?: number;
    /**
     * The user assigned to issues created with this component, when `assigneeType`
     * does not identify a valid assignee.
     */
    realAssignee?: User;
    /**
     * The type of the assignee that is assigned to issues created with this
     * component, when an assignee cannot be set from the `assigneeType`. For example,
     * `assigneeType` is set to `COMPONENT_LEAD` but no component lead is set. This
     * property is set to one of the following values:
     *
     *  *  `PROJECT_LEAD` when `assigneeType` is `PROJECT_LEAD` and the project lead
     * has permission to be assigned issues in the project that the component is in.
     *  *  `COMPONENT_LEAD` when `assignee`Type is `COMPONENT_LEAD` and the component
     * lead has permission to be assigned issues in the project that the component is
     * in.
     *  *  `UNASSIGNED` when `assigneeType` is `UNASSIGNED` and Jira is configured to
     * allow unassigned issues.
     *  *  `PROJECT_DEFAULT` when none of the preceding cases are true.
     */
    realAssigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED";
    /** The URL for this count of the issues contained in the component. */
    self?: string;
}
/** A page of items. */
interface PageBean2ComponentJsonBean {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: ComponentJsonBean[];
}
/** A page of items. */
interface PageBeanComponentWithIssueCount {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: ComponentWithIssueCount[];
}

/** A project's sender email address. */
interface ProjectEmailAddress {
    /** The email address. */
    emailAddress?: string;
    /** When using a custom domain, the status of the email address. */
    emailAddressStatus?: string[];
}

/** The list of features on a project. */
interface ContainerForProjectFeatures {
    /** The project features. */
    features?: ProjectFeature[];
}
/** Details of a project feature. */
interface ProjectFeature {
    /** The key of the feature. */
    feature?: string;
    /** URI for the image representing the feature. */
    imageUri?: string;
    /** Localized display description for the feature. */
    localisedDescription?: string;
    /** Localized display name for the feature. */
    localisedName?: string;
    /** List of keys of the features required to enable the feature. */
    prerequisites?: string[];
    /** The ID of the project. */
    projectId?: number;
    /**
     * The state of the feature. When updating the state of a feature, only ENABLED
     * and DISABLED are supported. Responses can contain all values
     */
    state?: "ENABLED" | "DISABLED" | "COMING_SOON";
    /** Whether the state of the feature can be updated. */
    toggleLocked?: boolean;
}
/** Details of the feature state. */
interface ProjectFeatureState {
    /** The feature state. */
    state?: "ENABLED" | "DISABLED" | "COMING_SOON";
}

interface IdBean {
    /**
     * The ID of the permission scheme to associate with the project. Use the [Get all
     * permission schemes](#api-rest-api-3-permissionscheme-get) resource to get a
     * list of permission scheme IDs.
     */
    id: number;
}
/** List of issue level security items in a project. */
interface ProjectIssueSecurityLevels {
    /** Issue level security items list. */
    levels: SecurityLevel[];
}

interface ActorInputBean {
    /**
     * The name of the group to add as a default actor. This parameter cannot be used
     * with the `groupId` parameter. As a group's name can change,use of `groupId` is
     * recommended. This parameter accepts a comma-separated list. For example,
     * `"group":["project-admin", "jira-developers"]`.
     */
    group?: string[];
    /**
     * The ID of the group to add as a default actor. This parameter cannot be used
     * with the `group` parameter This parameter accepts a comma-separated list. For
     * example, `"groupId":["77f6ab39-e755-4570-a6ae-2d7a8df0bcb8",
     * "0c011f85-69ed-49c4-a801-3b18d0f771bc"]`.
     */
    groupId?: string[];
    /**
     * The account IDs of the users to add as default actors. This parameter accepts a
     * comma-separated list. For example, `"user":["5b10a2844c20165700ede21g",
     * "5b109f2e9729b51b54dc274d"]`.
     */
    user?: string[];
}
interface ActorsMap {
    /**
     * The name of the group to add. This parameter cannot be used with the `groupId`
     * parameter. As a group's name can change, use of `groupId` is recommended.
     */
    group?: string[];
    /**
     * The ID of the group to add. This parameter cannot be used with the `group`
     * parameter.
     */
    groupId?: string[];
    /** The user account ID of the user to add. */
    user?: string[];
}
interface ProjectRoleActorsUpdateBean {
    /**
     * The actors to add to the project role.
     *
     * Add groups using:
     *
     *  *  `atlassian-group-role-actor` and a list of group names.
     *  *  `atlassian-group-role-actor-id` and a list of group IDs.
     *
     * As a group's name can change, use of `atlassian-group-role-actor-id` is
     * recommended. For example,
     * `"atlassian-group-role-actor-id":["eef79f81-0b89-4fca-a736-4be531a10869","77f6ab39-e755-4570-a6ae-2d7a8df0bcb8"]`.
     *
     * Add users using `atlassian-user-role-actor` and a list of account IDs. For
     * example, `"atlassian-user-role-actor":["12345678-9abc-def1-2345-6789abcdef12",
     * "abcdef12-3456-789a-bcde-f123456789ab"]`.
     */
    categorisedActors?: {
        [key: string]: string[];
    };
    /**
     * The ID of the project role. Use [Get all project
     * roles](#api-rest-api-3-role-get) to get a list of project role IDs.
     */
    id?: number;
}

interface CreateUpdateRoleRequestBean {
    /**
     * A description of the project role. Required when fully updating a project role.
     * Optional when creating or partially updating a project role.
     */
    description?: string;
    /**
     * The name of the project role. Must be unique. Cannot begin or end with
     * whitespace. The maximum length is 255 characters. Required when creating a
     * project role. Optional when partially updating a project role.
     */
    name?: string;
}
/** Details about a project role. */
interface ProjectRoleDetails {
    /** Whether this role is the admin role for the project. */
    admin?: boolean;
    /** Whether this role is the default role for the project. */
    default?: boolean;
    /** The description of the project role. */
    description?: string;
    /** The ID of the project role. */
    id?: number;
    /** The name of the project role. */
    name?: string;
    /** Whether the roles are configurable for this project. */
    roleConfigurable?: boolean;
    /**
     * The scope of the role. Indicated for roles associated with [next-gen
     * projects](https://confluence.atlassian.com/x/loMyO).
     */
    scope?: Scope;
    /** The URL the project role details. */
    self?: string;
    /** The translated name of the project role. */
    translatedName?: string;
}

/** Details about the project. */
interface CreateProjectDetails {
    /** The default assignee when creating issues for this project. */
    assigneeType?: "PROJECT_LEAD" | "UNASSIGNED";
    /** An integer value for the project's avatar. */
    avatarId?: number;
    /**
     * The ID of the project's category. A complete list of category IDs is found
     * using the [Get all project categories](#api-rest-api-3-projectCategory-get)
     * operation.
     */
    categoryId?: number;
    /** A brief description of the project. */
    description?: string;
    /**
     * The ID of the field configuration scheme for the project. Use the [Get all
     * field configuration schemes](#api-rest-api-3-fieldconfigurationscheme-get)
     * operation to get a list of field configuration scheme IDs. If you specify the
     * field configuration scheme you cannot specify the project template key.
     */
    fieldConfigurationScheme?: number;
    /**
     * The ID of the issue security scheme for the project, which enables you to
     * control who can and cannot view issues. Use the [Get issue security
     * schemes](#api-rest-api-3-issuesecurityschemes-get) resource to get all issue
     * security scheme IDs.
     */
    issueSecurityScheme?: number;
    /**
     * The ID of the issue type scheme for the project. Use the [Get all issue type
     * schemes](#api-rest-api-3-issuetypescheme-get) operation to get a list of issue
     * type scheme IDs. If you specify the issue type scheme you cannot specify the
     * project template key.
     */
    issueTypeScheme?: number;
    /**
     * The ID of the issue type screen scheme for the project. Use the [Get all issue
     * type screen schemes](#api-rest-api-3-issuetypescreenscheme-get) operation to
     * get a list of issue type screen scheme IDs. If you specify the issue type
     * screen scheme you cannot specify the project template key.
     */
    issueTypeScreenScheme?: number;
    /**
     * Project keys must be unique and start with an uppercase letter followed by one
     * or more uppercase alphanumeric characters. The maximum length is 10 characters.
     */
    key: string;
    /**
     * This parameter is deprecated because of privacy changes. Use `leadAccountId`
     * instead. See the [migration
     * guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details. The user name of the project lead. Either `lead` or
     * `leadAccountId` must be set when creating a project. Cannot be provided with
     * `leadAccountId`.
     */
    lead?: string;
    /**
     * The account ID of the project lead. Either `lead` or `leadAccountId` must be
     * set when creating a project. Cannot be provided with `lead`.
     */
    leadAccountId?: string;
    /** The name of the project. */
    name: string;
    /**
     * The ID of the notification scheme for the project. Use the [Get notification
     * schemes](#api-rest-api-3-notificationscheme-get) resource to get a list of
     * notification scheme IDs.
     */
    notificationScheme?: number;
    /**
     * The ID of the permission scheme for the project. Use the [Get all permission
     * schemes](#api-rest-api-3-permissionscheme-get) resource to see a list of all
     * permission scheme IDs.
     */
    permissionScheme?: number;
    /**
     * A predefined configuration for a project. The type of the `projectTemplateKey`
     * must match with the type of the `projectTypeKey`.
     */
    projectTemplateKey?: "com.pyxis.greenhopper.jira:gh-simplified-agility-kanban" | "com.pyxis.greenhopper.jira:gh-simplified-agility-scrum" | "com.pyxis.greenhopper.jira:gh-simplified-basic" | "com.pyxis.greenhopper.jira:gh-simplified-kanban-classic" | "com.pyxis.greenhopper.jira:gh-simplified-scrum-classic" | "com.pyxis.greenhopper.jira:gh-cross-team-template" | "com.pyxis.greenhopper.jira:gh-cross-team-planning-template" | "com.atlassian.servicedesk:simplified-it-service-management" | "com.atlassian.servicedesk:simplified-it-service-management-basic" | "com.atlassian.servicedesk:simplified-it-service-management-operations" | "com.atlassian.servicedesk:simplified-general-service-desk" | "com.atlassian.servicedesk:simplified-general-service-desk-it" | "com.atlassian.servicedesk:simplified-general-service-desk-business" | "com.atlassian.servicedesk:simplified-internal-service-desk" | "com.atlassian.servicedesk:simplified-external-service-desk" | "com.atlassian.servicedesk:simplified-hr-service-desk" | "com.atlassian.servicedesk:simplified-facilities-service-desk" | "com.atlassian.servicedesk:simplified-legal-service-desk" | "com.atlassian.servicedesk:simplified-marketing-service-desk" | "com.atlassian.servicedesk:simplified-finance-service-desk" | "com.atlassian.servicedesk:simplified-analytics-service-desk" | "com.atlassian.servicedesk:simplified-design-service-desk" | "com.atlassian.servicedesk:simplified-sales-service-desk" | "com.atlassian.servicedesk:simplified-halp-service-desk" | "com.atlassian.servicedesk:simplified-blank-project-it" | "com.atlassian.servicedesk:simplified-blank-project-business" | "com.atlassian.servicedesk:next-gen-it-service-desk" | "com.atlassian.servicedesk:next-gen-hr-service-desk" | "com.atlassian.servicedesk:next-gen-legal-service-desk" | "com.atlassian.servicedesk:next-gen-marketing-service-desk" | "com.atlassian.servicedesk:next-gen-facilities-service-desk" | "com.atlassian.servicedesk:next-gen-general-service-desk" | "com.atlassian.servicedesk:next-gen-general-it-service-desk" | "com.atlassian.servicedesk:next-gen-general-business-service-desk" | "com.atlassian.servicedesk:next-gen-analytics-service-desk" | "com.atlassian.servicedesk:next-gen-finance-service-desk" | "com.atlassian.servicedesk:next-gen-design-service-desk" | "com.atlassian.servicedesk:next-gen-sales-service-desk" | "com.atlassian.jira-core-project-templates:jira-core-simplified-content-management" | "com.atlassian.jira-core-project-templates:jira-core-simplified-document-approval" | "com.atlassian.jira-core-project-templates:jira-core-simplified-lead-tracking" | "com.atlassian.jira-core-project-templates:jira-core-simplified-process-control" | "com.atlassian.jira-core-project-templates:jira-core-simplified-procurement" | "com.atlassian.jira-core-project-templates:jira-core-simplified-project-management" | "com.atlassian.jira-core-project-templates:jira-core-simplified-recruitment" | "com.atlassian.jira-core-project-templates:jira-core-simplified-task-";
    /**
     * The [project
     * type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes),
     * which defines the application-specific feature set. If you don't specify the
     * project template you have to specify the project type.
     */
    projectTypeKey?: "software" | "service_desk" | "business";
    /** A link to information about this project, such as project documentation */
    url?: string;
    /**
     * The ID of the workflow scheme for the project. Use the [Get all workflow
     * schemes](#api-rest-api-3-workflowscheme-get) operation to get a list of
     * workflow scheme IDs. If you specify the workflow scheme you cannot specify the
     * project template key.
     */
    workflowScheme?: number;
}
/** Details of an issue type. */
interface IssueTypeInfo {
    /** The avatar of the issue type. */
    avatarId?: number;
    /** The ID of the issue type. */
    id?: number;
    /** The name of the issue type. */
    name?: string;
}
/** Status details for an issue type. */
interface IssueTypeWithStatus {
    /** The ID of the issue type. */
    id: string;
    /** The name of the issue type. */
    name: string;
    /** The URL of the issue type's status details. */
    self: string;
    /** List of status details for the issue type. */
    statuses: StatusDetails[];
    /** Whether this issue type represents subtasks. */
    subtask: boolean;
}
/** Identifiers for a project. */
interface ProjectIdentifiers {
    /** The ID of the created project. */
    id: number;
    /** The key of the created project. */
    key: string;
    /** The URL of the created project. */
    self: string;
}
/** The hierarchy of issue types within a project. */
interface ProjectIssueTypeHierarchy {
    /** Details of an issue type hierarchy level. */
    hierarchy?: ProjectIssueTypesHierarchyLevel[];
    /** The ID of the project. */
    projectId?: number;
}
/** Details of an issue type hierarchy level. */
interface ProjectIssueTypesHierarchyLevel {
    /**
     * The ID of the issue type hierarchy level. This property is deprecated, see
     * [Change notice: Removing hierarchy level IDs from next-gen
     * APIs](https://developer.atlassian.com/cloud/jira/platform/change-notice-removing-hierarchy-level-ids-from-next-gen-apis/).
     */
    entityId?: string;
    /** The list of issue types in the hierarchy level. */
    issueTypes?: IssueTypeInfo[];
    /** The level of the issue type hierarchy level. */
    level?: number;
    /** The name of the issue type hierarchy level. */
    name?: string;
}
interface StringList {
}
/** Details about the project. */
interface UpdateProjectDetails {
    /** The default assignee when creating issues for this project. */
    assigneeType?: "PROJECT_LEAD" | "UNASSIGNED";
    /** An integer value for the project's avatar. */
    avatarId?: number;
    /**
     * The ID of the project's category. A complete list of category IDs is found
     * using the [Get all project categories](#api-rest-api-3-projectCategory-get)
     * operation. To remove the project category from the project, set the value to
     * `-1.`
     */
    categoryId?: number;
    /** A brief description of the project. */
    description?: string;
    /**
     * The ID of the issue security scheme for the project, which enables you to
     * control who can and cannot view issues. Use the [Get issue security
     * schemes](#api-rest-api-3-issuesecurityschemes-get) resource to get all issue
     * security scheme IDs.
     */
    issueSecurityScheme?: number;
    /**
     * Project keys must be unique and start with an uppercase letter followed by one
     * or more uppercase alphanumeric characters. The maximum length is 10 characters.
     */
    key?: string;
    /**
     * This parameter is deprecated because of privacy changes. Use `leadAccountId`
     * instead. See the [migration
     * guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details. The user name of the project lead. Cannot be provided with
     * `leadAccountId`.
     */
    lead?: string;
    /** The account ID of the project lead. Cannot be provided with `lead`. */
    leadAccountId?: string;
    /** The name of the project. */
    name?: string;
    /**
     * The ID of the notification scheme for the project. Use the [Get notification
     * schemes](#api-rest-api-3-notificationscheme-get) resource to get a list of
     * notification scheme IDs.
     */
    notificationScheme?: number;
    /**
     * The ID of the permission scheme for the project. Use the [Get all permission
     * schemes](#api-rest-api-3-permissionscheme-get) resource to see a list of all
     * permission scheme IDs.
     */
    permissionScheme?: number;
    /**
     * Previous project keys to be released from the current project. Released keys
     * must belong to the current project and not contain the current project key
     */
    releasedProjectKeys?: string[];
    /** A link to information about this project, such as project documentation */
    url?: string;
}

/** The payload for creating a board column */
interface BoardColumnPayload {
    /** The maximum issue constraint for the column */
    maximumIssueConstraint?: number;
    /** The minimum issue constraint for the column */
    minimumIssueConstraint?: number;
    /**
     * The name of the column
     *
     * @example
     * TODO
     */
    name?: string;
    /**
     * The status IDs for the column
     *
     * @example
     * pcri:status:ref:done
     */
    statusIds?: ProjectCreateResourceIdentifier[];
}
/** The payload for setting a board feature */
interface BoardFeaturePayload {
    /** The key of the feature */
    featureKey?: "ESTIMATION" | "SPRINTS";
    /** Whether the feature should be turned on or off */
    state?: boolean;
}
/** The payload for creating a board */
interface BoardPayload {
    /**
     * Takes in a JQL string to create a new filter. If no value is provided, it'll
     * default to a JQL filter for the project creating
     *
     * @example
     * project = 'My Project'
     */
    boardFilterJQL?: string;
    /** Card color settings of the board */
    cardColorStrategy?: "ISSUE_TYPE" | "REQUEST_TYPE" | "ASSIGNEE" | "PRIORITY" | "NONE" | "CUSTOM";
    /** Card layout configuration. */
    cardLayout?: CardLayout;
    /** Card layout settings of the board */
    cardLayouts?: CardLayoutField[];
    /** The columns of the board */
    columns?: BoardColumnPayload[];
    /** Feature settings for the board */
    features?: BoardFeaturePayload[];
    /** The name of the board */
    name?: string;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /** The quick filters for the board. */
    quickFilters?: QuickFilterPayload[];
    /** Whether sprints are supported on the board */
    supportsSprint?: boolean;
    /** The payload for customising a swimlanes on a board */
    swimlanes?: SwimlanesPayload;
    /** Working days configuration */
    workingDaysConfig?: WorkingDaysConfig;
}
interface BoardsPayload {
    /** The boards to be associated with the project. */
    boards?: BoardPayload[];
}
/** Card layout configuration. */
interface CardLayout {
    /** Whether to show days in column */
    showDaysInColumn?: boolean;
}
/** Card layout settings of the board */
interface CardLayoutField {
    fieldId?: string;
    id?: number;
    mode?: "PLAN" | "WORK";
    position?: number;
}
/** The payload for creating a condition group in a workflow */
interface ConditionGroupPayload {
    /** The nested conditions of the condition group. */
    conditionGroup?: ConditionGroupPayload[];
    /** The rules for this condition. */
    conditions?: RulePayload[];
    /**
     * Determines how the conditions in the group are evaluated. Accepts either `ANY`
     * or `ALL`. If `ANY` is used, at least one condition in the group must be true
     * for the group to evaluate to true. If `ALL` is used, all conditions in the
     * group must be true for the group to evaluate to true.
     */
    operation?: "ANY" | "ALL";
}
/**
 * Defines the payload for the custom field definitions. See
 * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-fields/\#api-rest-api-3-field-post
 */
interface CustomFieldPayload {
    /**
     * The type of the custom field
     *
     * @example
     * See https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-fields/#api-rest-api-3-field-post `type` for values
     */
    cfType?: string;
    /**
     * The description of the custom field
     *
     * @example
     * This is a custom field
     */
    description?: string;
    /**
     * The name of the custom field
     *
     * @example
     * My Custom Field
     */
    name?: string;
    /**
     * The strategy to use when there is a conflict with an existing custom field.
     * FAIL - Fail execution, this always needs to be unique; USE - Use the existing
     * entity and ignore new entity parameters
     */
    onConflict?: "FAIL" | "USE" | "NEW";
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /**
     * The searcher key of the custom field
     *
     * @example
     * See https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-fields/#api-rest-api-3-field-post `searcherKey` for values
     */
    searcherKey?: string;
}
interface CustomTemplateOptions {
    /**
     * Enable screen delegated admin support for the template. This means screen and
     * associated schemes will be copied rather than referenced.
     */
    enableScreenDelegatedAdminSupport?: boolean;
    /**
     * Enable workflow delegated admin support for the template. This means workflows
     * and workflow schemes will be copied rather than referenced.
     */
    enableWorkflowDelegatedAdminSupport?: boolean;
}
/** The specific request object for creating a project with template. */
interface CustomTemplateRequestDto {
    boards?: BoardsPayload | null;
    /**
     * Defines the payload for the fields, screens, screen schemes, issue type screen
     * schemes, field layouts, and field layout schemes
     */
    field?: FieldCapabilityPayload | null;
    /** The payload for creating issue types in a project */
    issueType?: IssueTypeProjectCreatePayload | null;
    /**
     * The payload for creating a notification scheme. The user has to supply the ID
     * for the default notification scheme. For CMP this is provided in the project
     * payload and should be left empty, for TMP it's provided using this payload
     *
     * @example
     * CMP:  "project": {
     *                  "pcri": "pcri:project:ref:new-project1",
     *                  "notificationSchemeId": "pcri:notificationScheme:id:10000",
     *                  ...
     *               }
     * TMP: "notification": {
     *        "pcri": "pcri:notificationScheme:ref:notification1",
     *        "name": "Simplified Notification Scheme",
     *        "notificationSchemeEvents": [
     *          {
     *            "event": {
     *              "id": "1"
     *            },
     *            "notifications": [
     *              {
     *                "notificationType": "CurrentAssignee"
     *              },
     *              {
     *                "notificationType": "Reporter"
     *              },
     *              {
     *                "notificationType": "AllWatchers"
     *              }
     *            ]
     *          },
     *          {
     *            "event": {
     *              "id": "2"
     *            },
     *            "notifications": [
     *              {
     *                "notificationType": "CurrentAssignee"
     *              },
     *              {
     *                "notificationType": "Reporter"
     *              },
     *              {
     *                "notificationType": "AllWatchers"
     *              }
     *            ]
     *          },...
     *        ]
     *      }
     */
    notification?: NotificationSchemePayload | null;
    /** The payload to create a permission scheme */
    permissionScheme?: PermissionPayloadDto | null;
    /** The payload for creating a project */
    project?: ProjectPayload;
    role?: RolesCapabilityPayload | null;
    /**
     * The payload for creating a scope. Defines if a project is team-managed project
     * or company-managed project
     */
    scope?: ScopePayload | null;
    /**
     * The payload for creating a security scheme. See
     * https://support.atlassian.com/jira-cloud-administration/docs/configure-issue-security-schemes/
     */
    security?: SecuritySchemePayload | null;
    /**
     * The payload for creating a workflows. See
     * https://www.atlassian.com/software/jira/guides/workflows/overview\#what-is-a-jira-workflow
     */
    workflow?: WorkflowCapabilityPayload | null;
}
/** Project Details */
interface CustomTemplatesProjectDetails {
    /**
     * The access level of the project. Only used by team-managed project
     *
     * @example
     * private
     */
    accessLevel?: "open" | "limited" | "private" | "free";
    /** Additional properties of the project */
    additionalProperties?: {
        /** Additional properties of the project */ [key: string]: string;
    };
    /**
     * The default assignee when creating issues in the project
     *
     * @example
     * PROJECT_LEAD
     */
    assigneeType?: "PROJECT_DEFAULT" | "COMPONENT_LEAD" | "PROJECT_LEAD" | "UNASSIGNED";
    /**
     * The ID of the project's avatar. Use the \[Get project
     * avatars\](\#api-rest-api-3-project-projectIdOrKey-avatar-get) operation to list
     * the available avatars in a project.
     *
     * @example
     * 10200
     */
    avatarId?: number;
    /**
     * The ID of the project's category. A complete list of category IDs is found
     * using the [Get all project categories](#api-rest-api-3-projectCategory-get)
     * operation.
     */
    categoryId?: number;
    /**
     * Brief description of the project
     *
     * @example
     * This is a project for Foo Bar
     */
    description?: string;
    /**
     * Whether components are enabled for the project. Only used by company-managed
     * project
     *
     * @example
     * false
     */
    enableComponents?: boolean;
    /**
     * Project keys must be unique and start with an uppercase letter followed by one
     * or more uppercase alphanumeric characters. The maximum length is 10 characters.
     *
     * @example
     * PRJ
     */
    key?: string;
    /**
     * The default language for the project
     *
     * @example
     * en
     */
    language?: string;
    /**
     * The account ID of the project lead. Either `lead` or `leadAccountId` must be
     * set when creating a project. Cannot be provided with `lead`.
     *
     * @example
     * 1234567890
     */
    leadAccountId?: string;
    /**
     * Name of the project
     *
     * @example
     * Project Foo Bar
     */
    name?: string;
    /**
     * A link to information about this project, such as project documentation
     *
     * @example
     * https://www.example.com
     */
    url?: string;
}
/** Request to edit a custom template */
interface EditTemplateRequest {
    /** The description of the template */
    templateDescription?: string;
    templateGenerationOptions?: CustomTemplateOptions;
    /** The unique identifier of the template */
    templateKey?: string;
    /** The name of the template */
    templateName?: string;
}
/**
 * Defines the payload for the fields, screens, screen schemes, issue type screen
 * schemes, field layouts, and field layout schemes
 */
interface FieldCapabilityPayload {
    /**
     * The custom field definitions. See
     * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-fields/\#api-rest-api-3-field-post
     */
    customFieldDefinitions?: (CustomFieldPayload | null)[] | null;
    /**
     * Defines the payload for the field layout schemes. See "Field Configuration
     * Scheme" -
     * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-field-configurations/\#api-rest-api-3-fieldconfigurationscheme-post
     * https://support.atlassian.com/jira-cloud-administration/docs/configure-a-field-configuration-scheme/
     */
    fieldLayoutScheme?: FieldLayoutSchemePayload | null;
    /** The field layouts configuration. */
    fieldLayouts?: (FieldLayoutPayload | null)[] | null;
    /** The issue layouts configuration */
    issueLayouts?: (IssueLayoutPayload | null)[] | null;
    /**
     * Defines the payload for the issue type screen schemes. See
     * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-type-screen-schemes/\#api-rest-api-3-issuetypescreenscheme-post
     */
    issueTypeScreenScheme?: IssueTypeScreenSchemePayload | null;
    /**
     * The screen schemes See
     * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screen-schemes/\#api-rest-api-3-screenscheme-post
     */
    screenScheme?: (ScreenSchemePayload | null)[] | null;
    /**
     * The screens. See
     * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screens/\#api-rest-api-3-screens-post
     */
    screens?: (ScreenPayload | null)[] | null;
}
/**
 * Defines the payload for the field layout configuration. See
 * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-field-configurations/\#api-rest-api-3-fieldconfiguration-post
 */
interface FieldLayoutConfiguration {
    /** Whether to show the field */
    field?: boolean;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /** Whether the field is required */
    required?: boolean;
}
/**
 * Defines the payload for the field layouts. See
 * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-field-configurations/\#api-group-issue-field-configurations"
 * + fieldlayout is what users would see as "Field Configuration" in Jira's UI -
 * https://support.atlassian.com/jira-cloud-administration/docs/manage-issue-field-configurations/
 */
interface FieldLayoutPayload {
    /**
     * The field layout configuration. See
     * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-field-configurations/\#api-rest-api-3-fieldconfiguration-post
     */
    configuration?: FieldLayoutConfiguration[];
    /**
     * The description of the field layout
     *
     * @example
     * This is a field layout
     */
    description?: string;
    /**
     * The name of the field layout
     *
     * @example
     * My Field Layout
     */
    name?: string;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
}
/**
 * Defines the payload for the field layout schemes. See "Field Configuration
 * Scheme" -
 * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-field-configurations/\#api-rest-api-3-fieldconfigurationscheme-post
 * https://support.atlassian.com/jira-cloud-administration/docs/configure-a-field-configuration-scheme/
 */
interface FieldLayoutSchemePayload {
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    defaultFieldLayout?: ProjectCreateResourceIdentifier;
    /**
     * The description of the field layout scheme
     *
     * @example
     * This is a field layout scheme
     */
    description?: string;
    /**
     * There is a default configuration "fieldlayout" that is applied to all issue
     * types using this scheme that don't have an explicit mapping users can create
     * (or re-use existing) configurations for other issue types and map them to this
     * scheme
     */
    explicitMappings?: {
        /**
         * Every project-created entity has an ID that must be unique within the scope of
         * the project creation. PCRI (Project Create Resource Identifier) is a standard
         * format for creating IDs and references to other project entities. PCRI format
         * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
         * the type of an entity, e.g. status, role, workflow type - PCRI type, either
         * `id` - The ID of an entity that already exists in the target site, or `ref` - A
         * unique reference to an entity that is being created entityId - entity
         * identifier, if type is `id` - must be an existing entity ID that exists in the
         * Jira site, if `ref` - must be unique across all entities in the scope of this
         * project template creation
         *
         * @example
         * pcri:permissionScheme:id:10001
         */
        [key: string]: ProjectCreateResourceIdentifier;
    };
    /**
     * The name of the field layout scheme
     *
     * @example
     * My Field Layout Scheme
     */
    name?: string;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
}
/** The payload for the layout details for the start end of a transition */
interface FromLayoutPayload {
    /** The port that the transition can be made from */
    fromPort?: number;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    status?: ProjectCreateResourceIdentifier;
    /** The port that the transition goes to */
    toPortOverride?: number;
}
/** Defines the payload to configure the issue layout item for a project. */
interface IssueLayoutItemPayload {
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    itemKey?: ProjectCreateResourceIdentifier;
    /** The item section type */
    sectionType?: "content" | "primaryContext" | "secondaryContext";
    /** The item type. Currently only support FIELD */
    type?: "FIELD";
}
/** Defines the payload to configure the issue layouts for a project. */
interface IssueLayoutPayload {
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    containerId?: ProjectCreateResourceIdentifier;
    /** The issue layout type */
    issueLayoutType?: "ISSUE_VIEW" | "ISSUE_CREATE" | "REQUEST_FORM";
    /** The configuration of items in the issue layout */
    items?: IssueLayoutItemPayload[];
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
}
/** The payload for creating an issue type hierarchy */
interface IssueTypeHierarchyPayload {
    /**
     * The hierarchy level of the issue type. 0, 1, 2, 3 .. n; Negative values for
     * subtasks
     */
    hierarchyLevel?: number;
    /** The name of the issue type */
    name?: string;
    /**
     * The conflict strategy to use when the issue type already exists. FAIL - Fail
     * execution, this always needs to be unique; USE - Use the existing entity and
     * ignore new entity parameters
     */
    onConflict?: "FAIL" | "USE" | "NEW";
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
}
/** The payload for creating an issue type */
interface IssueTypePayload {
    /**
     * The avatar ID of the issue type. Go to
     * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-avatars/\#api-rest-api-3-avatar-type-system-get
     * to choose an avatarId existing in Jira
     */
    avatarId?: number | null;
    /** The description of the issue type */
    description?: string | null;
    /**
     * The hierarchy level of the issue type. 0, 1, 2, 3 .. n; Negative values for
     * subtasks
     */
    hierarchyLevel?: number;
    /** The name of the issue type */
    name?: string;
    /**
     * The conflict strategy to use when the issue type already exists. FAIL - Fail
     * execution, this always needs to be unique; USE - Use the existing entity and
     * ignore new entity parameters
     */
    onConflict?: "FAIL" | "USE" | "NEW";
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
}
/** The payload for creating issue types in a project */
interface IssueTypeProjectCreatePayload {
    /**
     * Defines the issue type hierarhy to be created and used during this project
     * creation. This will only add new levels if there isn't an existing level
     */
    issueTypeHierarchy?: (IssueTypeHierarchyPayload | null)[] | null;
    /** The payload for creating issue type schemes */
    issueTypeScheme?: IssueTypeSchemePayload;
    /**
     * Only needed if you want to create issue types, you can otherwise use the ids of
     * issue types in the scheme configuration
     */
    issueTypes?: (IssueTypePayload | null)[] | null;
}
/** The payload for creating issue type schemes */
interface IssueTypeSchemePayload {
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    defaultIssueTypeId?: ProjectCreateResourceIdentifier;
    /** The description of the issue type scheme */
    description?: string | null;
    /**
     * The issue type IDs for the issue type scheme
     *
     * @example
     * pcri:issueType:id:10001
     */
    issueTypeIds?: ProjectCreateResourceIdentifier[];
    /** The name of the issue type scheme */
    name?: string;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
}
/**
 * Defines the payload for the issue type screen schemes. See
 * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-type-screen-schemes/\#api-rest-api-3-issuetypescreenscheme-post
 */
interface IssueTypeScreenSchemePayload {
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    defaultScreenScheme?: ProjectCreateResourceIdentifier;
    /**
     * The description of the issue type screen scheme
     *
     * @example
     * This is an issue type screen scheme
     */
    description?: string;
    /**
     * The IDs of the screen schemes for the issue type IDs and default. A default
     * entry is required to create an issue type screen scheme, it defines the mapping
     * for all issue types without a screen scheme.
     */
    explicitMappings?: {
        /**
         * Every project-created entity has an ID that must be unique within the scope of
         * the project creation. PCRI (Project Create Resource Identifier) is a standard
         * format for creating IDs and references to other project entities. PCRI format
         * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
         * the type of an entity, e.g. status, role, workflow type - PCRI type, either
         * `id` - The ID of an entity that already exists in the target site, or `ref` - A
         * unique reference to an entity that is being created entityId - entity
         * identifier, if type is `id` - must be an existing entity ID that exists in the
         * Jira site, if `ref` - must be unique across all entities in the scope of this
         * project template creation
         *
         * @example
         * pcri:permissionScheme:id:10001
         */
        [key: string]: ProjectCreateResourceIdentifier;
    };
    /**
     * The name of the issue type screen scheme
     *
     * @example
     * My Issue Type Screen Scheme
     */
    name?: string;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
}
interface NonWorkingDay {
    id?: number;
    iso8601Date?: string;
}
/** The event ID to use for reference in the payload */
interface NotificationSchemeEventIdPayload {
    /**
     * The event ID to use for reference in the payload
     *
     * @example
     * 1
     */
    id?: string;
}
/**
 * The payload for creating a notification scheme event. Defines which
 * notifications should be sent for a specific event
 */
interface NotificationSchemeEventPayload {
    /** The event ID to use for reference in the payload */
    event?: NotificationSchemeEventIdPayload;
    /** The configuration for notification recipents */
    notifications?: NotificationSchemeNotificationDetailsPayload[];
}
/** The configuration for notification recipents */
interface NotificationSchemeNotificationDetailsPayload {
    /** The type of notification. */
    notificationType?: string;
    /**
     * The parameter of the notification, should be eiither null if not required, or
     * PCRI.
     */
    parameter?: string;
}
/**
 * The payload for creating a notification scheme. The user has to supply the ID
 * for the default notification scheme. For CMP this is provided in the project
 * payload and should be left empty, for TMP it's provided using this payload
 *
 * @example
 * CMP:  "project": {
 *                  "pcri": "pcri:project:ref:new-project1",
 *                  "notificationSchemeId": "pcri:notificationScheme:id:10000",
 *                  ...
 *               }
 * TMP: "notification": {
 *        "pcri": "pcri:notificationScheme:ref:notification1",
 *        "name": "Simplified Notification Scheme",
 *        "notificationSchemeEvents": [
 *          {
 *            "event": {
 *              "id": "1"
 *            },
 *            "notifications": [
 *              {
 *                "notificationType": "CurrentAssignee"
 *              },
 *              {
 *                "notificationType": "Reporter"
 *              },
 *              {
 *                "notificationType": "AllWatchers"
 *              }
 *            ]
 *          },
 *          {
 *            "event": {
 *              "id": "2"
 *            },
 *            "notifications": [
 *              {
 *                "notificationType": "CurrentAssignee"
 *              },
 *              {
 *                "notificationType": "Reporter"
 *              },
 *              {
 *                "notificationType": "AllWatchers"
 *              }
 *            ]
 *          },...
 *        ]
 *      }
 */
interface NotificationSchemePayload {
    /** The description of the notification scheme */
    description?: string;
    /** The name of the notification scheme */
    name?: string;
    /** The events and notifications for the notification scheme */
    notificationSchemeEvents?: NotificationSchemeEventPayload[];
    /** The strategy to use when there is a conflict with an existing entity */
    onConflict?: "FAIL" | "USE" | "NEW";
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
}
/** List of permission grants */
interface PermissionGrantDto {
    applicationAccess?: string[];
    groupCustomFields?: ProjectCreateResourceIdentifier[];
    groups?: ProjectCreateResourceIdentifier[];
    permissionKeys?: string[];
    projectRoles?: ProjectCreateResourceIdentifier[];
    specialGrants?: string[];
    userCustomFields?: ProjectCreateResourceIdentifier[];
    users?: ProjectCreateResourceIdentifier[];
}
/** The payload to create a permission scheme */
interface PermissionPayloadDto {
    /** Configuration to generate addon role. Default is false if null */
    addAddonRole?: boolean;
    /** The description of the permission scheme */
    description?: string;
    /** List of permission grants */
    grants?: PermissionGrantDto[];
    /** The name of the permission scheme */
    name?: string;
    /**
     * The strategy to use when there is a conflict with an existing permission
     * scheme. FAIL - Fail execution, this always needs to be unique; USE - Use the
     * existing entity and ignore new entity parameters; NEW - If the entity exist,
     * try and create a new one with a different name
     */
    onConflict?: "FAIL" | "USE" | "NEW";
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
}
interface ProjectArchetype {
    realType?: "BUSINESS" | "SOFTWARE" | "PRODUCT_DISCOVERY" | "SERVICE_DESK" | "CUSTOMER_SERVICE" | "OPS";
    style?: "classic" | "next-gen";
    type?: "BUSINESS" | "SOFTWARE" | "PRODUCT_DISCOVERY" | "SERVICE_DESK" | "CUSTOMER_SERVICE" | "OPS";
}
/**
 * Every project-created entity has an ID that must be unique within the scope of
 * the project creation. PCRI (Project Create Resource Identifier) is a standard
 * format for creating IDs and references to other project entities. PCRI format
 * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
 * the type of an entity, e.g. status, role, workflow type - PCRI type, either
 * `id` - The ID of an entity that already exists in the target site, or `ref` - A
 * unique reference to an entity that is being created entityId - entity
 * identifier, if type is `id` - must be an existing entity ID that exists in the
 * Jira site, if `ref` - must be unique across all entities in the scope of this
 * project template creation
 *
 * @example
 * pcri:permissionScheme:id:10001
 */
interface ProjectCreateResourceIdentifier {
    anID?: boolean;
    areference?: boolean;
    entityId?: string;
    entityType?: string;
    id?: string;
    type?: "id" | "ref";
}
/** Request to create a project using a custom template */
interface ProjectCustomTemplateCreateRequestDto {
    /** Project Details */
    details?: CustomTemplatesProjectDetails;
    /** The specific request object for creating a project with template. */
    template?: CustomTemplateRequestDto;
}
/** The payload for creating a project */
interface ProjectPayload {
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    fieldLayoutSchemeId?: ProjectCreateResourceIdentifier;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    issueSecuritySchemeId?: ProjectCreateResourceIdentifier;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    issueTypeSchemeId?: ProjectCreateResourceIdentifier;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    issueTypeScreenSchemeId?: ProjectCreateResourceIdentifier;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    notificationSchemeId?: ProjectCreateResourceIdentifier;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    permissionSchemeId?: ProjectCreateResourceIdentifier;
    /**
     * The [project
     * type](https://confluence.atlassian.com/x/GwiiLQ#Jiraapplicationsoverview-Productfeaturesandprojecttypes),
     * which defines the application-specific feature set. If you don't specify the
     * project template you have to specify the project type.
     *
     * @example
     * software
     */
    projectTypeKey?: "software" | "business" | "service_desk" | "product_discovery";
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    workflowSchemeId?: ProjectCreateResourceIdentifier;
}
interface ProjectTemplateKey {
    key?: string;
    uuid?: string;
}
interface ProjectTemplateModel {
    archetype?: ProjectArchetype;
    defaultBoardView?: string;
    description?: string;
    liveTemplateProjectIdReference?: number;
    name?: string;
    projectTemplateKey?: ProjectTemplateKey;
    snapshotTemplate?: {
        [key: string]: unknown;
    };
    templateGenerationOptions?: CustomTemplateOptions;
    type?: "LIVE" | "SNAPSHOT";
}
/** The payload for defining quick filters */
interface QuickFilterPayload {
    /** The description of the quick filter */
    description?: string;
    /** The jql query for the quick filter */
    jqlQuery?: string;
    /** The name of the quick filter */
    name?: string;
}
/**
 * The payload used to create a project role. It is optional for CMP projects, as
 * a default role actor will be provided. TMP will add new role actors to the
 * table.
 */
interface RolePayload {
    /**
     * The default actors for the role. By adding default actors, the role will be
     * added to any future projects created
     *
     * @example
     * [pcri:user:id:1234]
     */
    defaultActors?: ProjectCreateResourceIdentifier[];
    /** The description of the role */
    description?: string;
    /** The name of the role */
    name?: string;
    /**
     * The strategy to use when there is a conflict with an existing project role.
     * FAIL - Fail execution, this always needs to be unique; USE - Use the existing
     * entity and ignore new entity parameters
     */
    onConflict?: "FAIL" | "USE" | "NEW";
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /**
     * The type of the role. Only used by project-scoped project
     *
     * @example
     * EDITABLE
     */
    type?: "HIDDEN" | "VIEWABLE" | "EDITABLE";
}
interface RolesCapabilityPayload {
    /**
     * A map of role PCRI (can be ID or REF) to a list of user or group PCRI IDs to
     * associate with the role and project.
     */
    roleToProjectActors?: {
        /**
         * A map of role PCRI (can be ID or REF) to a list of user or group PCRI IDs to
         * associate with the role and project.
         */
        [key: string]: ProjectCreateResourceIdentifier[];
    };
    /** The list of roles to create. */
    roles?: RolePayload[];
}
/** The payload for creating rules in a workflow */
interface RulePayload {
    /** The parameters of the rule */
    parameters?: {
        /** The parameters of the rule */ [key: string]: string;
    };
    /**
     * The key of the rule. See
     * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflows/\#api-rest-api-3-workflows-capabilities-get
     *
     * @example
     * system:update-field
     */
    ruleKey?: string;
}
/** The request details to generate template from a project */
interface SaveProjectTemplateRequest {
    /** The ID of the target project */
    projectId?: number;
    templateGenerationOptions?: CustomTemplateOptions;
    /** The type of the template: LIVE | SNAPSHOT */
    templateType?: "LIVE" | "SNAPSHOT";
}
/** Request to save a custom template */
interface SaveTemplateRequest {
    /** The description of the template */
    templateDescription?: string;
    /** The request details to generate template from a project */
    templateFromProjectRequest?: SaveProjectTemplateRequest;
    /** The name of the template */
    templateName?: string;
}
interface SaveTemplateResponse {
    projectTemplateKey?: ProjectTemplateKey;
}
/**
 * The payload for creating a scope. Defines if a project is team-managed project
 * or company-managed project
 */
interface ScopePayload {
    /**
     * The type of the scope. Use `GLOBAL` or empty for company-managed project, and
     * `PROJECT` for team-managed project
     */
    type?: "GLOBAL" | "PROJECT";
}
/**
 * Defines the payload for the field screens. See
 * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screens/\#api-rest-api-3-screens-post
 */
interface ScreenPayload {
    /**
     * The description of the screen
     *
     * @example
     * This is a screen
     */
    description?: string;
    /**
     * The name of the screen
     *
     * @example
     * My Screen
     */
    name?: string;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /**
     * The tabs of the screen. See
     * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screen-tab-fields/\#api-rest-api-3-screens-screenid-tabs-tabid-fields-post
     */
    tabs?: TabPayload[];
}
/**
 * Defines the payload for the screen schemes. See
 * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screen-schemes/\#api-rest-api-3-screenscheme-post
 */
interface ScreenSchemePayload {
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    defaultScreen?: ProjectCreateResourceIdentifier;
    /**
     * The description of the screen scheme
     *
     * @example
     * This is a screen scheme
     */
    description?: string;
    /**
     * The name of the screen scheme
     *
     * @example
     * My Screen Scheme
     */
    name?: string;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /**
     * Similar to the field layout scheme those mappings allow users to set different
     * screens for different operations: default - always there, applied to all
     * operations that don't have an explicit mapping `create`, `view`, `edit` -
     * specific operations that are available and users can assign a different screen
     * for each one of them
     * https://support.atlassian.com/jira-cloud-administration/docs/manage-screen-schemes/\#Associating-a-screen-with-an-issue-operation
     */
    screens?: {
        /**
         * Every project-created entity has an ID that must be unique within the scope of
         * the project creation. PCRI (Project Create Resource Identifier) is a standard
         * format for creating IDs and references to other project entities. PCRI format
         * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
         * the type of an entity, e.g. status, role, workflow type - PCRI type, either
         * `id` - The ID of an entity that already exists in the target site, or `ref` - A
         * unique reference to an entity that is being created entityId - entity
         * identifier, if type is `id` - must be an existing entity ID that exists in the
         * Jira site, if `ref` - must be unique across all entities in the scope of this
         * project template creation
         *
         * @example
         * pcri:permissionScheme:id:10001
         */
        [key: string]: ProjectCreateResourceIdentifier;
    };
}
/**
 * The payload for creating a security level member. See
 * https://support.atlassian.com/jira-cloud-administration/docs/configure-issue-security-schemes/
 */
interface SecurityLevelMemberPayload {
    /**
     * Defines the value associated with the type. For reporter this would be
     * \{"null"\}; for users this would be the names of specific users); for group
     * this would be group names like \{"administrators", "jira-administrators",
     * "jira-users"\}
     */
    parameter?: string;
    /** The type of the security level member */
    type?: "group" | "reporter" | "users";
}
/**
 * The payload for creating a security level. See
 * https://support.atlassian.com/jira-cloud-administration/docs/configure-issue-security-schemes/
 */
interface SecurityLevelPayload {
    /**
     * The description of the security level
     *
     * @example
     * Newly created issue security level
     */
    description?: string;
    /** Whether the security level is default for the security scheme */
    isDefault?: boolean;
    /**
     * The name of the security level
     *
     * @example
     * New Security Level
     */
    name?: string;
    /** The members of the security level */
    securityLevelMembers?: SecurityLevelMemberPayload[];
}
/**
 * The payload for creating a security scheme. See
 * https://support.atlassian.com/jira-cloud-administration/docs/configure-issue-security-schemes/
 */
interface SecuritySchemePayload {
    /**
     * The description of the security scheme
     *
     * @example
     * Newly created issue security scheme
     */
    description?: string;
    /**
     * The name of the security scheme
     *
     * @example
     * New Security Scheme
     */
    name?: string;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /** The security levels for the security scheme */
    securityLevels?: SecurityLevelPayload[];
}
/** The payload for creating a status */
interface StatusPayload {
    /** The description of the status */
    description?: string;
    /** The name of the status */
    name?: string;
    /**
     * The conflict strategy for the status already exists. FAIL - Fail execution,
     * this always needs to be unique; USE - Use the existing entity and ignore new
     * entity parameters; NEW - Create a new entity
     */
    onConflict?: "FAIL" | "USE" | "NEW";
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /** The status category of the status. The value is case-sensitive. */
    statusCategory?: "TODO" | "IN_PROGRESS" | "DONE";
}
/** The payload for custom swimlanes */
interface SwimlanePayload {
    /** The description of the quick filter */
    description?: string;
    /** The jql query for the quick filter */
    jqlQuery?: string;
    /** The name of the quick filter */
    name?: string;
}
/** The payload for customising a swimlanes on a board */
interface SwimlanesPayload {
    /** The custom swimlane definitions. */
    customSwimlanes?: SwimlanePayload[];
    /**
     * The name of the custom swimlane to use for work items that don't match any
     * other swimlanes.
     */
    defaultCustomSwimlaneName?: string;
    /** The swimlane strategy for the board. */
    swimlaneStrategy?: "none" | "custom" | "parentChild" | "assignee" | "assigneeUnassignedFirst" | "epic" | "project" | "issueparent" | "issuechildren" | "request_type";
}
/**
 * Defines the payload for the tabs of the screen. See
 * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screen-tab-fields/\#api-rest-api-3-screens-screenid-tabs-tabid-fields-post
 */
interface TabPayload {
    /**
     * The list of resource identifier of the field associated to the tab. See
     * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screen-tab-fields/\#api-rest-api-3-screens-screenid-tabs-tabid-fields-post
     */
    fields?: ProjectCreateResourceIdentifier[];
    /** The name of the tab */
    name?: string;
}
/** The payload for the layout details for the destination end of a transition */
interface ToLayoutPayload {
    /**
     * Defines where the transition line will be connected to a status. Port 0 to 7
     * are acceptable values.
     *
     * @example
     * 1
     */
    port?: number;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    status?: ProjectCreateResourceIdentifier;
}
/**
 * The payload for creating a transition in a workflow. Can be DIRECTED, GLOBAL,
 * SELF-LOOPED, GLOBAL LOOPED
 */
interface TransitionPayload {
    /** The actions that are performed when the transition is made */
    actions?: RulePayload[];
    /** The payload for creating a condition group in a workflow */
    conditions?: ConditionGroupPayload;
    /**
     * Mechanism in Jira for triggering certain actions, like notifications,
     * automations, etc. Unless a custom notification scheme is configure, it's better
     * not to provide any value here
     */
    customIssueEventId?: string;
    /** The description of the transition */
    description?: string;
    /** The statuses that the transition can be made from */
    from?: FromLayoutPayload[];
    /** The id of the transition */
    id?: number;
    /** The name of the transition */
    name?: string;
    /** The properties of the transition */
    properties?: {
        /** The properties of the transition */ [key: string]: string;
    };
    /** The payload for the layout details for the destination end of a transition */
    to?: ToLayoutPayload;
    /** The payload for creating rules in a workflow */
    transitionScreen?: RulePayload;
    /** The triggers that are performed when the transition is made */
    triggers?: RulePayload[];
    /** The type of the transition */
    type?: "global" | "initial" | "directed";
    /** The validators that are performed when the transition is made */
    validators?: RulePayload[];
}
/**
 * The payload for creating a workflows. See
 * https://www.atlassian.com/software/jira/guides/workflows/overview\#what-is-a-jira-workflow
 */
interface WorkflowCapabilityPayload {
    /** The statuses for the workflow */
    statuses?: StatusPayload[];
    /**
     * The payload for creating a workflow scheme. See
     * https://www.atlassian.com/software/jira/guides/workflows/overview\#what-is-a-jira-workflow-scheme
     */
    workflowScheme?: WorkflowSchemePayload;
    /** The transitions for the workflow */
    workflows?: WorkflowPayload[];
}
/**
 * The payload for creating workflow, see
 * https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflows/\#api-rest-api-3-workflows-create-post
 */
interface WorkflowPayload {
    /**
     * The description of the workflow
     *
     * @example
     * a software workflow
     */
    description?: string;
    /** The layout of the workflow status. */
    loopedTransitionContainerLayout?: WorkflowStatusLayoutPayload;
    /**
     * The name of the workflow
     *
     * @example
     * Software Simplified Workflow
     */
    name?: string;
    /** The strategy to use if there is a conflict with another workflow */
    onConflict?: "FAIL" | "USE" | "NEW";
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /** The layout of the workflow status. */
    startPointLayout?: WorkflowStatusLayoutPayload;
    /** The statuses to be used in the workflow */
    statuses?: WorkflowStatusPayload[];
    /** The transitions for the workflow */
    transitions?: TransitionPayload[];
}
/**
 * The payload for creating a workflow scheme. See
 * https://www.atlassian.com/software/jira/guides/workflows/overview\#what-is-a-jira-workflow-scheme
 */
interface WorkflowSchemePayload {
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    defaultWorkflow?: ProjectCreateResourceIdentifier;
    /** The description of the workflow scheme */
    description?: string;
    /** Association between issuetypes and workflows */
    explicitMappings?: {
        /**
         * Every project-created entity has an ID that must be unique within the scope of
         * the project creation. PCRI (Project Create Resource Identifier) is a standard
         * format for creating IDs and references to other project entities. PCRI format
         * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
         * the type of an entity, e.g. status, role, workflow type - PCRI type, either
         * `id` - The ID of an entity that already exists in the target site, or `ref` - A
         * unique reference to an entity that is being created entityId - entity
         * identifier, if type is `id` - must be an existing entity ID that exists in the
         * Jira site, if `ref` - must be unique across all entities in the scope of this
         * project template creation
         *
         * @example
         * pcri:permissionScheme:id:10001
         */
        [key: string]: ProjectCreateResourceIdentifier;
    };
    /** The name of the workflow scheme */
    name?: string;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
}
/** The layout of the workflow status. */
interface WorkflowStatusLayoutPayload {
    /**
     * The x coordinate of the status.
     *
     * @example
     * 1
     */
    x?: number;
    /**
     * The y coordinate of the status.
     *
     * @example
     * 2
     */
    y?: number;
}
/** The statuses to be used in the workflow */
interface WorkflowStatusPayload {
    /** The layout of the workflow status. */
    layout?: WorkflowStatusLayoutPayload;
    /**
     * Every project-created entity has an ID that must be unique within the scope of
     * the project creation. PCRI (Project Create Resource Identifier) is a standard
     * format for creating IDs and references to other project entities. PCRI format
     * is defined as follows: pcri:\[entityType\]:\[type\]:\[entityId\] entityType -
     * the type of an entity, e.g. status, role, workflow type - PCRI type, either
     * `id` - The ID of an entity that already exists in the target site, or `ref` - A
     * unique reference to an entity that is being created entityId - entity
     * identifier, if type is `id` - must be an existing entity ID that exists in the
     * Jira site, if `ref` - must be unique across all entities in the scope of this
     * project template creation
     *
     * @example
     * pcri:permissionScheme:id:10001
     */
    pcri?: ProjectCreateResourceIdentifier;
    /** The properties of the workflow status. */
    properties?: {
        /** The properties of the workflow status. */ [key: string]: string;
    };
}
/** Working days configuration */
interface WorkingDaysConfig {
    friday?: boolean;
    id?: number;
    monday?: boolean;
    nonWorkingDays?: NonWorkingDay[];
    saturday?: boolean;
    sunday?: boolean;
    thursday?: boolean;
    timezoneId?: string;
    tuesday?: boolean;
    wednesday?: boolean;
}

/** Details about a project type. */
interface ProjectType {
    /** The color of the project type. */
    color?: string;
    /** The key of the project type's description. */
    descriptionI18nKey?: string;
    /** The formatted key of the project type. */
    formattedKey?: string;
    /** The icon of the project type. */
    icon?: string;
    /** The key of the project type. */
    key?: string;
}

/** Details about the replacement for a deleted version. */
interface CustomFieldReplacement {
    /** The ID of the custom field in which to replace the version number. */
    customFieldId?: number;
    /** The version number to use as a replacement for the deleted version. */
    moveTo?: number;
}
interface DeleteAndReplaceVersionBean {
    /**
     * An array of custom field IDs (`customFieldId`) and version IDs (`moveTo`) to
     * update when the fields contain the deleted version.
     */
    customFieldReplacementList?: CustomFieldReplacement[];
    /**
     * The ID of the version to update `affectedVersion` to when the field contains
     * the deleted version.
     */
    moveAffectedIssuesTo?: number;
    /**
     * The ID of the version to update `fixVersion` to when the field contains the
     * deleted version.
     */
    moveFixIssuesTo?: number;
}
/** A page of items. */
interface PageBeanVersion {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Version[];
}
/** Various counts of issues within a version. */
interface VersionIssueCounts {
    /** List of custom fields using the version. */
    customFieldUsage?: VersionUsageInCustomField[];
    /** Count of issues where a version custom field is set to the version. */
    issueCountWithCustomFieldsShowingVersion?: number;
    /** Count of issues where the `affectedVersion` is set to the version. */
    issuesAffectedCount?: number;
    /** Count of issues where the `fixVersion` is set to the version. */
    issuesFixedCount?: number;
    /** The URL of these count details. */
    self?: string;
}
interface VersionMoveBean {
    /**
     * The URL (self link) of the version after which to place the moved version.
     * Cannot be used with `position`.
     */
    after?: string;
    /**
     * An absolute position in which to place the moved version. Cannot be used with
     * `after`.
     */
    position?: "Earlier" | "Later" | "First" | "Last";
}
/** Associated related work to a version */
interface VersionRelatedWork {
    /** The category of the related work */
    category: string;
    /**
     * The ID of the issue associated with the related work (if there is one). Cannot
     * be updated via the Rest API.
     */
    issueId?: number;
    /**
     * The id of the related work. For the native release note related work item, this
     * will be null, and Rest API does not support updating it.
     */
    relatedWorkId?: string;
    /** The title of the related work */
    title?: string;
    /**
     * The URL of the related work. Will be null for the native release note related
     * work item, but is otherwise required.
     */
    url?: string;
}
/** Count of a version's unresolved issues. */
interface VersionUnresolvedIssuesCount {
    /** Count of issues. */
    issuesCount?: number;
    /** Count of unresolved issues. */
    issuesUnresolvedCount?: number;
    /** The URL of these count details. */
    self?: string;
}
/** List of custom fields using the version. */
interface VersionUsageInCustomField {
    /** The ID of the custom field. */
    customFieldId?: number;
    /** The name of the custom field. */
    fieldName?: string;
    /** Count of the issues where the custom field contains the version. */
    issueCountWithVersionInCustomField?: number;
}

/** A page of items. */
interface PageBeanScreen {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Screen[];
}
/** A page of items. */
interface PageBeanScreenWithTab {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: ScreenWithTab[];
}
/** A screen. */
interface Screen {
    /** The description of the screen. */
    description?: string;
    /** The ID of the screen. */
    id?: number;
    /** The name of the screen. */
    name?: string;
    /** The scope of the screen. */
    scope?: Scope;
}
/** Details of a screen. */
interface ScreenDetails {
    /** The description of the screen. The maximum length is 255 characters. */
    description?: string;
    /**
     * The name of the screen. The name must be unique. The maximum length is 255
     * characters.
     */
    name: string;
}
/** A screen with tab details. */
interface ScreenWithTab {
    /** The description of the screen. */
    description?: string;
    /** The ID of the screen. */
    id?: number;
    /** The name of the screen. */
    name?: string;
    /** The scope of the screen. */
    scope?: Scope;
    /** The tab for the screen. */
    tab?: ScreenableTab;
}
/** Details of a screen. */
interface UpdateScreenDetails {
    /** The description of the screen. The maximum length is 255 characters. */
    description?: string;
    /**
     * The name of the screen. The name must be unique. The maximum length is 255
     * characters.
     */
    name?: string;
}

/** A page of items. */
interface PageBeanScreenScheme {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: ScreenScheme[];
}
/** A screen scheme. */
interface ScreenScheme {
    /** The description of the screen scheme. */
    description?: string;
    /** The ID of the screen scheme. */
    id?: number;
    /** Details of the issue type screen schemes associated with the screen scheme. */
    issueTypeScreenSchemes?: PageBeanIssueTypeScreenScheme;
    /** The name of the screen scheme. */
    name?: string;
    /** The IDs of the screens for the screen types of the screen scheme. */
    screens?: ScreenTypes;
}
/** Details of a screen scheme. */
interface ScreenSchemeDetails {
    /** The description of the screen scheme. The maximum length is 255 characters. */
    description?: string;
    /**
     * The name of the screen scheme. The name must be unique. The maximum length is
     * 255 characters.
     */
    name: string;
    /**
     * The IDs of the screens for the screen types of the screen scheme. Only screens
     * used in classic projects are accepted.
     */
    screens: ScreenTypes;
}
/** The ID of a screen scheme. */
interface ScreenSchemeId {
    /** The ID of the screen scheme. */
    id: number;
}
/** The IDs of the screens for the screen types of the screen scheme. */
interface ScreenTypes {
    /** The ID of the create screen. */
    create?: number;
    /** The ID of the default screen. Required when creating a screen scheme. */
    default: number;
    /** The ID of the edit screen. */
    edit?: number;
    /** The ID of the view screen. */
    view?: number;
}
/** Details of a screen scheme. */
interface UpdateScreenSchemeDetails {
    /** The description of the screen scheme. The maximum length is 255 characters. */
    description?: string;
    /**
     * The name of the screen scheme. The name must be unique. The maximum length is
     * 255 characters.
     */
    name?: string;
    /**
     * The IDs of the screens for the screen types of the screen scheme. Only screens
     * used in classic projects are accepted.
     */
    screens?: UpdateScreenTypes;
}
/** The IDs of the screens for the screen types of the screen scheme. */
interface UpdateScreenTypes {
    /** The ID of the create screen. To remove the screen association, pass a null. */
    create?: string;
    /**
     * The ID of the default screen. When specified, must include a screen ID as a
     * default screen is required.
     */
    default?: string;
    /** The ID of the edit screen. To remove the screen association, pass a null. */
    edit?: string;
    /** The ID of the view screen. To remove the screen association, pass a null. */
    view?: string;
}

interface AddFieldBean {
    /** The ID of the field to add. */
    fieldId: string;
}
interface MoveFieldBean {
    /**
     * The ID of the screen tab field after which to place the moved screen tab field.
     * Required if `position` isn't provided.
     */
    after?: string;
    /**
     * The named position to which the screen tab field should be moved. Required if
     * `after` isn't provided.
     */
    position?: "Earlier" | "Later" | "First" | "Last";
}

/** Jira instance health check results. Deprecated and no longer returned. */
interface HealthCheckResult {
    /** The description of the Jira health check item. */
    description?: string;
    /** The name of the Jira health check item. */
    name?: string;
    /** Whether the Jira health check item passed or failed. */
    passed?: boolean;
}
/** Details about the Jira instance. */
interface ServerInformation {
    /** The base URL of the Jira instance. */
    baseUrl?: string;
    /** The timestamp when the Jira version was built. */
    buildDate?: string;
    /** The build number of the Jira version. */
    buildNumber?: number;
    /** The type of server deployment. This is always returned as *Cloud*. */
    deploymentType?: string;
    /** The display URL of the Jira instance. */
    displayUrl?: string;
    /** The display URL of Confluence. */
    displayUrlConfluence?: string;
    /** The display URL of the Servicedesk Help Center. */
    displayUrlServicedeskHelpCenter?: string;
    /** Jira instance health check results. Deprecated and no longer returned. */
    healthChecks?: HealthCheckResult[];
    /** The unique identifier of the Jira version. */
    scmInfo?: string;
    /** The time in Jira when this request was responded to. */
    serverTime?: string;
    /**
     * The default timezone of the Jira server. In a format known as Olson Time Zones,
     * IANA Time Zones or TZ Database Time Zones.
     */
    serverTimeZone?: string;
    /** The name of the Jira instance. */
    serverTitle?: string;
    /** The version of Jira. */
    version?: string;
    /** The major, minor, and revision version numbers of the Jira version. */
    versionNumbers?: number[];
}

interface ServiceRegistry extends Record<string, unknown> {
    /** service description */
    description?: string | null;
    /** service ID */
    id?: string;
    /** service name */
    name?: string;
    /** organization ID */
    organizationId?: string;
    /** service revision */
    revision?: string;
    serviceTier?: ServiceRegistryTier;
}
interface ServiceRegistryTier extends Record<string, unknown> {
    /** tier description */
    description?: string | null;
    /** tier ID */
    id?: string;
    /** tier level */
    level?: number;
    /** tier name */
    name?: string | null;
    /**
     * name key of the tier
     *
     * @example
     * service-registry.tier1.name
     */
    nameKey?: string;
}

/** Details of a status. */
interface JiraStatus {
    /** The description of the status. */
    description?: string;
    /** The ID of the status. */
    id?: string;
    /** The name of the status. */
    name?: string;
    /** The scope of the status. */
    scope?: StatusScope;
    /** The category of the status. */
    statusCategory?: "TODO" | "IN_PROGRESS" | "DONE";
    /**
     * Deprecated. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-2298)
     * for details.
     *
     * Projects and issue types where the status is used. Only available if the
     * `usages` expand is requested.
     */
    usages?: (ProjectIssueTypes | null)[] | null;
    /**
     * Deprecated. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-2298)
     * for details.
     *
     * The workflows that use this status. Only available if the `workflowUsages`
     * expand is requested.
     */
    workflowUsages?: (WorkflowUsages | null)[] | null;
}
interface PageOfStatuses {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** The URL of the next page of results, if any. */
    nextPage?: string;
    /** The URL of this page. */
    self?: string;
    /** The index of the first item returned on the page. */
    startAt?: number;
    /** Number of items that satisfy the search. */
    total?: number;
    /** The list of items. */
    values?: JiraStatus[];
}
/** Details of the status being created. */
interface StatusCreate {
    /** The description of the status. */
    description?: string;
    /** The name of the status. */
    name: string;
    /** The category of the status. */
    statusCategory: "TODO" | "IN_PROGRESS" | "DONE";
}
/** Details of the statuses being created and their scope. */
interface StatusCreateRequest {
    /** The scope of the status. */
    scope: StatusScope;
    /** Details of the statuses being created. */
    statuses: StatusCreate[];
}
/** The list of issue types. */
interface StatusProjectIssueTypeUsage {
    /** The issue type ID. */
    id?: string;
}
/** The issue types using this status in a project. */
interface StatusProjectIssueTypeUsageDto {
    /** A page of issue types. */
    issueTypes?: StatusProjectIssueTypeUsagePage;
    /** The project ID. */
    projectId?: string;
    /** The status ID. */
    statusId?: string;
}
/** A page of issue types. */
interface StatusProjectIssueTypeUsagePage {
    /** Page token for the next page of issue type usages. */
    nextPageToken?: string;
    /** The list of issue types. */
    values?: StatusProjectIssueTypeUsage[];
}
/** The project. */
interface StatusProjectUsage {
    /** The project ID. */
    id?: string;
}
/** The projects using this status. */
interface StatusProjectUsageDto {
    /** A page of projects. */
    projects?: StatusProjectUsagePage;
    /** The status ID. */
    statusId?: string;
}
/** A page of projects. */
interface StatusProjectUsagePage {
    /** Page token for the next page of issue type usages. */
    nextPageToken?: string;
    /** The list of projects. */
    values?: StatusProjectUsage[];
}
/** The scope of the status. */
interface StatusScope {
    /** Project ID details. */
    project?: ProjectId | null;
    /**
     * The scope of the status. `GLOBAL` for company-managed projects and `PROJECT`
     * for team-managed projects.
     */
    type: "PROJECT" | "GLOBAL";
}
/** Details of the status being updated. */
interface StatusUpdate extends Record<string, unknown> {
    /** The description of the status. */
    description?: string;
    /** The ID of the status. */
    id: string;
    /** The name of the status. */
    name: string;
    /** The category of the status. */
    statusCategory: "TODO" | "IN_PROGRESS" | "DONE";
}
/** The list of statuses that will be updated. */
interface StatusUpdateRequest {
    /** The list of statuses that will be updated. */
    statuses: StatusUpdate[];
}
/** Workflows using the status. */
interface StatusWorkflowUsageDto {
    /** The status ID. */
    statusId?: string;
    /** A page of workflows. */
    workflows?: StatusWorkflowUsagePage;
}
/** A page of workflows. */
interface StatusWorkflowUsagePage {
    /** Page token for the next page of issue type usages. */
    nextPageToken?: string;
    /** The list of statuses. */
    values?: StatusWorkflowUsageWorkflow[];
}
/** The worflow. */
interface StatusWorkflowUsageWorkflow {
    /** The workflow ID. */
    id?: string;
}
/**
 * Deprecated. See the [deprecation
 * notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-2298)
 * for details.
 *
 * The workflows that use this status. Only available if the `workflowUsages`
 * expand is requested.
 */
interface WorkflowUsages {
    /** Workflow ID. */
    workflowId?: string;
    /** Workflow name. */
    workflowName?: string;
}

interface AddAtlassianTeamRequest {
    /** The capacity for the Atlassian team. */
    capacity?: number;
    /** The Atlassian team ID. */
    id: string;
    /** The ID of the issue source for the Atlassian team. */
    issueSourceId?: number;
    /** The planning style for the Atlassian team. This must be "Scrum" or "Kanban". */
    planningStyle: "Scrum" | "Kanban";
    /** The sprint length for the Atlassian team. */
    sprintLength?: number;
}
interface CreatePlanOnlyTeamRequest {
    /** The capacity for the plan-only team. */
    capacity?: number;
    /** The ID of the issue source for the plan-only team. */
    issueSourceId?: number;
    /** The account IDs of the plan-only team members. */
    memberAccountIds?: string[];
    /** The plan-only team name. */
    name: string;
    /** The planning style for the plan-only team. This must be "Scrum" or "Kanban". */
    planningStyle: "Scrum" | "Kanban";
    /** The sprint length for the plan-only team. */
    sprintLength?: number;
}
interface GetAtlassianTeamResponse {
    /** The capacity for the Atlassian team. */
    capacity?: number;
    /** The Atlassian team ID. */
    id: string;
    /** The ID of the issue source for the Atlassian team. */
    issueSourceId?: number;
    /** The planning style for the Atlassian team. This is "Scrum" or "Kanban". */
    planningStyle: "Scrum" | "Kanban";
    /** The sprint length for the Atlassian team. */
    sprintLength?: number;
}
interface GetPlanOnlyTeamResponse {
    /** The capacity for the plan-only team. */
    capacity?: number;
    /** The plan-only team ID. */
    id: number;
    /** The ID of the issue source for the plan-only team. */
    issueSourceId?: number;
    /** The account IDs of the plan-only team members. */
    memberAccountIds?: string[];
    /** The plan-only team name. */
    name: string;
    /** The planning style for the plan-only team. This is "Scrum" or "Kanban". */
    planningStyle: "Scrum" | "Kanban";
    /** The sprint length for the plan-only team. */
    sprintLength?: number;
}
interface GetTeamResponseForPage {
    /** The team ID. */
    id: string;
    /** The team name. This is returned if the type is "PlanOnly". */
    name?: string;
    /** The team type. This is "PlanOnly" or "Atlassian". */
    type: "PlanOnly" | "Atlassian";
}
interface PageWithCursorGetTeamResponseForPage {
    cursor?: string;
    last?: boolean;
    nextPageCursor?: string;
    size?: number;
    total?: number;
    values?: GetTeamResponseForPage[];
}

/** Details about the time tracking provider. */
interface TimeTrackingProvider {
    /** The key for the time tracking provider. For example, *JIRA*. */
    key: string;
    /**
     * The name of the time tracking provider. For example, *JIRA provided time
     * tracking*.
     */
    name?: string;
    /**
     * The URL of the configuration page for the time tracking provider app. For
     * example, * /example/config/url*. This property is only returned if the
     * `adminPageKey` property is set in the module descriptor of the time tracking
     * provider app.
     */
    url?: string;
}

/** The details of a UI modification. */
interface CreateUiModificationDetails {
    /** List of contexts of the UI modification. The maximum number of contexts is 1000. */
    contexts?: UiModificationContextDetails[];
    /**
     * The data of the UI modification. The maximum size of the data is 50000
     * characters.
     */
    data?: string;
    /** The description of the UI modification. The maximum length is 255 characters. */
    description?: string;
    /** The name of the UI modification. The maximum length is 255 characters. */
    name: string;
}
interface DetailedErrorCollection {
    /** Map of objects representing additional details for an error */
    details?: {
        [key: string]: unknown;
    };
    /**
     * The list of error messages produced by this operation. For example, "input
     * parameter 'key' must be provided"
     */
    errorMessages?: string[];
    /**
     * The list of errors by parameter returned by the operation. For
     * example,"projectKey": "Project keys must start with an uppercase letter,
     * followed by one or more uppercase alphanumeric characters."
     */
    errors?: {
        [key: string]: string;
    };
}
/** A page of items. */
interface PageBeanUiModificationDetails {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: UiModificationDetails[];
}
/**
 * The details of a UI modification's context, which define where to activate the
 * UI modification.
 */
interface UiModificationContextDetails {
    /** The ID of the UI modification context. */
    id?: string;
    /**
     * Whether a context is available. For example, when a project is deleted the
     * context becomes unavailable.
     */
    isAvailable?: boolean;
    /**
     * The issue type ID of the context. Null is treated as a wildcard, meaning the UI
     * modification will be applied to all issue types. Each UI modification context
     * can have a maximum of one wildcard.
     */
    issueTypeId?: string;
    /**
     * The project ID of the context. Null is treated as a wildcard, meaning the UI
     * modification will be applied to all projects. Each UI modification context can
     * have a maximum of one wildcard.
     */
    projectId?: string;
    /**
     * The view type of the context. Only `GIC`(Global Issue Create), `IssueView` and
     * `IssueTransition` are supported. Null is treated as a wildcard, meaning the UI
     * modification will be applied to all view types. Each UI modification context
     * can have a maximum of one wildcard.
     */
    viewType?: "GIC" | "IssueView" | "IssueTransition";
}
/** The details of a UI modification. */
interface UiModificationDetails {
    /** List of contexts of the UI modification. The maximum number of contexts is 1000. */
    contexts?: UiModificationContextDetails[];
    /**
     * The data of the UI modification. The maximum size of the data is 50000
     * characters.
     */
    data?: string;
    /** The description of the UI modification. The maximum length is 255 characters. */
    description?: string;
    /** The ID of the UI modification. */
    id: string;
    /** The name of the UI modification. The maximum length is 255 characters. */
    name: string;
    /** The URL of the UI modification. */
    self: string;
}
/** Identifiers for a UI modification. */
interface UiModificationIdentifiers {
    /** The ID of the UI modification. */
    id: string;
    /** The URL of the UI modification. */
    self: string;
}
/** The details of a UI modification. */
interface UpdateUiModificationDetails {
    /**
     * List of contexts of the UI modification. The maximum number of contexts is
     * 1000. If provided, replaces all existing contexts.
     */
    contexts?: UiModificationContextDetails[];
    /**
     * The data of the UI modification. The maximum size of the data is 50000
     * characters.
     */
    data?: string;
    /** The description of the UI modification. The maximum length is 255 characters. */
    description?: string;
    /** The name of the UI modification. The maximum length is 255 characters. */
    name?: string;
}

interface UserNavPropertyJsonBean {
    key?: string;
    value?: string;
}

/** The user details. */
interface NewUserDetails extends Record<string, unknown> {
    /** Deprecated, do not use. */
    applicationKeys?: string[];
    /**
     * This property is no longer available. If the user has an Atlassian account,
     * their display name is not changed. If the user does not have an Atlassian
     * account, they are sent an email asking them set up an account.
     */
    displayName?: string;
    /** The email address for the user. */
    emailAddress: string;
    /**
     * This property is no longer available. See the [migration
     * guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    key?: string;
    /**
     * This property is no longer available. See the [migration
     * guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    name?: string;
    /**
     * This property is no longer available. If the user has an Atlassian account,
     * their password is not changed. If the user does not have an Atlassian account,
     * they are sent an email asking them set up an account.
     */
    password?: string;
    /**
     * Products the new user has access to. Valid products are: jira-core,
     * jira-servicedesk, jira-product-discovery, jira-software. To create a user
     * without product access, set this field to be an empty array.
     */
    products: string[];
    /** The URL of the user. */
    self?: string;
}
interface UnrestrictedUserEmail extends Record<string, unknown> {
    /** The accountId of the user */
    accountId?: string;
    /** The email of the user */
    email?: string;
}
interface UserColumnRequestBody {
    columns?: string[];
}
interface UserMigrationBean {
    accountId?: string;
    key?: string;
    username?: string;
}

/** A page of items. */
interface PageBeanUserKey {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: UserKey[];
}
/** List of user account IDs. */
interface UserKey {
    /**
     * The account ID of the user, which uniquely identifies the user across all
     * Atlassian products. For example, *5b10ac8d82e05b22cc7d4ef5*. Returns *unknown*
     * if the record is deleted and corrupted, for example, as the result of a server
     * import.
     */
    accountId?: string;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details.
     */
    key?: string;
}

/**
 * Container for a list of registered webhooks. Webhook details are returned in
 * the same order as the request.
 */
interface ContainerForRegisteredWebhooks {
    /** A list of registered webhooks. */
    webhookRegistrationResult?: RegisteredWebhook[];
}
/** Container for a list of webhook IDs. */
interface ContainerForWebhookIds {
    /** A list of webhook IDs. */
    webhookIds: number[];
}
/** Details about a failed webhook. */
interface FailedWebhook {
    /** The webhook body. */
    body?: string;
    /**
     * The time the webhook was added to the list of failed webhooks (that is, the
     * time of the last failed retry).
     */
    failureTime: number;
    /**
     * The webhook ID, as sent in the `X-Atlassian-Webhook-Identifier` header with the
     * webhook.
     */
    id: string;
    /** The original webhook destination. */
    url: string;
}
/** A page of failed webhooks. */
interface FailedWebhooks {
    /**
     * The maximum number of items on the page. If the list of values is shorter than
     * this number, then there are no more pages.
     */
    maxResults: number;
    /**
     * The URL to the next page of results. Present only if the request returned at
     * least one result.The next page may be empty at the time of receiving the
     * response, but new failed webhooks may appear in time. You can save the URL to
     * the next page and query for new results periodically (for example, every hour).
     */
    next?: string;
    /** The list of webhooks. */
    values: FailedWebhook[];
}
/** A page of items. */
interface PageBeanWebhook {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: Webhook[];
}
/**
 * ID of a registered webhook or error messages explaining why a webhook wasn't
 * registered.
 */
interface RegisteredWebhook {
    /** The ID of the webhook. Returned if the webhook is created. */
    createdWebhookId?: number;
    /** Error messages specifying why the webhook creation failed. */
    errors?: string[];
}
/** A webhook. */
interface Webhook {
    /** The Jira events that trigger the webhook. */
    events: ("jira:issue_created" | "jira:issue_updated" | "jira:issue_deleted" | "comment_created" | "comment_updated" | "comment_deleted" | "issue_property_set" | "issue_property_deleted")[];
    /**
     * The date after which the webhook is no longer sent. Use [Extend webhook
     * life](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-webhooks/#api-rest-api-3-webhook-refresh-put)
     * to extend the date.
     */
    expirationDate?: number;
    /**
     * A list of field IDs. When the issue changelog contains any of the fields, the
     * webhook `jira:issue_updated` is sent. If this parameter is not present, the app
     * is notified about all field updates.
     */
    fieldIdsFilter?: string[];
    /** The ID of the webhook. */
    id: number;
    /**
     * A list of issue property keys. A change of those issue properties triggers the
     * `issue_property_set` or `issue_property_deleted` webhooks. If this parameter is
     * not present, the app is notified about all issue property updates.
     */
    issuePropertyKeysFilter?: string[];
    /** The JQL filter that specifies which issues the webhook is sent for. */
    jqlFilter: string;
    /** The URL that specifies where the webhooks are sent. */
    url: string;
}
/** A list of webhooks. */
interface WebhookDetails {
    /** The Jira events that trigger the webhook. */
    events: ("jira:issue_created" | "jira:issue_updated" | "jira:issue_deleted" | "comment_created" | "comment_updated" | "comment_deleted" | "issue_property_set" | "issue_property_deleted")[];
    /**
     * A list of field IDs. When the issue changelog contains any of the fields, the
     * webhook `jira:issue_updated` is sent. If this parameter is not present, the app
     * is notified about all field updates.
     */
    fieldIdsFilter?: string[];
    /**
     * A list of issue property keys. A change of those issue properties triggers the
     * `issue_property_set` or `issue_property_deleted` webhooks. If this parameter is
     * not present, the app is notified about all issue property updates.
     */
    issuePropertyKeysFilter?: string[];
    /**
     * The JQL filter that specifies which issues the webhook is sent for. Only a
     * subset of JQL can be used. The supported elements are:
     *
     *  *  Fields: `issueKey`, `project`, `issuetype`, `status`, `assignee`,
     * `reporter`, `issue.property`, and `cf[id]`. For custom fields (`cf[id]`), only
     * the epic label custom field is supported.".
     *  *  Operators: `=`, `!=`, `IN`, and `NOT IN`.
     */
    jqlFilter: string;
}
/** Details of webhooks to register. */
interface WebhookRegistrationDetails {
    /**
     * The URL that specifies where to send the webhooks. This URL must use the same
     * base URL as the Connect app. Only a single URL per app is allowed to be
     * registered.
     */
    url: string;
    /** A list of webhooks. */
    webhooks: WebhookDetails[];
}
/** The date the refreshed webhooks expire. */
interface WebhooksExpirationDate {
    /** The expiration date of all the refreshed webhooks. */
    expirationDate: number;
}

/** Details about the status mappings for publishing a draft workflow scheme. */
interface PublishDraftWorkflowScheme {
    /** Mappings of statuses to new statuses for issue types. */
    statusMappings?: StatusMapping[];
}
/** Details about the mapping from a status to a new status for an issue type. */
interface StatusMapping {
    /** The ID of the issue type. */
    issueTypeId: string;
    /** The ID of the new status. */
    newStatusId: string;
    /** The ID of the status. */
    statusId: string;
}

/**
 * A container for a list of workflow schemes together with the projects they are
 * associated with.
 */
interface ContainerOfWorkflowSchemeAssociations {
    /** A list of workflow schemes together with projects they are associated with. */
    values: WorkflowSchemeAssociations[];
}
/** A workflow scheme along with a list of projects that use it. */
interface WorkflowSchemeAssociations {
    /** The list of projects that use the workflow scheme. */
    projectIds: string[];
    /** The workflow scheme. */
    workflowScheme: WorkflowScheme;
}
/** An associated workflow scheme and project. */
interface WorkflowSchemeProjectAssociation {
    /** The ID of the project. */
    projectId: string;
    /**
     * The ID of the workflow scheme. If the workflow scheme ID is `null`, the
     * operation assigns the default workflow scheme.
     */
    workflowSchemeId?: string;
}

/**
 * Overrides, for the selected issue types, any status mappings provided in
 * `statusMappingsByWorkflows`. Status mappings are required when the new workflow
 * for an issue type doesn't contain all statuses that the old workflow has.
 * Status mappings can be provided by a combination of `statusMappingsByWorkflows`
 * and `statusMappingsByIssueTypeOverride`.
 */
interface MappingsByIssueTypeOverride {
    /** The ID of the issue type for this mapping. */
    issueTypeId: string;
    /** The list of status mappings. */
    statusMappings: WorkflowAssociationStatusMapping[];
}
/**
 * The status mappings by workflows. Status mappings are required when the new
 * workflow for an issue type doesn't contain all statuses that the old workflow
 * has. Status mappings can be provided by a combination of
 * `statusMappingsByWorkflows` and `statusMappingsByIssueTypeOverride`.
 */
interface MappingsByWorkflow {
    /** The ID of the new workflow. */
    newWorkflowId: string;
    /** The ID of the old workflow. */
    oldWorkflowId: string;
    /** The list of status mappings. */
    statusMappings: WorkflowAssociationStatusMapping[];
}
/** A page of items. */
interface PageBeanWorkflowScheme {
    /** Whether this is the last page. */
    isLast?: boolean;
    /** The maximum number of items that could be returned. */
    maxResults?: number;
    /** If there is another page of results, the URL of the next page. */
    nextPage?: string;
    /** The URL of the page. */
    self?: string;
    /** The index of the first item returned. */
    startAt?: number;
    /** The number of items returned. */
    total?: number;
    /** The list of items. */
    values?: WorkflowScheme[];
}
/** The list of required status mappings by issue type. */
interface RequiredMappingByIssueType {
    /** The ID of the issue type. */
    issueTypeId?: string;
    /** The status IDs requiring mapping. */
    statusIds?: string[];
}
/** The list of required status mappings by workflow. */
interface RequiredMappingByWorkflows {
    /** The ID of the source workflow. */
    sourceWorkflowId?: string;
    /** The status IDs requiring mapping. */
    statusIds?: string[];
    /** The ID of the target workflow. */
    targetWorkflowId?: string;
}
/** Represents a usage of an entity by a project ID and related issue type IDs. */
interface SimpleUsage {
    /** The issue type IDs for the usage. */
    issueTypeIds: string[];
    /** The project ID for the usage. */
    projectId: string;
}
/** The statuses associated with each workflow. */
interface StatusesPerWorkflow {
    /** The ID of the initial status for the workflow. */
    initialStatusId?: string;
    /** The status IDs associated with the workflow. */
    statuses?: string[];
    /** The ID of the workflow. */
    workflowId?: string;
}
/** The details of the statuses in the associated workflows. */
interface StatusMetadata {
    /** The category of the status. */
    category?: "TODO" | "IN_PROGRESS" | "DONE";
    /** The ID of the status. */
    id?: string;
    /** The name of the status. */
    name?: string;
}
/** The list of status mappings. */
interface WorkflowAssociationStatusMapping {
    /** The ID of the status in the new workflow. */
    newStatusId: string;
    /** The ID of the status in the old workflow that isn't present in the new workflow. */
    oldStatusId: string;
}
/** The workflow metadata and issue type IDs which use this workflow. */
interface WorkflowMetadataAndIssueTypeRestModel {
    /** The list of issue type IDs for the mapping. */
    issueTypeIds: string[];
    /** Workflow metadata and usage detail. */
    workflow: WorkflowMetadataRestModel;
}
/** Workflow metadata and usage detail. */
interface WorkflowMetadataRestModel {
    /** The description of the workflow. */
    description: string;
    /** The ID of the workflow. */
    id: string;
    /** The name of the workflow. */
    name: string;
    /**
     * Deprecated. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-2298)
     * for details.
     *
     * Use the optional `workflows.usages` expand to get additional information about
     * the projects and issue types associated with the workflows in the workflow
     * scheme.
     */
    usage: (SimpleUsage | null)[] | null;
    /** The current version details of this workflow scheme. */
    version: DocumentVersion;
}
/**
 * The explicit association between issue types and a workflow in a workflow
 * scheme.
 */
interface WorkflowSchemeAssociation {
    /** The issue types assigned to the workflow. */
    issueTypeIds: string[];
    /** The ID of the workflow. */
    workflowId: string;
}
/** Projects using the workflow scheme. */
interface WorkflowSchemeProjectUsageDto {
    /** A page of projects. */
    projects?: ProjectUsagePage;
    /** The workflow scheme ID. */
    workflowSchemeId?: string;
}
/** The workflow scheme read request body. */
interface WorkflowSchemeReadRequest {
    /** The list of project IDs to query. */
    projectIds?: (string | null)[] | null;
    /** The list of workflow scheme IDs to query. */
    workflowSchemeIds?: (string | null)[] | null;
}
interface WorkflowSchemeReadResponse {
    /** Workflow metadata and usage detail. */
    defaultWorkflow?: WorkflowMetadataRestModel;
    /** The description of the workflow scheme. */
    description?: string | null;
    /** The ID of the workflow scheme. */
    id: string;
    /** The name of the workflow scheme. */
    name: string;
    /**
     * Deprecated. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-2298)
     * for details.
     *
     * The IDs of projects using the workflow scheme.
     */
    projectIdsUsingScheme?: (string | null)[] | null;
    /** The scope of the workflow. */
    scope: WorkflowScope;
    /**
     * Indicates if there's an [asynchronous task](#async-operations) for this
     * workflow scheme.
     */
    taskId?: string | null;
    /** The current version details of this workflow scheme. */
    version: DocumentVersion;
    /** Mappings from workflows to issue types. */
    workflowsForIssueTypes: WorkflowMetadataAndIssueTypeRestModel[];
}
/** The update workflow scheme payload. */
interface WorkflowSchemeUpdateRequest extends Record<string, unknown> {
    /**
     * The ID of the workflow for issue types without having a mapping defined in this
     * workflow scheme. Only used in global-scoped workflow schemes. If the
     * `defaultWorkflowId` isn't specified, this is set to *Jira Workflow (jira)*.
     */
    defaultWorkflowId?: string;
    /** The new description for this workflow scheme. */
    description: string;
    /** The ID of this workflow scheme. */
    id: string;
    /** The new name for this workflow scheme. */
    name: string;
    /**
     * Overrides, for the selected issue types, any status mappings provided in
     * `statusMappingsByWorkflows`. Status mappings are required when the new workflow
     * for an issue type doesn't contain all statuses that the old workflow has.
     * Status mappings can be provided by a combination of `statusMappingsByWorkflows`
     * and `statusMappingsByIssueTypeOverride`.
     */
    statusMappingsByIssueTypeOverride?: MappingsByIssueTypeOverride[];
    /**
     * The status mappings by workflows. Status mappings are required when the new
     * workflow for an issue type doesn't contain all statuses that the old workflow
     * has. Status mappings can be provided by a combination of
     * `statusMappingsByWorkflows` and `statusMappingsByIssueTypeOverride`.
     */
    statusMappingsByWorkflows?: MappingsByWorkflow[];
    /** The current version details of this workflow scheme. */
    version: DocumentVersion;
    /** Mappings from workflows to issue types. */
    workflowsForIssueTypes?: WorkflowSchemeAssociation[];
}
/** The request payload to get the required mappings for updating a workflow scheme. */
interface WorkflowSchemeUpdateRequiredMappingsRequest {
    /**
     * The ID of the new default workflow for this workflow scheme. Only used in
     * global-scoped workflow schemes. If it isn't specified, is set to *Jira Workflow
     * (jira)*.
     */
    defaultWorkflowId?: string | null;
    /** The ID of the workflow scheme. */
    id: string;
    /** The new workflow to issue type mappings for this workflow scheme. */
    workflowsForIssueTypes: WorkflowSchemeAssociation[];
}
interface WorkflowSchemeUpdateRequiredMappingsResponse {
    /** The list of required status mappings by issue type. */
    statusMappingsByIssueTypes?: RequiredMappingByIssueType[];
    /** The list of required status mappings by workflow. */
    statusMappingsByWorkflows?: RequiredMappingByWorkflows[];
    /** The details of the statuses in the associated workflows. */
    statuses?: StatusMetadata[];
    /** The statuses associated with each workflow. */
    statusesPerWorkflow?: StatusesPerWorkflow[];
}

/** Details about the server Jira is running on. */
interface WorkflowTransitionProperty extends Record<string, unknown> {
    /** The ID of the transition property. */
    id?: string;
    /**
     * The key of the transition property. Also known as the name of the transition
     * property.
     */
    key?: string;
    /** The value of the transition property. */
    value: string;
}

interface OrganizationCreateDto {
    /** Name of the organization. Must contain 1-200 characters. */
    name: string;
}
interface OrganizationDto {
    /** REST API URL to the organization. */
    _links?: SelfLinkDto;
    /**
     * Date the organization was created. This field may not be present in some older
     * organizations.
     */
    created?: DateDto;
    /** A unique system generated ID for the organization. */
    id?: string;
    /** Name of the organization. */
    name?: string;
    /**
     * Returns if an organization is managed by scim. This field may not be present in
     * some older organizations
     */
    scimManaged?: boolean;
    /**
     * A unique system generated ID for the organization. This is identity from the
     * group directory id
     */
    uuid?: string;
}
interface OrganizationServiceDeskUpdateDto extends Record<string, unknown> {
    /**
     * List of organizations, specified by 'ID' field values, to add to or remove from
     * the service desk.
     */
    organizationId: number;
    /** Service desk Id for which, organization needs to be updated */
    serviceDeskId?: string;
}
interface PagedDtoOrganizationDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: OrganizationDto[];
}
interface UsersOrganizationUpdateDto extends Record<string, unknown> {
    /**
     * List of customers, specific by account IDs, to add to or remove from the
     * organization.
     */
    accountIds?: string[];
    /** The organizationId in which users need to be added */
    organizationId?: number;
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details. Use `accountIds` instead.
     */
    usernames?: string[];
}

interface PagedDtoIssueBean {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: IssueBean[];
}
interface PagedDtoQueueDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: QueueDto[];
}
interface PagedDtoRequestTypeGroupDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: RequestTypeGroupDto[];
}
interface PagedDtoServiceDeskDto {
    _expands?: string[];
    /** List of the links relating to the page. */
    _links?: PagedLinkDto;
    /** Indicates if this is the last page of records (true) or not (false). */
    isLastPage?: boolean;
    /**
     * Number of items to be returned per page, up to the maximum set for these
     * objects in the current implementation.
     */
    limit?: number;
    /** Number of items returned in the page. */
    size?: number;
    /** Index of the first item returned in the page. */
    start?: number;
    /** Details of the items included in the page. */
    values?: ServiceDeskDto[];
}
interface QueueDto {
    /** REST API URL to the queue. */
    _links?: SelfLinkDto;
    /** Fields returned for each request in the queue. */
    fields?: string[];
    /** ID for the queue. */
    id?: string;
    /** The count of customer requests in the queue. */
    issueCount?: number;
    /** JQL query that filters reqeusts for the queue. */
    jql?: string;
    /** Short name for the queue. */
    name?: string;
}
interface RequestTypeCreateDto {
    /** Description of the request type on the service desk. */
    description?: string;
    /** Help text for the request type on the service desk. */
    helpText?: string;
    /** ID of the request type to add to the service desk. */
    issueTypeId?: string;
    /** Name of the request type on the service desk. */
    name?: string;
}
interface RequestTypeGroupDto {
    /** ID of the request type group */
    id?: string;
    /** Name of the request type group. */
    name?: string;
}
interface RequestTypePermissionCheckRequestDto {
    /** The account ID of a user. */
    accountId?: string;
    /** List of requested permissions. */
    permissions?: ("canCreateRequest" | "canAdminister")[];
    /** List of request type IDs. */
    requestTypeIds?: number[];
}
interface RequestTypePermissionCheckResponse {
    /** List of request type IDs for which the user has permission to administer. */
    canAdminister?: number[];
    /** List of request type IDs for which the user can create requests. */
    canCreateRequest?: number[];
}
interface ServiceDeskCustomerDto {
    /**
     * List of users, specified by account IDs, to add to or remove from a service
     * desk.
     */
    accountIds?: string[];
    /**
     * This property is no longer available and will be removed from the documentation
     * soon. See the [deprecation
     * notice](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/)
     * for details. Use `accountIds` instead.
     */
    usernames?: string[];
}

interface SoftwareInfoDto {
    /** REST API URL of the instance. */
    _links?: SelfLinkDto;
    /** Reference of the change set included in the build. */
    buildChangeSet?: string;
    /** Date of the current build. */
    buildDate?: DateDto;
    /** Indicates whether the instance is licensed (true) or not (false). */
    isLicensedForUse?: boolean;
    /** Jira Platform version upon which Service Desk is based. */
    platformVersion?: string;
    /** Jira Service Management version. */
    version?: string;
}

/**
 * An association type referencing service ID or keys.
 *
 * @example
 * {
 *   "associationType": "serviceIdOrKeys",
 *   "values": [
 *     "some-service-key"
 *   ]
 * }
 */
interface ServiceIdOrKeysAssociation extends Record<string, unknown> {
    /**
     * Defines the association type.
     *
     * @example
     * serviceIdOrKeys
     */
    associationType: "serviceIdOrKeys";
    /**
     * The service ID or keys to associate the entity with.
     *
     * The number of values counted across all associationTypes must not exceed a
     * limit of 500.
     */
    values: string[];
}

type ClientType = "forge" | "default";
interface DefaultJiraConfig {
    type: "default";
    auth: {
        email: string;
        apiToken: string;
        baseUrl: string;
    };
}
interface ForgeJiraConfig {
    type: "forge";
    auth: {
        api: ForgeAPI;
    };
}
type JiraResult<TResult> = {
    success: false;
    error: unknown;
    status: number;
    data?: undefined;
} | {
    success: true;
    data: TResult;
    status: number;
    error?: undefined;
};
type RequestParams = {
    path: string;
    method: "GET" | "POST" | "PUT" | "DELETE";
    body?: string | ArrayBuffer | URLSearchParams | undefined;
    isResponseAvailable: boolean;
    config: DefaultJiraConfig | ForgeJiraConfig;
    opts: DefaultRequestOpts | ForgeRequestOpts | undefined;
    isExperimental?: boolean;
    queryParams?: Record<string, unknown>;
    pathParams?: Record<string, unknown>;
};
interface DefaultRequestOpts {
    /**
     * An object containing custom HTTP headers to include in the request. All required authentication and content-type headers are automatically managed by the client. Use this option to add additional headers or override default headers for specific requests (e.g., `{ "X-Custom-Header": "value", "Accept": "application/json" }`).
     */
    headers?: Record<string, string>;
}
interface ForgeRequestOpts extends DefaultRequestOpts {
    /**
     * For Forge applications, requests are executed as the `"user"` by default. Set to `"app"` to execute requests with application-level permissions instead of user-level permissions.
     */
    as?: AsType;
}
interface WithRequestOptsForge {
    /**
     * Additional options for the request. This may include:
     *
     * - **`as`**: For Forge applications, requests are executed as the `"user"` by default. Set to `"app"` to execute requests with application-level permissions instead of user-level permissions.
     * - **`headers`**: An object containing custom HTTP headers to include in the request. All required authentication and content-type headers are automatically managed by the client. Use this option to add additional headers or override default headers for specific requests (e.g., `{ "X-Custom-Header": "value", "Accept": "application/json" }`).
     *
     * @example
     * {
     *   as: "app",
     *   headers: {
     *     "X-Custom-Header": "my-value"
     *   }
     * }
     */
    opts?: ForgeRequestOpts;
}
interface WithRequestOptsDefault {
    /**
     * Additional options for the request. This may include:
     *
     * **`headers`**: An object containing custom HTTP headers to include in the request. All required authentication and content-type headers are automatically managed by the client. Use this option to add additional headers or override default headers for specific requests (e.g., `{ "X-Custom-Header": "value", "Accept": "application/json" }`).
     *
     * @example
     * {
     *   headers: {
     *     "X-Custom-Header": "my-value"
     *   }
     * }
     */
    opts?: DefaultRequestOpts;
}
type WithRequestOpts<TClient extends ClientType> = TClient extends "forge" ? WithRequestOptsForge : WithRequestOptsDefault;
type RequestOpts<TClient extends ClientType> = TClient extends "default" ? DefaultRequestOpts : ForgeRequestOpts;
type AsType = "app" | "user";

declare class JiraClientImpl<TClient extends ClientType = ClientType> {
    private config;
    private _announcementBanner?;
    private _appDataPolicies?;
    private _applicationRoles?;
    private _appMigration?;
    private _appProperties?;
    private _auditRecords?;
    private _avatars?;
    private _classificationLevels?;
    private _dashboards?;
    private _dynamicModules?;
    private _filterSharing?;
    private _filters?;
    private _groupAndUserPicker?;
    private _groups?;
    private _issueAttachments?;
    private _issueBulkOperations?;
    private _issueCommentProperties?;
    private _issueComments?;
    private _issueCustomFieldAssociations?;
    private _issueCustomFieldConfigurationApps?;
    private _issueCustomFieldContexts?;
    private _issueCustomFieldOptionsApps?;
    private _issueCustomFieldOptions?;
    private _issueCustomFieldValuesApps?;
    private _issueFieldConfigurations?;
    private _issueFields?;
    private _issueLinks?;
    private _issueLinkTypes?;
    private _issueNavigatorSettings?;
    private _issueNotificationSchemes?;
    private _issuePriorities?;
    private _issueProperties?;
    private _issueRedaction?;
    private _issueRemoteLinks?;
    private _issueResolutions?;
    private _issueSearch?;
    private _issueSecurityLevel?;
    private _issueSecuritySchemes?;
    private _issueTypeProperties?;
    private _issueTypeSchemes?;
    private _issueTypeScreenSchemes?;
    private _issueTypes?;
    private _issueVotes?;
    private _issueWatchers?;
    private _issueWorklogProperties?;
    private _issueWorklogs?;
    private _issues?;
    private _jiraExpressions?;
    private _jiraSettings?;
    private _jqlFunctionsApps?;
    private _jql?;
    private _labels?;
    private _licenseMetrics?;
    private _myself?;
    private _permissionSchemes?;
    private _permissions?;
    private _plans?;
    private _prioritySchemes?;
    private _projectAvatars?;
    private _projectCategories?;
    private _projectClassificationLevels?;
    private _projectComponents?;
    private _projectEmail?;
    private _projectFeatures?;
    private _projectKeyAndNameValidation?;
    private _projectPermissionSchemes?;
    private _projectProperties?;
    private _projectRoleActors?;
    private _projectRoles?;
    private _projectTemplates?;
    private _projectTypes?;
    private _projectVersions?;
    private _projects?;
    private _screenSchemes?;
    private _screenTabFields?;
    private _screenTabs?;
    private _screens?;
    private _serverInfo?;
    private _serviceRegistry?;
    private _status?;
    private _tasks?;
    private _teamsInPlan?;
    private _timeTracking?;
    private _uiModificationsApps?;
    private _userProperties?;
    private _userSearch?;
    private _usernavproperties?;
    private _users?;
    private _webhooks?;
    private _workflowSchemeDrafts?;
    private _workflowSchemeProjectAssociations?;
    private _workflowSchemes?;
    private _workflowStatusCategories?;
    private _workflowStatuses?;
    private _workflowTransitionProperties?;
    private _workflowTransitionRules?;
    private _workflows?;
    private _servicedesk?;
    private _request?;
    private _customer?;
    private _assets?;
    private _info?;
    private _knowledgebase?;
    private _organization?;
    private _requestType?;
    private _backlog?;
    private _boardIssue?;
    private _board?;
    private _builds?;
    private _deployments?;
    private _developmentInformation?;
    private _devOpsComponents?;
    private _epic?;
    private _featureFlags?;
    private _operations?;
    private _remoteLinks?;
    private _securityInformation?;
    private _sprint?;
    constructor(config: DefaultJiraConfig | ForgeJiraConfig);
    /**
     * This resource represents an announcement banner. Use it to retrieve and update
     * banner configuration.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-announcement-banner
     */
    get announcementBanner(): {
        getBanner: ({ opts }: {} & WithRequestOpts<TClient>) => Promise<JiraResult<AnnouncementBannerConfiguration>>;
        setBanner: ({ announcementBannerConfigurationUpdate, opts }: {
            announcementBannerConfigurationUpdate: AnnouncementBannerConfigurationUpdate;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents app access rule data policies.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-app-data-policies
     */
    get appDataPolicies(): {
        getPolicies: ({ ids, opts }: {
            ids?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectDataPolicies>>;
        getPolicy: ({ opts }: {} & WithRequestOpts<TClient>) => Promise<JiraResult<WorkspaceDataPolicy>>;
    };
    /**
     * This resource represents application roles. Use it to get details of an
     * application role or all application roles.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-application-roles
     */
    get applicationRoles(): {
        getAllApplicationRoles: ({ opts }: {} & WithRequestOpts<TClient>) => Promise<JiraResult<ApplicationRole[]>>;
        getApplicationRole: ({ key, opts }: {
            key: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ApplicationRole>>;
    };
    /**
     * This resource supports [app
     * migrations](https://developer.atlassian.com/platform/app-migration/). Use it to:
     * - [to request migrated workflow rules
     * details](https://developer.atlassian.com/platform/app-migration/tutorials/migration-app-workflow-rules/).
     * - [perform bulk updates of entity
     * properties](https://developer.atlassian.com/platform/app-migration/tutorials/entity-properties-bulk-api/).
     * - [perform bulk updates of issue custom field
     * values](https://developer.atlassian.com/platform/app-migration/tutorials/migrating-app-custom-fields/).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-app-migration
     */
    get appMigration(): {
        appIssueFieldValueUpdateResourceUpdateIssueFieldsPut: ({ atlassianTransferId, connectCustomFieldValues, opts }: {
            atlassianTransferId: string;
            connectCustomFieldValues: ConnectCustomFieldValues;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        migrationResourceUpdateEntityPropertiesValuePut: ({ entityType, atlassianTransferId, entityPropertyDetailses, opts }: {
            entityType: "IssueProperty" | "CommentProperty" | "DashboardItemProperty" | "IssueTypeProperty" | "ProjectProperty" | "UserProperty" | "WorklogProperty" | "BoardProperty" | "SprintProperty";
            atlassianTransferId: string;
            entityPropertyDetailses: EntityPropertyDetails[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        migrationResourceWorkflowRuleSearchPost: ({ atlassianTransferId, workflowRulesSearch, opts }: {
            atlassianTransferId: string;
            workflowRulesSearch: WorkflowRulesSearch;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowRulesSearchDetails>>;
    };
    /**
     * This resource represents app properties. Use it to store arbitrary data for your
     * [Connect
     * app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-app-properties
     */
    get appProperties(): {
        addonPropertiesResourceDeleteAddonPropertyDelete: ({ addonKey, propertyKey, opts }: {
            addonKey: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        addonPropertiesResourceGetAddonPropertiesGet: ({ addonKey, opts }: {
            addonKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PropertyKeys>>;
        addonPropertiesResourceGetAddonPropertyGet: ({ addonKey, propertyKey, opts }: {
            addonKey: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<EntityProperty>>;
        addonPropertiesResourcePutAddonPropertyPut: ({ addonKey, propertyKey, requestBody, opts }: {
            addonKey: string;
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            operationMessage: OperationMessage;
        }>>;
        deleteForgeAppProperty: ({ propertyKey, opts }: {
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        putForgeAppProperty: ({ propertyKey, requestBody, opts }: {
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            operationMessage: OperationMessage;
        }>>;
    };
    /**
     * This resource represents audits that record activities undertaken in Jira. Use
     * it to get a list of audit records.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-audit-records
     */
    get auditRecords(): {
        getAuditRecords: ({ offset, limit, filter, from, to, opts }: {
            offset?: number;
            limit?: number;
            filter?: string;
            from?: string;
            to?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<AuditRecords>>;
    };
    /**
     * This resource represents system and custom avatars. Use it to obtain the
     * details of system or custom avatars, add and remove avatars from a project,
     * issue type or priority and obtain avatar images.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-avatars
     */
    get avatars(): {
        deleteAvatar: ({ type, owningObjectId, id, opts }: {
            type: "project" | "issuetype" | "priority";
            owningObjectId: string;
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllSystemAvatars: ({ type, opts }: {
            type: "issuetype" | "project" | "user" | "priority";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SystemAvatars>>;
        getAvatarImageById: ({ type, id, size, format, opts }: {
            type: "issuetype" | "project" | "priority";
            id: number;
            size?: "xsmall" | "small" | "medium" | "large" | "xlarge";
            format?: "png" | "svg";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Blob | StreamingResponseBody>>;
        getAvatarImageByOwner: ({ type, entityId, size, format, opts }: {
            type: "issuetype" | "project" | "priority";
            entityId: string;
            size?: "xsmall" | "small" | "medium" | "large" | "xlarge";
            format?: "png" | "svg";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Blob | StreamingResponseBody>>;
        getAvatarImageByType: ({ type, size, format, opts }: {
            type: "issuetype" | "project" | "priority";
            size?: "xsmall" | "small" | "medium" | "large" | "xlarge";
            format?: "png" | "svg";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Blob | StreamingResponseBody>>;
        getAvatars: ({ type, entityId, opts }: {
            type: "project" | "issuetype" | "priority";
            entityId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Avatars>>;
        storeAvatar: ({ type, entityId, x, y, size, mediaType, requestBody, opts }: {
            type: "project" | "issuetype" | "priority";
            entityId: string;
            x?: number;
            y?: number;
            size: number;
            mediaType: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Avatar>>;
    };
    /**
     * This resource represents classification levels.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-classification-levels
     */
    get classificationLevels(): {
        getAllUserDataClassificationLevels: ({ status, orderBy, opts }: {
            status?: ("PUBLISHED" | "ARCHIVED" | "DRAFT")[];
            orderBy?: "rank" | "-rank" | "+rank";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<DataClassificationLevelsBean>>;
    };
    /**
     * This resource represents dashboards. Use it to obtain the details of dashboards
     * as well as get, create, update, or remove item properties and gadgets from
     * dashboards.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-dashboards
     */
    get dashboards(): {
        addGadget: ({ dashboardId, dashboardGadgetSettings, opts }: {
            dashboardId: number;
            dashboardGadgetSettings: DashboardGadgetSettings;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<DashboardGadget>>;
        bulkEditDashboards: ({ bulkEditShareableEntityRequest, opts }: {
            bulkEditShareableEntityRequest: BulkEditShareableEntityRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<BulkEditShareableEntityResponse>>;
        copyDashboard: ({ id, extendAdminPermissions, dashboardDetails, opts }: {
            id: string;
            extendAdminPermissions?: boolean;
            dashboardDetails: DashboardDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Dashboard>>;
        createDashboard: ({ extendAdminPermissions, dashboardDetails, opts }: {
            extendAdminPermissions?: boolean;
            dashboardDetails: DashboardDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Dashboard>>;
        deleteDashboard: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteDashboardItemProperty: ({ dashboardId, itemId, propertyKey, opts }: {
            dashboardId: string;
            itemId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllAvailableDashboardGadgets: ({ opts }: {} & WithRequestOpts<TClient>) => Promise<JiraResult<AvailableDashboardGadgetsResponse>>;
        getAllDashboards: ({ filter, startAt, maxResults, opts }: {
            filter?: "my" | "favourite";
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageOfDashboards>>;
        getAllGadgets: ({ dashboardId, moduleKey, uri, gadgetId, opts }: {
            dashboardId: number;
            moduleKey?: string[];
            uri?: string[];
            gadgetId?: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<DashboardGadgetResponse>>;
        getDashboard: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Dashboard>>;
        getDashboardItemProperty: ({ dashboardId, itemId, propertyKey, opts }: {
            dashboardId: string;
            itemId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<EntityProperty>>;
        getDashboardItemPropertyKeys: ({ dashboardId, itemId, opts }: {
            dashboardId: string;
            itemId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PropertyKeys>>;
        getDashboardsPaginated: ({ dashboardName, accountId, owner, groupname, groupId, projectId, orderBy, startAt, maxResults, status, expand, opts }: {
            dashboardName?: string;
            accountId?: string;
            owner?: string;
            groupname?: string;
            groupId?: string;
            projectId?: number;
            orderBy?: "description" | "-description" | "+description" | "favorite_count" | "-favorite_count" | "+favorite_count" | "id" | "-id" | "+id" | "is_favorite" | "-is_favorite" | "+is_favorite" | "name" | "-name" | "+name" | "owner" | "-owner" | "+owner";
            startAt?: number;
            maxResults?: number;
            status?: "active" | "archived" | "deleted";
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanDashboard>>;
        removeGadget: ({ dashboardId, gadgetId, opts }: {
            dashboardId: number;
            gadgetId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setDashboardItemProperty: ({ dashboardId, itemId, propertyKey, requestBody, opts }: {
            dashboardId: string;
            itemId: string;
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
        updateDashboard: ({ id, extendAdminPermissions, dashboardDetails, opts }: {
            id: string;
            extendAdminPermissions?: boolean;
            dashboardDetails: DashboardDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Dashboard>>;
        updateGadget: ({ dashboardId, gadgetId, dashboardGadgetUpdateRequest, opts }: {
            dashboardId: number;
            gadgetId: number;
            dashboardGadgetUpdateRequest: DashboardGadgetUpdateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents [modules registered
     * dynamically](https://developer.atlassian.com/cloud/jira/platform/dynamic-modules/)
     * by [Connect
     * apps](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-dynamic-modules
     */
    get dynamicModules(): {
        dynamicModulesResourceGetModulesGet: ({ opts }: {} & WithRequestOpts<TClient>) => Promise<JiraResult<ConnectModules>>;
        dynamicModulesResourceRegisterModulesPost: ({ connectModules, opts }: {
            connectModules: ConnectModules;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        dynamicModulesResourceRemoveModulesDelete: ({ moduleKey, opts }: {
            moduleKey?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents options for sharing [filters](#api-group-Filters). Use
     * it to get share scopes as well as add and remove share scopes from filters.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-filter-sharing
     */
    get filterSharing(): {
        addSharePermission: ({ id, sharePermissionInputBean, opts }: {
            id: number;
            sharePermissionInputBean: SharePermissionInputBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SharePermission[]>>;
        deleteSharePermission: ({ id, permissionId, opts }: {
            id: number;
            permissionId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getDefaultShareScope: ({ opts }: WithRequestOpts<TClient>) => Promise<JiraResult<DefaultShareScope>>;
        getSharePermission: ({ id, permissionId, opts }: {
            id: number;
            permissionId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SharePermission>>;
        getSharePermissions: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SharePermission[]>>;
        setDefaultShareScope: ({ defaultShareScope, opts }: {
            defaultShareScope: DefaultShareScope;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<DefaultShareScope>>;
    };
    /**
     * This resource represents [filters](https://confluence.atlassian.com/x/eQiiLQ).
     * Use it to get, create, update, or delete filters. Also use it to configure the
     * columns for a filter and set favorite filters.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-filters
     */
    get filters(): {
        changeFilterOwner: ({ id, changeFilterOwner, opts }: {
            id: number;
            changeFilterOwner: ChangeFilterOwner;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createFilter: ({ expand, overrideSharePermissions, filter, opts }: {
            expand?: string;
            overrideSharePermissions?: boolean;
            filter: Filter;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Filter>>;
        deleteFavouriteForFilter: ({ id, expand, opts }: {
            id: number;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Filter>>;
        deleteFilter: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getColumns: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ColumnItem[]>>;
        getFavouriteFilters: ({ expand, opts }?: {
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Filter[]>>;
        getFilter: ({ id, expand, overrideSharePermissions, opts }: {
            id: number;
            expand?: string;
            overrideSharePermissions?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Filter>>;
        getFiltersPaginated: ({ filterName, accountId, owner, groupname, groupId, projectId, id, orderBy, startAt, maxResults, expand, overrideSharePermissions, isSubstringMatch, opts }?: {
            filterName?: string;
            accountId?: string;
            owner?: string;
            groupname?: string;
            groupId?: string;
            projectId?: number;
            id?: number[];
            orderBy?: "description" | "-description" | "+description" | "favourite_count" | "-favourite_count" | "+favourite_count" | "id" | "-id" | "+id" | "is_favourite" | "-is_favourite" | "+is_favourite" | "name" | "-name" | "+name" | "owner" | "-owner" | "+owner" | "is_shared" | "-is_shared" | "+is_shared";
            startAt?: number;
            maxResults?: number;
            expand?: string;
            overrideSharePermissions?: boolean;
            isSubstringMatch?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanFilterDetails>>;
        getMyFilters: ({ expand, includeFavourites, opts }?: {
            expand?: string;
            includeFavourites?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Filter[]>>;
        resetColumns: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setColumns: ({ id, mediaType, columnRequestBody, opts }: {
            id: number;
        } & (({
            mediaType?: "application/json";
            columnRequestBody: ColumnRequestBody;
        } | {
            mediaType: "multipart/form-data";
            columnRequestBody: ColumnRequestBody;
        }) & WithRequestOpts<TClient>)) => Promise<JiraResult<unknown>>;
        setFavouriteForFilter: ({ id, expand, opts }: {
            id: number;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Filter>>;
        updateFilter: ({ id, expand, overrideSharePermissions, filter, opts }: {
            id: number;
            expand?: string;
            overrideSharePermissions?: boolean;
            filter: Filter;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Filter>>;
    };
    /**
     * This resource represents a list of users and a list of groups. Use it to obtain
     * the details to populate user and group picker suggestions list.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-group-and-user-picker
     */
    get groupAndUserPicker(): {
        findUsersAndGroups: ({ query, maxResults, showAvatar, fieldId, projectId, issueTypeId, avatarSize, caseInsensitive, excludeConnectAddons, opts }: {
            query: string;
            maxResults?: number;
            showAvatar?: boolean;
            fieldId?: string;
            projectId?: string[];
            issueTypeId?: string[];
            avatarSize?: "xsmall" | "xsmall@2x" | "xsmall@3x" | "small" | "small@2x" | "small@3x" | "medium" | "medium@2x" | "medium@3x" | "large" | "large@2x" | "large@3x" | "xlarge" | "xlarge@2x" | "xlarge@3x" | "xxlarge" | "xxlarge@2x" | "xxlarge@3x" | "xxxlarge" | "xxxlarge@2x" | "xxxlarge@3x";
            caseInsensitive?: boolean;
            excludeConnectAddons?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<FoundUsersAndGroups>>;
    };
    /**
     * This resource represents groups of users. Use it to get, create, find, and
     * delete groups as well as add and remove users from groups. (\[WARNING\] The
     * standard Atlassian group names are default names only and can be edited or
     * deleted. For example, an admin or Atlassian support could delete the default
     * group jira-software-users or rename it to jsw-users at any point. See
     * https://support.atlassian.com/user-management/docs/create-and-update-groups/
     * for details.)
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-groups
     */
    get groups(): {
        addUserToGroup: ({ groupname, groupId, updateUserToGroupBean, opts }: {
            groupname?: string;
            groupId?: string;
            updateUserToGroupBean: UpdateUserToGroupBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Group>>;
        bulkGetGroups: ({ startAt, maxResults, groupId, groupName, accessType, applicationKey, opts }?: {
            startAt?: number;
            maxResults?: number;
            groupId?: string[];
            groupName?: string[];
            accessType?: string;
            applicationKey?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanGroupDetails>>;
        createGroup: ({ addGroupBean, opts }: {
            addGroupBean: AddGroupBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Group>>;
        findGroups: ({ accountId, query, exclude, excludeId, maxResults, caseInsensitive, userName, opts }?: {
            accountId?: string;
            query?: string;
            exclude?: string[];
            excludeId?: string[];
            maxResults?: number;
            caseInsensitive?: boolean;
            userName?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<FoundGroups>>;
        getGroup: ({ groupname, groupId, expand, opts }?: {
            groupname?: string;
            groupId?: string;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Group>>;
        getUsersFromGroup: ({ groupname, groupId, includeInactiveUsers, startAt, maxResults, opts }?: {
            groupname?: string;
            groupId?: string;
            includeInactiveUsers?: boolean;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanUserDetails>>;
        removeGroup: ({ groupname, groupId, swapGroup, swapGroupId, opts }?: {
            groupname?: string;
            groupId?: string;
            swapGroup?: string;
            swapGroupId?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        removeUserFromGroup: ({ groupname, groupId, username, accountId, opts }: {
            groupname?: string;
            groupId?: string;
            username?: string;
            accountId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents issue attachments and the attachment settings for
     * Jira. Use it to get the metadata for an attachment, delete an attachment, and
     * view the metadata for the contents of an attachment. Also, use it to get the
     * attachment settings for Jira.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-attachments
     */
    get issueAttachments(): {
        addAttachment: ({ issueIdOrKey, multipartFiles, opts }: {
            issueIdOrKey: string;
            multipartFiles: MultipartFile[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Attachment[]>>;
        expandAttachmentForHumans: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<AttachmentArchiveMetadataReadable>>;
        expandAttachmentForMachines: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<AttachmentArchiveImpl>>;
        getAttachment: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<AttachmentMetadata>>;
        getAttachmentContent: ({ id, redirect, opts }: {
            id: string;
            redirect?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown[]>>;
        getAttachmentMeta: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<AttachmentSettings>>;
        getAttachmentThumbnail: ({ id, redirect, fallbackToDefault, width, height, opts }: {
            id: string;
            redirect?: boolean;
            fallbackToDefault?: boolean;
            width?: number;
            height?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown[]>>;
        removeAttachment: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents the issue bulk operations. Use it to move multiple
     * issues from one project to another project or edit fields of multiple issues in
     * one go.
     *
     *
     * For additional clarity, we have created a page with further examples and
     * answers to frequently asked questions related to these APIs. You can access it
     * here: [Bulk operation APIs: additional examples and
     * FAQ](https://developer.atlassian.com/cloud/jira/platform/bulk-operation-additional-examples-and-faqs/).
     *
     * ### Authentication ###
     *
     * Access to the issue bulk operations requires authentication. For information on
     * how to authenticate API requests, refer to the [Basic auth for REST APIs
     * documentation](https://developer.atlassian.com/cloud/jira/platform/basic-auth-for-rest-apis/).
     *
     * ### Rate limiting ###
     *
     * The bulk edit and move APIs are subject to the usual rate limiting
     * infrastructure in Jira. For more information, refer to [Rate
     * limiting](https://developer.atlassian.com/cloud/jira/platform/rate-limiting/).
     * Additionally, at any given time, only 5 concurrent requests can be sent across
     * all users.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-bulk-operations
     */
    get issueBulkOperations(): {
        getAvailableTransitions: ({ issueIdsOrKeys, endingBefore, startingAfter, opts }: {
            issueIdsOrKeys: string;
            endingBefore?: string;
            startingAfter?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<BulkTransitionGetAvailableTransitions>>;
        getBulkEditableFields: ({ issueIdsOrKeys, searchText, endingBefore, startingAfter, opts }: {
            issueIdsOrKeys: string;
            searchText?: string;
            endingBefore?: string;
            startingAfter?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<BulkEditGetFields>>;
        getBulkOperationProgress: ({ taskId, opts }: {
            taskId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<BulkOperationProgress>>;
        submitBulkDelete: ({ issueBulkDeletePayload, opts }: {
            issueBulkDeletePayload: IssueBulkDeletePayload;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SubmittedBulkOperation>>;
        submitBulkEdit: ({ issueBulkEditPayload, opts }: {
            issueBulkEditPayload: IssueBulkEditPayload;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SubmittedBulkOperation>>;
        submitBulkMove: ({ issueBulkMovePayload, opts }: {
            issueBulkMovePayload: IssueBulkMovePayload;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SubmittedBulkOperation>>;
        submitBulkTransition: ({ issueBulkTransitionPayload, opts }: {
            issueBulkTransitionPayload: IssueBulkTransitionPayload;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SubmittedBulkOperation>>;
        submitBulkUnwatch: ({ issueBulkWatchOrUnwatchPayload, opts }: {
            issueBulkWatchOrUnwatchPayload: IssueBulkWatchOrUnwatchPayload;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SubmittedBulkOperation>>;
        submitBulkWatch: ({ issueBulkWatchOrUnwatchPayload, opts }: {
            issueBulkWatchOrUnwatchPayload: IssueBulkWatchOrUnwatchPayload;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SubmittedBulkOperation>>;
    };
    /**
     * This resource represents [issue comment](#api-group-Issue-comments) properties,
     * which provides for storing custom data against an issue comment. Use is to get,
     * set, and delete issue comment properties as well as obtain the keys of all
     * properties on a comment. Comment properties are a type of [entity
     * property](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comment-properties
     */
    get issueCommentProperties(): {
        deleteCommentProperty: ({ commentId, propertyKey, opts }: {
            commentId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getCommentProperty: ({ commentId, propertyKey, opts }: {
            commentId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<EntityProperty>>;
        getCommentPropertyKeys: ({ commentId, opts }: {
            commentId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PropertyKeys>>;
        setCommentProperty: ({ commentId, propertyKey, requestBody, opts }: {
            commentId: string;
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
    };
    /**
     * This resource represents issue comments. Use it to:
     *
     *  *  get, create, update, and delete a comment from an issue.
     *  *  get all comments from issue.
     *  *  get a list of comments by comment ID.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-comments
     */
    get issueComments(): {
        addComment: ({ issueIdOrKey, expand, comment, opts }: {
            issueIdOrKey: string;
            expand?: string;
            comment: Comment;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Comment>>;
        deleteComment: ({ issueIdOrKey, id, opts }: {
            issueIdOrKey: string;
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getComment: ({ issueIdOrKey, id, expand, opts }: {
            issueIdOrKey: string;
            id: string;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Comment>>;
        getComments: ({ issueIdOrKey, startAt, maxResults, orderBy, expand, opts }: {
            issueIdOrKey: string;
            startAt?: number;
            maxResults?: number;
            orderBy?: "created" | "-created" | "+created";
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageOfComments>>;
        getCommentsByIds: ({ expand, issueCommentListRequestBean, opts }: {
            expand?: string;
            issueCommentListRequestBean: IssueCommentListRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanComment>>;
        updateComment: ({ issueIdOrKey, id, notifyUsers, overrideEditableFlag, expand, comment, opts }: {
            issueIdOrKey: string;
            id: string;
            notifyUsers?: boolean;
            overrideEditableFlag?: boolean;
            expand?: string;
            comment: Comment;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Comment>>;
    };
    /**
     * This resource represents the fields associated to project and issue type
     * contexts. Use it to:
     *
     *  *  assign custom field to projects and issue types.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-custom-field-associations
     */
    get issueCustomFieldAssociations(): {
        createAssociations: ({ fieldAssociationsRequest, opts }: {
            fieldAssociationsRequest: FieldAssociationsRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        removeAssociations: ({ fieldAssociationsRequest, opts }: {
            fieldAssociationsRequest: FieldAssociationsRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents configurations stored against a custom field context
     * by a [Forge app](https://developer.atlassian.com/platform/forge/).
     * Configurations are information used by the Forge app at runtime to determine
     * how to handle or process the data in a custom field in a given context. Use
     * this resource to set and read configurations.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-custom-field-configuration-apps-
     */
    get issueCustomFieldConfigurationApps(): {
        getCustomFieldConfiguration: ({ fieldIdOrKey, id, fieldContextId, issueId, projectKeyOrId, issueTypeId, startAt, maxResults, opts }: {
            fieldIdOrKey: string;
            id?: number[];
            fieldContextId?: number[];
            issueId?: number;
            projectKeyOrId?: string;
            issueTypeId?: string;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanContextualConfiguration>>;
        getCustomFieldsConfigurations: ({ id, fieldContextId, issueId, projectKeyOrId, issueTypeId, startAt, maxResults, configurationsListParameters, opts }: {
            id?: number[];
            fieldContextId?: number[];
            issueId?: number;
            projectKeyOrId?: string;
            issueTypeId?: string;
            startAt?: number;
            maxResults?: number;
            configurationsListParameters: ConfigurationsListParameters;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanBulkContextualConfiguration>>;
        updateCustomFieldConfiguration: ({ fieldIdOrKey, customFieldConfigurations, opts }: {
            fieldIdOrKey: string;
            customFieldConfigurations: CustomFieldConfigurations;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
    /**
     * This resource represents issue custom field contexts. Use it to:
     *
     *  *  get, create, update, and delete custom field contexts.
     *  *  get context to issue types and projects mappings.
     *  *  get custom field contexts for projects and issue types.
     *  *  assign custom field contexts to projects.
     *  *  remove custom field contexts from projects.
     *  *  add issue types to custom field contexts.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-custom-field-contexts
     */
    get issueCustomFieldContexts(): {
        addIssueTypesToContext: ({ fieldId, contextId, issueTypeIds, opts }: {
            fieldId: string;
            contextId: number;
            issueTypeIds: IssueTypeIds;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        assignProjectsToCustomFieldContext: ({ fieldId, contextId, projectIds, opts }: {
            fieldId: string;
            contextId: number;
            projectIds: ProjectIds;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createCustomFieldContext: ({ fieldId, createCustomFieldContext, opts }: {
            fieldId: string;
            createCustomFieldContext: CreateCustomFieldContext;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CreateCustomFieldContext>>;
        deleteCustomFieldContext: ({ fieldId, contextId, opts }: {
            fieldId: string;
            contextId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getContextsForField: ({ fieldId, isAnyIssueType, isGlobalContext, contextId, startAt, maxResults, opts }: {
            fieldId: string;
            isAnyIssueType?: boolean;
            isGlobalContext?: boolean;
            contextId?: number[];
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanCustomFieldContext>>;
        getCustomFieldContextsForProjectsAndIssueTypes: ({ fieldId, startAt, maxResults, projectIssueTypeMappings, opts }: {
            fieldId: string;
            startAt?: number;
            maxResults?: number;
            projectIssueTypeMappings: ProjectIssueTypeMappings;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanContextForProjectAndIssueType>>;
        getDefaultValues: ({ fieldId, contextId, startAt, maxResults, opts }: {
            fieldId: string;
            contextId?: number[];
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanCustomFieldContextDefaultValue>>;
        getIssueTypeMappingsForContexts: ({ fieldId, contextId, startAt, maxResults, opts }: {
            fieldId: string;
            contextId?: number[];
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueTypeToContextMapping>>;
        getProjectContextMapping: ({ fieldId, contextId, startAt, maxResults, opts }: {
            fieldId: string;
            contextId?: number[];
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanCustomFieldContextProjectMapping>>;
        removeCustomFieldContextFromProjects: ({ fieldId, contextId, projectIds, opts }: {
            fieldId: string;
            contextId: number;
            projectIds: ProjectIds;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        removeIssueTypesFromContext: ({ fieldId, contextId, issueTypeIds, opts }: {
            fieldId: string;
            contextId: number;
            issueTypeIds: IssueTypeIds;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setDefaultValues: ({ fieldId, customFieldContextDefaultValueUpdate, opts }: {
            fieldId: string;
            customFieldContextDefaultValueUpdate: CustomFieldContextDefaultValueUpdate;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateCustomFieldContext: ({ fieldId, contextId, customFieldContextUpdateDetails, opts }: {
            fieldId: string;
            contextId: number;
            customFieldContextUpdateDetails: CustomFieldContextUpdateDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents custom issue field select list options created by a
     * Connect app. See [Issue custom field
     * options](#api-group-Issue-custom-field-options) to manipulate options created
     * in Jira or using the REST API.
     *
     * A select list issue field is a type of [issue
     * field](https://developer.atlassian.com/cloud/jira/platform/modules/issue-field/)
     * that enables a user to select an option from a list. Use it to add, remove, and
     * update the options of a select list issue field.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-custom-field-options-apps-
     */
    get issueCustomFieldOptionsApps(): {
        createIssueFieldOption: ({ fieldKey, issueFieldOptionCreateBean, opts }: {
            fieldKey: string;
            issueFieldOptionCreateBean: IssueFieldOptionCreateBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueFieldOption>>;
        deleteIssueFieldOption: ({ fieldKey, optionId, opts }: {
            fieldKey: string;
            optionId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllIssueFieldOptions: ({ fieldKey, startAt, maxResults, opts }: {
            fieldKey: string;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueFieldOption>>;
        getIssueFieldOption: ({ fieldKey, optionId, opts }: {
            fieldKey: string;
            optionId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueFieldOption>>;
        getSelectableIssueFieldOptions: ({ fieldKey, startAt, maxResults, projectId, opts }: {
            fieldKey: string;
            startAt?: number;
            maxResults?: number;
            projectId?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueFieldOption>>;
        getVisibleIssueFieldOptions: ({ fieldKey, startAt, maxResults, projectId, opts }: {
            fieldKey: string;
            startAt?: number;
            maxResults?: number;
            projectId?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueFieldOption>>;
        replaceIssueFieldOption: ({ fieldKey, optionId, replaceWith, jql, overrideScreenSecurity, overrideEditableFlag, opts }: {
            fieldKey: string;
            optionId: number;
            replaceWith?: number;
            jql?: string;
            overrideScreenSecurity?: boolean;
            overrideEditableFlag?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateIssueFieldOption: ({ fieldKey, optionId, issueFieldOption, opts }: {
            fieldKey: string;
            optionId: number;
            issueFieldOption: IssueFieldOption;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueFieldOption>>;
    };
    /**
     * This resource represents custom issue field select list options created in Jira
     * or using the REST API. This resource supports the following field types:
     *
     *  *  Checkboxes.
     *  *  Radio Buttons.
     *  *  Select List (single choice).
     *  *  Select List (multiple choices).
     *  *  Select List (cascading).
     *
     * See [Issue custom field options
     * (apps)](#api-group-Issue-custom-field-options--apps-) to manipulate custom
     * issue field select list options created by a Connect app.
     *
     * Use it to retrieve, create, update, order, and delete custom field options.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-custom-field-options
     */
    get issueCustomFieldOptions(): {
        createCustomFieldOption: ({ fieldId, contextId, bulkCustomFieldOptionCreateRequest, opts }: {
            fieldId: string;
            contextId: number;
            bulkCustomFieldOptionCreateRequest: BulkCustomFieldOptionCreateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CustomFieldCreatedContextOptionsList>>;
        deleteCustomFieldOption: ({ fieldId, contextId, optionId, opts }: {
            fieldId: string;
            contextId: number;
            optionId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getCustomFieldOption: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CustomFieldOption>>;
        getOptionsForContext: ({ fieldId, contextId, optionId, onlyOptions, startAt, maxResults, opts }: {
            fieldId: string;
            contextId: number;
            optionId?: number;
            onlyOptions?: boolean;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanCustomFieldContextOption>>;
        reorderCustomFieldOptions: ({ fieldId, contextId, orderOfCustomFieldOptions, opts }: {
            fieldId: string;
            contextId: number;
            orderOfCustomFieldOptions: OrderOfCustomFieldOptions;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        replaceCustomFieldOption: ({ fieldId, optionId, contextId, replaceWith, jql, opts }: {
            fieldId: string;
            optionId: number;
            contextId: number;
            replaceWith?: number;
            jql?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateCustomFieldOption: ({ fieldId, contextId, bulkCustomFieldOptionUpdateRequest, opts }: {
            fieldId: string;
            contextId: number;
            bulkCustomFieldOptionUpdateRequest: BulkCustomFieldOptionUpdateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CustomFieldUpdatedContextOptionsList>>;
    };
    /**
     * This resource represents the values of custom fields added by [Forge
     * apps](https://developer.atlassian.com/platform/forge/). Use it to update the
     * value of a custom field on issues.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-custom-field-values-apps-
     */
    get issueCustomFieldValuesApps(): {
        updateCustomFieldValue: ({ fieldIdOrKey, generateChangelog, customFieldValueUpdateDetails, opts }: {
            fieldIdOrKey: string;
            generateChangelog?: boolean;
            customFieldValueUpdateDetails: CustomFieldValueUpdateDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateMultipleCustomFieldValues: ({ generateChangelog, multipleCustomFieldValuesUpdateDetails, opts }: {
            generateChangelog?: boolean;
            multipleCustomFieldValuesUpdateDetails: MultipleCustomFieldValuesUpdateDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents issue field configurations. Use it to get, set, and
     * delete field configurations and field configuration schemes.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-field-configurations
     */
    get issueFieldConfigurations(): {
        assignFieldConfigurationSchemeToProject: ({ fieldConfigurationSchemeProjectAssociation, opts }: {
            fieldConfigurationSchemeProjectAssociation: FieldConfigurationSchemeProjectAssociation;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createFieldConfiguration: ({ fieldConfigurationDetails, opts }: {
            fieldConfigurationDetails: FieldConfigurationDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<FieldConfiguration>>;
        createFieldConfigurationScheme: ({ updateFieldConfigurationSchemeDetails, opts }: {
            updateFieldConfigurationSchemeDetails: UpdateFieldConfigurationSchemeDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<FieldConfigurationScheme>>;
        deleteFieldConfiguration: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteFieldConfigurationScheme: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllFieldConfigurations: ({ startAt, maxResults, id, isDefault, query, opts }?: {
            startAt?: number;
            maxResults?: number;
            id?: number[];
            isDefault?: boolean;
            query?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanFieldConfigurationDetails>>;
        getAllFieldConfigurationSchemes: ({ startAt, maxResults, id, opts }?: {
            startAt?: number;
            maxResults?: number;
            id?: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanFieldConfigurationScheme>>;
        getFieldConfigurationItems: ({ id, startAt, maxResults, opts }: {
            id: number;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanFieldConfigurationItem>>;
        getFieldConfigurationSchemeMappings: ({ startAt, maxResults, fieldConfigurationSchemeId, opts }?: {
            startAt?: number;
            maxResults?: number;
            fieldConfigurationSchemeId?: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanFieldConfigurationIssueTypeItem>>;
        getFieldConfigurationSchemeProjectMapping: ({ startAt, maxResults, projectId, opts }: {
            startAt?: number;
            maxResults?: number;
            projectId: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanFieldConfigurationSchemeProjects>>;
        removeIssueTypesFromGlobalFieldConfigurationScheme: ({ id, issueTypeIdsToRemove, opts }: {
            id: number;
            issueTypeIdsToRemove: IssueTypeIdsToRemove;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setFieldConfigurationSchemeMapping: ({ id, associateFieldConfigurationsWithIssueTypesRequest, opts }: {
            id: number;
            associateFieldConfigurationsWithIssueTypesRequest: AssociateFieldConfigurationsWithIssueTypesRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateFieldConfiguration: ({ id, fieldConfigurationDetails, opts }: {
            id: number;
            fieldConfigurationDetails: FieldConfigurationDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateFieldConfigurationItems: ({ id, fieldConfigurationItemsDetails, opts }: {
            id: number;
            fieldConfigurationItemsDetails: FieldConfigurationItemsDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateFieldConfigurationScheme: ({ id, updateFieldConfigurationSchemeDetails, opts }: {
            id: number;
            updateFieldConfigurationSchemeDetails: UpdateFieldConfigurationSchemeDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents issue fields, both system and custom fields. Use it to
     * get fields, field configurations, and create custom fields.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-fields
     */
    get issueFields(): {
        createCustomField: ({ customFieldDefinitionJsonBean, opts }: {
            customFieldDefinitionJsonBean: CustomFieldDefinitionJsonBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<FieldDetails>>;
        deleteCustomField: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getContextsForFieldDeprecated: ({ fieldId, startAt, maxResults, opts }: {
            fieldId: string;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanContext>>;
        getFields: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<FieldDetails[]>>;
        getFieldsPaginated: ({ startAt, maxResults, type, id, query, orderBy, expand, projectIds, opts }?: {
            startAt?: number;
            maxResults?: number;
            type?: ("custom" | "system")[];
            id?: string[];
            query?: string;
            orderBy?: "contextsCount" | "-contextsCount" | "+contextsCount" | "lastUsed" | "-lastUsed" | "+lastUsed" | "name" | "-name" | "+name" | "screensCount" | "-screensCount" | "+screensCount" | "projectsCount" | "-projectsCount" | "+projectsCount";
            expand?: string;
            projectIds?: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanField>>;
        getTrashedFieldsPaginated: ({ startAt, maxResults, id, query, expand, orderBy, opts }?: {
            startAt?: number;
            maxResults?: number;
            id?: string[];
            query?: string;
            expand?: "name" | "-name" | "+name" | "trashDate" | "-trashDate" | "+trashDate" | "plannedDeletionDate" | "-plannedDeletionDate" | "+plannedDeletionDate" | "projectsCount" | "-projectsCount" | "+projectsCount";
            orderBy?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanField>>;
        restoreCustomField: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        trashCustomField: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        updateCustomField: ({ fieldId, updateCustomFieldDetails, opts }: {
            fieldId: string;
            updateCustomFieldDetails: UpdateCustomFieldDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents links between issues. Use it to get, create, and
     * delete links between issues.
     *
     * To use it, the site must have [issue
     * linking](https://confluence.atlassian.com/x/yoXKM) enabled.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-links
     */
    get issueLinks(): {
        deleteIssueLink: ({ linkId, opts }: {
            linkId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getIssueLink: ({ linkId, opts }: {
            linkId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueLink>>;
        linkIssues: ({ linkIssueRequestJsonBean, opts }: {
            linkIssueRequestJsonBean: LinkIssueRequestJsonBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
    /**
     * This resource represents [issue link](#api-group-Issue-links) types. Use it to
     * get, create, update, and delete link issue types as well as get lists of all
     * link issue types.
     *
     * To use it, the site must have [issue
     * linking](https://confluence.atlassian.com/x/yoXKM) enabled.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-link-types
     */
    get issueLinkTypes(): {
        createIssueLinkType: ({ issueLinkType, opts }: {
            issueLinkType: IssueLinkType;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueLinkType>>;
        deleteIssueLinkType: ({ issueLinkTypeId, opts }: {
            issueLinkTypeId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getIssueLinkType: ({ issueLinkTypeId, opts }: {
            issueLinkTypeId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueLinkType>>;
        getIssueLinkTypes: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<IssueLinkTypes>>;
        updateIssueLinkType: ({ issueLinkTypeId, issueLinkType, opts }: {
            issueLinkTypeId: string;
            issueLinkType: IssueLinkType;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueLinkType>>;
    };
    /**
     * This resource represents issue navigator settings. Use it to get and set issue
     * navigator default columns.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-navigator-settings
     */
    get issueNavigatorSettings(): {
        getIssueNavigatorDefaultColumns: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<ColumnItem[]>>;
        setIssueNavigatorDefaultColumns: ({ columnRequestBody, opts }: {
            columnRequestBody: ColumnRequestBody;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents notification schemes, lists of events and the
     * recipients who will receive notifications for those events. Use it to get
     * details of a notification scheme and a list of notification schemes.
     *
     * ### About notification schemes ###
     *
     * A notification scheme is a list of events and recipients who will receive
     * notifications for those events. The list is contained within the
     * `notificationSchemeEvents` object and contains pairs of `events` and
     * `notifications`:
     *
     *  *  `event` Identifies the type of event. The events can be [Jira system
     * events](https://support.atlassian.com/jira-cloud-administration/docs/configure-notification-schemes/)
     * (see the *Events* section) or [custom
     * events](https://support.atlassian.com/jira-cloud-administration/docs/add-a-custom-event/).
     *  *  `notifications` Identifies the
     * [recipients](https://confluence.atlassian.com/x/8YdKLg#Creatinganotificationscheme-recipientsRecipients)
     * of notifications for each event. Recipients can be any of the following types:
     *
     *      *  `CurrentAssignee`
     *      *  `Reporter`
     *      *  `CurrentUser`
     *      *  `ProjectLead`
     *      *  `ComponentLead`
     *      *  `User` (the `parameter` is the user key)
     *      *  `Group` (the `parameter` is the group name)
     *      *  `ProjectRole` (the `parameter` is the project role ID)
     *      *  `EmailAddress` *(deprecated)*
     *      *  `AllWatchers`
     *      *  `UserCustomField` (the `parameter` is the ID of the custom field)
     *      *  `GroupCustomField`(the `parameter` is the ID of the custom field)
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-notification-schemes
     */
    get issueNotificationSchemes(): {
        addNotifications: ({ id, addNotificationsDetails, opts }: {
            id: string;
            addNotificationsDetails: AddNotificationsDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createNotificationScheme: ({ createNotificationSchemeDetails, opts }: {
            createNotificationSchemeDetails: CreateNotificationSchemeDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<NotificationSchemeId>>;
        deleteNotificationScheme: ({ notificationSchemeId, opts }: {
            notificationSchemeId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getNotificationScheme: ({ id, expand, opts }: {
            id: number;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<NotificationScheme>>;
        getNotificationSchemes: ({ startAt, maxResults, id, projectId, onlyDefault, expand, opts }?: {
            startAt?: string;
            maxResults?: string;
            id?: string[];
            projectId?: string[];
            onlyDefault?: boolean;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanNotificationScheme>>;
        getNotificationSchemeToProjectMappings: ({ startAt, maxResults, notificationSchemeId, projectId, opts }?: {
            startAt?: string;
            maxResults?: string;
            notificationSchemeId?: string[];
            projectId?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanNotificationSchemeAndProjectMappingJsonBean>>;
        removeNotificationFromNotificationScheme: ({ notificationSchemeId, notificationId, opts }: {
            notificationSchemeId: string;
            notificationId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateNotificationScheme: ({ id, updateNotificationSchemeDetails, opts }: {
            id: string;
            updateNotificationSchemeDetails: UpdateNotificationSchemeDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents issue priorities. Use it to get, create and update
     * issue priorities and details for individual issue priorities.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-priorities
     */
    get issuePriorities(): {
        createPriority: ({ createPriorityDetails, opts }: {
            createPriorityDetails: CreatePriorityDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PriorityId>>;
        deletePriority: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getPriorities: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<Priority[]>>;
        getPriority: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Priority>>;
        movePriorities: ({ reorderIssuePriorities, opts }: {
            reorderIssuePriorities: ReorderIssuePriorities;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        searchPriorities: ({ startAt, maxResults, id, projectId, priorityName, onlyDefault, expand, opts }?: {
            startAt?: string;
            maxResults?: string;
            id?: string[];
            projectId?: string[];
            priorityName?: string;
            onlyDefault?: boolean;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanPriority>>;
        setDefaultPriority: ({ setDefaultPriorityRequest, opts }: {
            setDefaultPriorityRequest: SetDefaultPriorityRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updatePriority: ({ id, updatePriorityDetails, opts }: {
            id: string;
            updatePriorityDetails: UpdatePriorityDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents [issue](#api-group-Issues) properties, which provides
     * for storing custom data against an issue. Use it to get, set, and delete issue
     * properties as well as obtain details of all properties on an issue. Operations
     * to bulk update and delete issue properties are also provided. Issue properties
     * are a type of [entity
     * property](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-properties
     */
    get issueProperties(): {
        bulkDeleteIssueProperty: ({ propertyKey, issueFilterForBulkPropertyDelete, opts }: {
            propertyKey: string;
            issueFilterForBulkPropertyDelete: IssueFilterForBulkPropertyDelete;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        bulkSetIssuePropertiesByIssue: ({ multiIssueEntityProperties, opts }: {
            multiIssueEntityProperties: MultiIssueEntityProperties;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        bulkSetIssueProperty: ({ propertyKey, bulkIssuePropertyUpdateRequest, opts }: {
            propertyKey: string;
            bulkIssuePropertyUpdateRequest: BulkIssuePropertyUpdateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        bulkSetIssuesPropertiesList: ({ issueEntityProperties, opts }: {
            issueEntityProperties: IssueEntityProperties;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteIssueProperty: ({ issueIdOrKey, propertyKey, opts }: {
            issueIdOrKey: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getIssueProperty: ({ issueIdOrKey, propertyKey, opts }: {
            issueIdOrKey: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<EntityProperty>>;
        getIssuePropertyKeys: ({ issueIdOrKey, opts }: {
            issueIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PropertyKeys>>;
        setIssueProperty: ({ issueIdOrKey, propertyKey, requestBody, opts }: {
            issueIdOrKey: string;
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
    };
    /**
     * This resource represents Issue Redaction. Provides APIs to redact issue data.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-redaction
     */
    get issueRedaction(): {
        getRedactionStatus: ({ jobId, opts }: {
            jobId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<RedactionJobStatusResponse>>;
        redact: ({ bulkRedactionRequest, opts }: {
            bulkRedactionRequest: BulkRedactionRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<string>>;
    };
    /**
     * This resource represents remote issue links, a way of linking Jira to
     * information in other systems. Use it to get, create, update, and delete remote
     * issue links either by ID or global ID. The global ID provides a way of
     * accessing remote issue links using information about the item's remote system
     * host and remote system identifier.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-remote-links
     */
    get issueRemoteLinks(): {
        createOrUpdateRemoteIssueLink: ({ issueIdOrKey, remoteIssueLinkRequest, opts }: {
            issueIdOrKey: string;
            remoteIssueLinkRequest: RemoteIssueLinkRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            remoteIssueLinkIdentifies: RemoteIssueLinkIdentifies;
        }>>;
        deleteRemoteIssueLinkByGlobalId: ({ issueIdOrKey, globalId, opts }: {
            issueIdOrKey: string;
            globalId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteRemoteIssueLinkById: ({ issueIdOrKey, linkId, opts }: {
            issueIdOrKey: string;
            linkId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getRemoteIssueLinkById: ({ issueIdOrKey, linkId, opts }: {
            issueIdOrKey: string;
            linkId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<RemoteIssueLink>>;
        getRemoteIssueLinks: ({ issueIdOrKey, globalId, opts }: {
            issueIdOrKey: string;
            globalId?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<RemoteIssueLink>>;
        updateRemoteIssueLink: ({ issueIdOrKey, linkId, remoteIssueLinkRequest, opts }: {
            issueIdOrKey: string;
            linkId: string;
            remoteIssueLinkRequest: RemoteIssueLinkRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents issue resolution values. Use it to obtain a list of
     * all issue resolution values and the details of individual resolution values.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-resolutions
     */
    get issueResolutions(): {
        createResolution: ({ createResolutionDetails, opts }: {
            createResolutionDetails: CreateResolutionDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ResolutionId>>;
        deleteResolution: ({ id, replaceWith, opts }: {
            id: string;
            replaceWith: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getResolution: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Resolution>>;
        getResolutions: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<Resolution[]>>;
        moveResolutions: ({ reorderIssueResolutionsRequest, opts }: {
            reorderIssueResolutionsRequest: ReorderIssueResolutionsRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        searchResolutions: ({ startAt, maxResults, id, onlyDefault, opts }?: {
            startAt?: string;
            maxResults?: string;
            id?: string[];
            onlyDefault?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanResolutionJsonBean>>;
        setDefaultResolution: ({ setDefaultResolutionRequest, opts }: {
            setDefaultResolutionRequest: SetDefaultResolutionRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateResolution: ({ id, updateResolutionDetails, opts }: {
            id: string;
            updateResolutionDetails: UpdateResolutionDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents various ways to search for issues. Use it to search
     * for issues with a JQL query and find issues to populate an issue picker.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search
     */
    get issueSearch(): {
        countIssues: ({ jqlCountRequestBean, opts }: {
            jqlCountRequestBean: JqlCountRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<JqlCountResultsBean>>;
        getIssuePickerResource: ({ query, currentJql, currentIssueKey, currentProjectId, showSubTasks, showSubTaskParent, opts }?: {
            query?: string;
            currentJql?: string;
            currentIssueKey?: string;
            currentProjectId?: string;
            showSubTasks?: boolean;
            showSubTaskParent?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssuePickerSuggestions>>;
        matchIssues: ({ issuesAndJqlQueries, opts }: {
            issuesAndJqlQueries: IssuesAndJqlQueries;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueMatches>>;
        searchAndReconsileIssuesUsingJql: ({ jql, nextPageToken, maxResults, fields, expand, properties, fieldsByKeys, failFast, reconcileIssues, opts }: {
            jql: string;
            nextPageToken?: string;
            maxResults?: number;
            fields?: IssueFieldKeys;
            expand?: string;
            properties?: string[];
            fieldsByKeys?: boolean;
            failFast?: boolean;
            reconcileIssues?: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SearchAndReconcileResults>>;
        searchAndReconsileIssuesUsingJqlPost: ({ expand, fields, fieldsByKeys, jql, maxResults, nextPageToken, properties, reconcileIssues, opts }: SearchAndReconcileRequestBean & WithRequestOpts<TClient>) => Promise<JiraResult<SearchAndReconcileResults>>;
        searchForIssuesUsingJql: ({ jql, startAt, maxResults, validateQuery, fields, expand, properties, fieldsByKeys, failFast, opts }?: {
            jql?: string;
            startAt?: number;
            maxResults?: number;
            validateQuery?: "strict" | "warn" | "none" | "true" | "false";
            fields?: IssueFieldKeys;
            expand?: string;
            properties?: string[];
            fieldsByKeys?: boolean;
            failFast?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SearchResults>>;
        searchForIssuesUsingJqlPost: ({ searchRequestBean, opts }: {
            searchRequestBean: SearchRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SearchResults>>;
    };
    /**
     * This resource represents issue security levels. Use it to obtain the details of
     * any issue security level. For more information about issue security levels, see
     * [Configuring issue-level security](https://confluence.atlassian.com/x/J4lKLg).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-security-level
     */
    get issueSecurityLevel(): {
        getIssueSecurityLevel: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SecurityLevel>>;
        getIssueSecurityLevelMembers: ({ issueSecuritySchemeId, startAt, maxResults, issueSecurityLevelId, expand, opts }: {
            issueSecuritySchemeId: number;
            startAt?: number;
            maxResults?: number;
            issueSecurityLevelId?: string[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueSecurityLevelMember>>;
    };
    /**
     * This resource represents issue security schemes. Use it to get an issue
     * security scheme or a list of issue security schemes.
     *
     * Issue security schemes control which users or groups of users can view an
     * issue. When an issue security scheme is associated with a project, its security
     * levels can be applied to issues in that project. Sub-tasks also inherit the
     * security level of their parent issue.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-security-schemes
     */
    get issueSecuritySchemes(): {
        addSecurityLevel: ({ schemeId, addSecuritySchemeLevelsRequestBean, opts }: {
            schemeId: string;
            addSecuritySchemeLevelsRequestBean: AddSecuritySchemeLevelsRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        addSecurityLevelMembers: ({ schemeId, levelId, securitySchemeMembersRequest, opts }: {
            schemeId: string;
            levelId: string;
            securitySchemeMembersRequest: SecuritySchemeMembersRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        associateSchemesToProjects: ({ associateSecuritySchemeWithProjectDetails, opts }: {
            associateSecuritySchemeWithProjectDetails: AssociateSecuritySchemeWithProjectDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createIssueSecurityScheme: ({ createIssueSecuritySchemeDetails, opts }: {
            createIssueSecuritySchemeDetails: CreateIssueSecuritySchemeDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SecuritySchemeId>>;
        deleteSecurityScheme: ({ schemeId, opts }: {
            schemeId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getIssueSecurityScheme: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SecurityScheme>>;
        getIssueSecuritySchemes: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<SecuritySchemes>>;
        getSecurityLevelMembers: ({ startAt, maxResults, id, schemeId, levelId, expand, opts }?: {
            startAt?: string;
            maxResults?: string;
            id?: string[];
            schemeId?: string[];
            levelId?: string[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanSecurityLevelMember>>;
        getSecurityLevels: ({ startAt, maxResults, id, schemeId, onlyDefault, opts }?: {
            startAt?: string;
            maxResults?: string;
            id?: string[];
            schemeId?: string[];
            onlyDefault?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanSecurityLevel>>;
        removeLevel: ({ schemeId, levelId, replaceWith, opts }: {
            schemeId: string;
            levelId: string;
            replaceWith?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        removeMemberFromSecurityLevel: ({ schemeId, levelId, memberId, opts }: {
            schemeId: string;
            levelId: string;
            memberId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        searchProjectsUsingSecuritySchemes: ({ startAt, maxResults, issueSecuritySchemeId, projectId, opts }?: {
            startAt?: string;
            maxResults?: string;
            issueSecuritySchemeId?: string[];
            projectId?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueSecuritySchemeToProjectMapping>>;
        searchSecuritySchemes: ({ startAt, maxResults, id, projectId, opts }?: {
            startAt?: string;
            maxResults?: string;
            id?: string[];
            projectId?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanSecuritySchemeWithProjects>>;
        setDefaultLevels: ({ setDefaultLevelsRequest, opts }: {
            setDefaultLevelsRequest: SetDefaultLevelsRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateIssueSecurityScheme: ({ id, updateIssueSecuritySchemeRequestBean, opts }: {
            id: string;
            updateIssueSecuritySchemeRequestBean: UpdateIssueSecuritySchemeRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateSecurityLevel: ({ schemeId, levelId, updateIssueSecurityLevelDetails, opts }: {
            schemeId: string;
            levelId: string;
            updateIssueSecurityLevelDetails: UpdateIssueSecurityLevelDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents Jira issues. Use it to:
     *
     *  *  create or edit issues, individually or in bulk.
     *  *  retrieve metadata about the options for creating or editing issues.
     *  *  delete an issue.
     *  *  assign a user to an issue.
     *  *  get issue changelogs.
     *  *  send notifications about an issue.
     *  *  get details of the transitions available for an issue.
     *  *  transition an issue.
     *  *  Archive issues.
     *  *  Unarchive issues.
     *  *  Export archived issues.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issues
     */
    get issues(): {
        archiveIssues: ({ issueArchivalSyncRequest, opts }: {
            issueArchivalSyncRequest: IssueArchivalSyncRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueArchivalSyncResponse>>;
        archiveIssuesAsync: ({ archiveIssueAsyncRequest, opts }: {
            archiveIssueAsyncRequest: ArchiveIssueAsyncRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<string>>;
        assignIssue: ({ issueIdOrKey, user, opts }: {
            issueIdOrKey: string;
            user: User;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        bulkFetchIssues: ({ bulkFetchIssueRequestBean, opts }: {
            bulkFetchIssueRequestBean: BulkFetchIssueRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<BulkIssueResults>>;
        createIssue: ({ updateHistory, issueCreateDetails, opts }: {
            updateHistory?: boolean;
            issueCreateDetails: IssueUpdateDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CreatedIssue>>;
        createIssues: ({ issuesUpdateBean, opts }: {
            issuesUpdateBean: IssuesUpdateBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CreatedIssues>>;
        deleteIssue: ({ issueIdOrKey, deleteSubtasks, opts }: {
            issueIdOrKey: string;
            deleteSubtasks?: "true" | "false";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        doTransition: ({ issueIdOrKey, issueUpdateDetails, opts }: {
            issueIdOrKey: string;
            issueUpdateDetails: IssueUpdateDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        editIssue: ({ issueIdOrKey, notifyUsers, overrideScreenSecurity, overrideEditableFlag, returnIssue, expand, issueUpdateDetails, opts }: {
            issueIdOrKey: string;
            notifyUsers?: boolean;
            overrideScreenSecurity?: boolean;
            overrideEditableFlag?: boolean;
            returnIssue?: boolean;
            expand?: string;
            issueUpdateDetails: IssueUpdateDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueBean | undefined>>;
        exportArchivedIssues: ({ archivedIssuesFilterRequest, opts }: {
            archivedIssuesFilterRequest: ArchivedIssuesFilterRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ExportArchivedIssuesTaskProgressResponse>>;
        getBulkChangelogs: ({ issueIdsOrKeys, fieldIds, maxResults, nextPageToken, opts }: BulkChangelogRequestBean & WithRequestOpts<TClient>) => Promise<JiraResult<BulkChangelogResponseBean>>;
        getChangeLogs: ({ issueIdOrKey, startAt, maxResults, opts }: {
            issueIdOrKey: string;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanChangelog>>;
        getChangeLogsByIds: ({ issueIdOrKey, issueChangelogIds, opts }: {
            issueIdOrKey: string;
            issueChangelogIds: IssueChangelogIds;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageOfChangelogs>>;
        getCreateIssueMeta: ({ projectIds, projectKeys, issuetypeIds, issuetypeNames, expand, opts }: {
            projectIds?: string[];
            projectKeys?: string[];
            issuetypeIds?: string[];
            issuetypeNames?: string[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueCreateMetadata>>;
        getCreateIssueMetaIssueTypeId: ({ projectIdOrKey, issueTypeId, startAt, maxResults, opts }: {
            projectIdOrKey: string;
            issueTypeId: string;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageOfCreateMetaIssueTypeWithField>>;
        getCreateIssueMetaIssueTypes: ({ projectIdOrKey, startAt, maxResults, opts }: {
            projectIdOrKey: string;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageOfCreateMetaIssueTypes>>;
        getEditIssueMeta: ({ issueIdOrKey, overrideScreenSecurity, overrideEditableFlag, opts }: {
            issueIdOrKey: string;
            overrideScreenSecurity?: boolean;
            overrideEditableFlag?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueUpdateMetadata>>;
        getEvents: ({ opts }: WithRequestOpts<TClient>) => Promise<JiraResult<IssueEvent[]>>;
        getIssue: ({ issueIdOrKey, fields, fieldsByKeys, expand, properties, updateHistory, failFast, opts }: {
            issueIdOrKey: string;
            fields?: IssueFieldKeys;
            fieldsByKeys?: boolean;
            expand?: string;
            properties?: string[];
            updateHistory?: boolean;
            failFast?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueBean>>;
        getIssueLimitReport: ({ isReturningKeys, opts }: {
            isReturningKeys?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueLimitReportResponseBean>>;
        getTransitions: ({ issueIdOrKey, expand, transitionId, skipRemoteOnlyCondition, includeUnavailableTransitions, sortByOpsBarAndStatus, opts }: {
            issueIdOrKey: string;
            expand?: string;
            transitionId?: string;
            skipRemoteOnlyCondition?: boolean;
            includeUnavailableTransitions?: boolean;
            sortByOpsBarAndStatus?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Transitions>>;
        notify: ({ issueIdOrKey, notification, opts }: {
            issueIdOrKey: string;
            notification: Notification;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        unarchiveIssues: ({ issueArchivalSyncRequest, opts }: {
            issueArchivalSyncRequest: IssueArchivalSyncRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueArchivalSyncResponse>>;
    };
    /**
     * This resource represents [issue type](#api-group-Issue-types) properties, which
     * provides for storing custom data against an issue type. Use it to get, create,
     * and delete issue type properties as well as obtain the keys of all properties
     * on a issues type. Issue type properties are a type of [entity
     * property](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-type-properties
     */
    get issueTypeProperties(): {
        deleteIssueTypeProperty: ({ issueTypeId, propertyKey, opts }: {
            issueTypeId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getIssueTypeProperty: ({ issueTypeId, propertyKey, opts }: {
            issueTypeId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<EntityProperty>>;
        getIssueTypePropertyKeys: ({ issueTypeId, opts }: {
            issueTypeId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PropertyKeys>>;
        setIssueTypeProperty: ({ issueTypeId, propertyKey, requestBody, opts }: {
            issueTypeId: string;
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
    };
    /**
     * This resource represents issue type schemes in classic projects. Use it to:
     *
     *  *  get issue type schemes and a list of the projects that use them.
     *  *  associate issue type schemes with projects.
     *  *  add issue types to issue type schemes.
     *  *  delete issue types from issue type schemes.
     *  *  create, update, and delete issue type schemes.
     *  *  change the order of issue types in issue type schemes.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-type-schemes
     */
    get issueTypeSchemes(): {
        addIssueTypesToIssueTypeScheme: ({ issueTypeSchemeId, issueTypeIds, opts }: {
            issueTypeSchemeId: number;
            issueTypeIds: IssueTypeIds;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        assignIssueTypeSchemeToProject: ({ issueTypeSchemeProjectAssociation, opts }: {
            issueTypeSchemeProjectAssociation: IssueTypeSchemeProjectAssociation;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createIssueTypeScheme: ({ issueTypeSchemeDetails, opts }: {
            issueTypeSchemeDetails: IssueTypeSchemeDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeSchemeId>>;
        deleteIssueTypeScheme: ({ issueTypeSchemeId, opts }: {
            issueTypeSchemeId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllIssueTypeSchemes: ({ startAt, maxResults, id, orderBy, expand, queryString, opts }?: {
            startAt?: number;
            maxResults?: number;
            id?: number[];
            orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id";
            expand?: string;
            queryString?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueTypeScheme>>;
        getIssueTypeSchemeForProjects: ({ startAt, maxResults, projectId, opts }: {
            startAt?: number;
            maxResults?: number;
            projectId: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueTypeSchemeProjects>>;
        getIssueTypeSchemesMapping: ({ startAt, maxResults, issueTypeSchemeId, opts }?: {
            startAt?: number;
            maxResults?: number;
            issueTypeSchemeId?: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueTypeSchemeMapping>>;
        removeIssueTypeFromIssueTypeScheme: ({ issueTypeSchemeId, issueTypeId, opts }: {
            issueTypeSchemeId: number;
            issueTypeId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        reorderIssueTypesInIssueTypeScheme: ({ issueTypeSchemeId, orderOfIssueTypes, opts }: {
            issueTypeSchemeId: number;
            orderOfIssueTypes: OrderOfIssueTypes;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateIssueTypeScheme: ({ issueTypeSchemeId, issueTypeSchemeUpdateDetails, opts }: {
            issueTypeSchemeId: number;
            issueTypeSchemeUpdateDetails: IssueTypeSchemeUpdateDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents issue type screen schemes. Use it to:
     *
     *  *  get issue type screen schemes and a list of the projects that use them.
     *  *  create issue type screen schemes.
     *  *  update issue type screen schemes.
     *  *  delete issue type screen schemes.
     *  *  associate issue type screen schemes with projects.
     *  *  append issue type to screen scheme mappings to issue type screen schemes.
     *  *  remove issue type to screen scheme mappings from issue type screen schemes.
     *  *  update default screen scheme of issue type screen scheme.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-type-screen-schemes
     */
    get issueTypeScreenSchemes(): {
        appendMappingsForIssueTypeScreenScheme: ({ issueTypeScreenSchemeId, issueTypeScreenSchemeMappingDetails, opts }: {
            issueTypeScreenSchemeId: string;
            issueTypeScreenSchemeMappingDetails: IssueTypeScreenSchemeMappingDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        assignIssueTypeScreenSchemeToProject: ({ issueTypeScreenSchemeProjectAssociation, opts }: {
            issueTypeScreenSchemeProjectAssociation: IssueTypeScreenSchemeProjectAssociation;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createIssueTypeScreenScheme: ({ issueTypeScreenSchemeDetails, opts }: {
            issueTypeScreenSchemeDetails: IssueTypeScreenSchemeDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeScreenSchemeId>>;
        deleteIssueTypeScreenScheme: ({ issueTypeScreenSchemeId, opts }: {
            issueTypeScreenSchemeId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getIssueTypeScreenSchemeMappings: ({ startAt, maxResults, issueTypeScreenSchemeId, opts }?: {
            startAt?: number;
            maxResults?: number;
            issueTypeScreenSchemeId?: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueTypeScreenSchemeItem>>;
        getIssueTypeScreenSchemeProjectAssociations: ({ startAt, maxResults, projectId, opts }: {
            startAt?: number;
            maxResults?: number;
            projectId: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueTypeScreenSchemesProjects>>;
        getIssueTypeScreenSchemes: ({ startAt, maxResults, id, queryString, orderBy, expand, opts }?: {
            startAt?: number;
            maxResults?: number;
            id?: number[];
            queryString?: string;
            orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id";
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanIssueTypeScreenScheme>>;
        getProjectsForIssueTypeScreenScheme: ({ issueTypeScreenSchemeId, startAt, maxResults, query, opts }: {
            issueTypeScreenSchemeId: number;
            startAt?: number;
            maxResults?: number;
            query?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanProjectDetails>>;
        removeMappingsFromIssueTypeScreenScheme: ({ issueTypeScreenSchemeId, issueTypeIds, opts }: {
            issueTypeScreenSchemeId: string;
            issueTypeIds: IssueTypeIds;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateDefaultScreenScheme: ({ issueTypeScreenSchemeId, updateDefaultScreenScheme, opts }: {
            issueTypeScreenSchemeId: string;
            updateDefaultScreenScheme: UpdateDefaultScreenScheme;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateIssueTypeScreenScheme: ({ issueTypeScreenSchemeId, issueTypeScreenSchemeUpdateDetails, opts }: {
            issueTypeScreenSchemeId: string;
            issueTypeScreenSchemeUpdateDetails: IssueTypeScreenSchemeUpdateDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents issues types. Use it to:
     *
     *  *  get, create, update, and delete issue types.
     *  *  get all issue types for a user.
     *  *  get alternative issue types.
     *  *  set an avatar for an issue type.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-types
     */
    get issueTypes(): {
        createIssueType: ({ issueTypeCreateBean, opts }: {
            issueTypeCreateBean: IssueTypeCreateBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeDetails>>;
        createIssueTypeAvatar: ({ id, x, y, size, mediaType, requestBody, opts }: {
            id: string;
            x?: number;
            y?: number;
            size: number;
            mediaType: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Avatar>>;
        deleteIssueType: ({ id, alternativeIssueTypeId, opts }: {
            id: string;
            alternativeIssueTypeId?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAlternativeIssueTypes: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeDetails[]>>;
        getIssueAllTypes: ({ opts }: WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeDetails[]>>;
        getIssueType: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeDetails>>;
        getIssueTypesForProject: ({ projectId, level, opts }: {
            projectId: number;
            level?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeDetails[]>>;
        updateIssueType: ({ id, issueTypeUpdateBean, opts }: {
            id: string;
            issueTypeUpdateBean: IssueTypeUpdateBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeDetails>>;
    };
    /**
     * This resource represents votes cast by users on an issue. Use it to get details
     * of votes on an issue as well as cast and withdrawal votes.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-votes
     */
    get issueVotes(): {
        addVote: ({ issueIdOrKey, opts }: {
            issueIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getVotes: ({ issueIdOrKey, opts }: {
            issueIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Votes>>;
        removeVote: ({ issueIdOrKey, opts }: {
            issueIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents users watching an issue. Use it to get details of
     * users watching an issue as well as start and stop a user watching an issue.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-watchers
     */
    get issueWatchers(): {
        addWatcher: ({ issueIdOrKey, requestBody, opts }: {
            issueIdOrKey: string;
            requestBody: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getIssueWatchers: ({ issueIdOrKey, opts }: {
            issueIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Watchers>>;
        getIsWatchingIssueBulk: ({ issueList, opts }: {
            issueList: IssueList;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<BulkIssueIsWatching>>;
        removeWatcher: ({ issueIdOrKey, username, accountId, opts }: {
            issueIdOrKey: string;
            username?: string;
            accountId?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents [issue worklog](#api-group-Issue-worklogs) properties,
     * which provides for storing custom data against an issue worklog. Use it to get,
     * create, and delete issue worklog properties as well as obtain the keys of all
     * properties on a issue worklog. Issue worklog properties are a type of [entity
     * property](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-worklog-properties
     */
    get issueWorklogProperties(): {
        deleteWorklogProperty: ({ issueIdOrKey, worklogId, propertyKey, opts }: {
            issueIdOrKey: string;
            worklogId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getWorklogProperty: ({ issueIdOrKey, worklogId, propertyKey, opts }: {
            issueIdOrKey: string;
            worklogId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<EntityProperty>>;
        getWorklogPropertyKeys: ({ issueIdOrKey, worklogId, opts }: {
            issueIdOrKey: string;
            worklogId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PropertyKeys>>;
        setWorklogProperty: ({ issueIdOrKey, worklogId, propertyKey, requestBody, opts }: {
            issueIdOrKey: string;
            worklogId: string;
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
    };
    /**
     * This resource represents issue worklogs. Use it to:
     *
     *  *  get, create, update, and delete worklogs.
     *  *  obtain lists of updated or deleted worklogs.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-worklogs
     */
    get issueWorklogs(): {
        addWorklog: ({ issueIdOrKey, notifyUsers, adjustEstimate, newEstimate, reduceBy, expand, overrideEditableFlag, worklog, opts }: {
            issueIdOrKey: string;
            notifyUsers?: boolean;
            adjustEstimate?: "new" | "leave" | "manual" | "auto";
            newEstimate?: string;
            reduceBy?: string;
            expand?: string;
            overrideEditableFlag?: boolean;
            worklog: Worklog;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Worklog>>;
        bulkDeleteWorklogs: ({ issueIdOrKey, adjustEstimate, overrideEditableFlag, worklogIdsRequestBean, opts }: {
            issueIdOrKey: string;
            adjustEstimate?: "leave" | "auto";
            overrideEditableFlag?: boolean;
            worklogIdsRequestBean: WorklogIdsRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        bulkMoveWorklogs: ({ issueIdOrKey, adjustEstimate, overrideEditableFlag, worklogsMoveRequestBean, opts }: {
            issueIdOrKey: string;
            adjustEstimate?: "leave" | "auto";
            overrideEditableFlag?: boolean;
            worklogsMoveRequestBean: WorklogsMoveRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteWorklog: ({ issueIdOrKey, id, notifyUsers, adjustEstimate, newEstimate, increaseBy, overrideEditableFlag, opts }: {
            issueIdOrKey: string;
            id: string;
            notifyUsers?: boolean;
            adjustEstimate?: "new" | "leave" | "manual" | "auto";
            newEstimate?: string;
            increaseBy?: string;
            overrideEditableFlag?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getIdsOfWorklogsDeletedSince: ({ since, opts }?: {
            since?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ChangedWorklogs>>;
        getIdsOfWorklogsModifiedSince: ({ since, expand, opts }?: {
            since?: number;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ChangedWorklogs>>;
        getIssueWorklog: ({ issueIdOrKey, startAt, maxResults, startedAfter, startedBefore, expand, opts }: {
            issueIdOrKey: string;
            startAt?: number;
            maxResults?: number;
            startedAfter?: number;
            startedBefore?: number;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageOfWorklogs>>;
        getWorklog: ({ issueIdOrKey, id, expand, opts }: {
            issueIdOrKey: string;
            id: string;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Worklog>>;
        getWorklogsForIds: ({ expand, worklogIdsRequestBean, opts }: {
            expand?: string;
            worklogIdsRequestBean: WorklogIdsRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Worklog[]>>;
        updateWorklog: ({ issueIdOrKey, id, notifyUsers, adjustEstimate, newEstimate, expand, overrideEditableFlag, worklog, opts }: {
            issueIdOrKey: string;
            id: string;
            notifyUsers?: boolean;
            adjustEstimate?: "new" | "leave" | "manual" | "auto";
            newEstimate?: string;
            expand?: string;
            overrideEditableFlag?: boolean;
            worklog: Worklog;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Worklog>>;
    };
    /**
     * This resource is a collection of operations for [Jira
     * expressions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jira-expressions
     */
    get jiraExpressions(): {
        analyseExpression: ({ check, jiraExpressionForAnalysis, opts }: {
            check?: "syntax" | "type" | "complexity";
            jiraExpressionForAnalysis: JiraExpressionForAnalysis;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<JiraExpressionsAnalysis>>;
        evaluateJiraExpression: ({ expand, jiraExpressionEvalRequestBean, opts }: {
            expand?: string;
            jiraExpressionEvalRequestBean: JiraExpressionEvalRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<JiraExpressionResult>>;
        evaluateJsisJiraExpression: ({ expand, jiraExpressionEvaluateRequestBean, opts }: {
            expand?: string;
            jiraExpressionEvaluateRequestBean: JiraExpressionEvaluateRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<JexpEvaluateJiraExpressionResultBean>>;
    };
    /**
     * This resource represents various settings in Jira. Use it to get and update
     * Jira settings and properties.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jira-settings
     */
    get jiraSettings(): {
        getAdvancedSettings: ({ opts }: WithRequestOpts<TClient>) => Promise<JiraResult<ApplicationProperty[]>>;
        getApplicationProperty: ({ key, permissionLevel, keyFilter, opts }: {
            key?: string;
            permissionLevel?: string;
            keyFilter?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ApplicationProperty[]>>;
        getConfiguration: ({ opts }: WithRequestOpts<TClient>) => Promise<JiraResult<Configuration>>;
        setApplicationProperty: ({ id, simpleApplicationPropertyBean, opts }: {
            id: string;
            simpleApplicationPropertyBean: SimpleApplicationPropertyBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ApplicationProperty>>;
    };
    /**
     * This resource represents JQL function's precomputations. Precomputation is a
     * mapping between custom function call and JQL fragment returned by this
     * function. Use it to get and update precomputations.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jql-functions-apps-
     */
    get jqlFunctionsApps(): {
        getPrecomputations: ({ functionKey, startAt, maxResults, orderBy, opts }: {
            functionKey?: string[];
            startAt?: number;
            maxResults?: number;
            orderBy?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBean2JqlFunctionPrecomputationBean>>;
        getPrecomputationsById: ({ orderBy, jqlFunctionPrecomputationGetByIdRequest, opts }: {
            orderBy?: string;
            jqlFunctionPrecomputationGetByIdRequest: JqlFunctionPrecomputationGetByIdRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<JqlFunctionPrecomputationGetByIdResponse>>;
        updatePrecomputations: ({ skipNotFoundPrecomputations, jqlFunctionPrecomputationUpdateRequestBean, opts }: {
            skipNotFoundPrecomputations?: boolean;
            jqlFunctionPrecomputationUpdateRequestBean: JqlFunctionPrecomputationUpdateRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<JqlFunctionPrecomputationUpdateResponse | void>>;
    };
    /**
     * This resource represents JQL search auto-complete details. Use it to obtain JQL
     * search auto-complete data and suggestions for use in programmatic construction
     * of queries or custom query builders. It also provides operations to:
     *
     *  *  convert one or more JQL queries with user identifiers (username or user
     * key) to equivalent JQL queries with account IDs.
     *  *  convert readable details in one or more JQL queries to IDs where a user
     * doesn't have permission to view the entity whose details are readable.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jql
     */
    get jql(): {
        getAutoComplete: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<JqlReferenceData>>;
        getAutoCompletePost: ({ searchAutoCompleteFilter, opts }: {
            searchAutoCompleteFilter: SearchAutoCompleteFilter;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<JqlReferenceData>>;
        getFieldAutoCompleteForQueryString: ({ fieldName, fieldValue, predicateName, predicateValue, opts }?: {
            fieldName?: string;
            fieldValue?: string;
            predicateName?: string;
            predicateValue?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<AutoCompleteSuggestions>>;
        migrateQueries: ({ jqlPersonalDataMigrationRequest, opts }: {
            jqlPersonalDataMigrationRequest: JqlPersonalDataMigrationRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ConvertedJqlQueries>>;
        parseJqlQueries: ({ validation, jqlQueriesToParse, opts }: {
            validation: "strict" | "warn" | "none";
            jqlQueriesToParse: JqlQueriesToParse;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ParsedJqlQueries>>;
        sanitiseJqlQueries: ({ jqlQueriesToSanitize, opts }: {
            jqlQueriesToSanitize: JqlQueriesToSanitize;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SanitizedJqlQueries>>;
    };
    /**
     * This resource represents available labels. Use it to get available labels for
     * the global label field.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-labels
     */
    get labels(): {
        getAllLabels: ({ startAt, maxResults, opts }?: {
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanString>>;
    };
    /**
     * This resource represents license metrics. Use it to get available metrics for
     * Jira licences.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-license-metrics
     */
    get licenseMetrics(): {
        getApproximateApplicationLicenseCount: ({ applicationKey, opts }: {
            applicationKey: "jira-core" | "jira-product-discovery" | "jira-software" | "jira-servicedesk";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<LicenseMetric>>;
        getApproximateLicenseCount: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<LicenseMetric>>;
        getLicense: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<License>>;
    };
    /**
     * This resource represents information about the current user, such as basic
     * details, group membership, application roles, preferences, and locale. Use it
     * to get, create, update, and delete (restore default) values of the user's
     * preferences and locale.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-myself
     */
    get myself(): {
        getCurrentUser: ({ expand, opts }?: {
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<User>>;
        getLocale: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<Locale>>;
        getPreference: ({ key, opts }: {
            key: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<string>>;
        removePreference: ({ key, opts }: {
            key: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setLocale: ({ locale, opts }: {
            locale: Locale;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setPreference: ({ key, mediaType, requestBody, opts }: {
            key: string;
        } & (({
            mediaType?: "application/json";
            requestBody: string;
        } | {
            mediaType: "text/plain";
            requestBody: string;
        }) & WithRequestOpts<TClient>)) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents permission schemes. Use it to get, create, update, and
     * delete permission schemes as well as get, create, update, and delete details of
     * the permissions granted in those schemes.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permission-schemes
     */
    get permissionSchemes(): {
        createPermissionGrant: ({ schemeId, expand, permissionGrant, opts }: {
            schemeId: number;
            expand?: string;
            permissionGrant: PermissionGrant;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PermissionGrant>>;
        createPermissionScheme: ({ expand, permissionScheme, opts }: {
            expand?: string;
            permissionScheme: PermissionScheme;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PermissionScheme>>;
        deletePermissionScheme: ({ schemeId, opts }: {
            schemeId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deletePermissionSchemeEntity: ({ schemeId, permissionId, opts }: {
            schemeId: number;
            permissionId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllPermissionSchemes: ({ expand, opts }?: {
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PermissionSchemes>>;
        getPermissionScheme: ({ schemeId, expand, opts }: {
            schemeId: number;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PermissionScheme>>;
        getPermissionSchemeGrant: ({ schemeId, permissionId, expand, opts }: {
            schemeId: number;
            permissionId: number;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PermissionGrant>>;
        getPermissionSchemeGrants: ({ schemeId, expand, opts }: {
            schemeId: number;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PermissionGrants>>;
        updatePermissionScheme: ({ schemeId, expand, permissionScheme, opts }: {
            schemeId: number;
            expand?: string;
            permissionScheme: PermissionScheme;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PermissionScheme>>;
    };
    /**
     * This resource represents permissions. Use it to obtain details of all
     * permissions and determine whether the user has certain permissions.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-permissions
     */
    get permissions(): {
        getAllPermissions: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<Permissions>>;
        getBulkPermissions: ({ bulkPermissionsRequestBean, opts }: {
            bulkPermissionsRequestBean: BulkPermissionsRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<BulkPermissionGrants>>;
        getMyPermissions: ({ projectKey, projectId, issueKey, issueId, permissions, projectUuid, projectConfigurationUuid, commentId, opts }?: {
            projectKey?: string;
            projectId?: string;
            issueKey?: string;
            issueId?: string;
            permissions?: string;
            projectUuid?: string;
            projectConfigurationUuid?: string;
            commentId?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Permissions>>;
        getPermittedProjects: ({ permissionsKeysBean, opts }: {
            permissionsKeysBean: PermissionsKeysBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PermittedProjects>>;
    };
    /**
     * This resource represents plans. Use it to get, create, duplicate, update, trash
     * and archive plans.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-plans
     */
    get plans(): {
        archivePlan: ({ planId, opts }: {
            planId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createPlan: ({ useGroupId, createPlanRequest, opts }: {
            useGroupId?: boolean;
            createPlanRequest: CreatePlanRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<number>>;
        duplicatePlan: ({ planId, duplicatePlanRequest, opts }: {
            planId: number;
            duplicatePlanRequest: DuplicatePlanRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<number>>;
        getPlan: ({ planId, useGroupId, opts }: {
            planId: number;
            useGroupId?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<GetPlanResponse>>;
        getPlans: ({ includeTrashed, includeArchived, cursor, maxResults, opts }?: {
            includeTrashed?: boolean;
            includeArchived?: boolean;
            cursor?: string;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageWithCursorGetPlanResponseForPage>>;
        trashPlan: ({ planId, opts }: {
            planId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updatePlan: ({ planId, useGroupId, requestBody, opts }: {
            planId: number;
            useGroupId?: boolean;
            requestBody: {
                [key: string]: unknown;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents issue priority schemes. Use it to get priority schemes
     * and related information, and to create, update and delete priority schemes.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-priority-schemes
     */
    get prioritySchemes(): {
        createPriorityScheme: ({ createPrioritySchemeDetails, opts }: {
            createPrioritySchemeDetails: CreatePrioritySchemeDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PrioritySchemeId>>;
        deletePriorityScheme: ({ schemeId, opts }: {
            schemeId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAvailablePrioritiesByPriorityScheme: ({ startAt, maxResults, query, schemeId, exclude, opts }: {
            startAt?: string;
            maxResults?: string;
            query?: string;
            schemeId: string;
            exclude?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanPriorityWithSequence>>;
        getPrioritiesByPriorityScheme: ({ schemeId, startAt, maxResults, opts }: {
            schemeId: string;
            startAt?: string;
            maxResults?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanPriorityWithSequence>>;
        getPrioritySchemes: ({ startAt, maxResults, priorityId, schemeId, schemeName, onlyDefault, orderBy, expand, opts }?: {
            startAt?: string;
            maxResults?: string;
            priorityId?: number[];
            schemeId?: number[];
            schemeName?: string;
            onlyDefault?: boolean;
            orderBy?: "name" | "+name" | "-name";
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanPrioritySchemeWithPaginatedPrioritiesAndProjects>>;
        getProjectsByPriorityScheme: ({ schemeId, startAt, maxResults, projectId, query, opts }: {
            schemeId: string;
            startAt?: string;
            maxResults?: string;
            projectId?: number[];
            query?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        suggestedPrioritiesForMappings: ({ suggestedMappingsRequestBean, opts }: {
            suggestedMappingsRequestBean: SuggestedMappingsRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanPriorityWithSequence>>;
        updatePriorityScheme: ({ schemeId, updatePrioritySchemeRequestBean, opts }: {
            schemeId: number;
            updatePrioritySchemeRequestBean: UpdatePrioritySchemeRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<UpdatePrioritySchemeResponseBean>>;
    };
    /**
     * This resource represents avatars associated with a project. Use it to get,
     * load, set, and remove project avatars.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-avatars
     */
    get projectAvatars(): {
        createProjectAvatar: ({ projectIdOrKey, x, y, size, mediaType, requestBody, opts }: {
            projectIdOrKey: string;
            x?: number;
            y?: number;
            size?: number;
            mediaType: string;
            requestBody: string | ArrayBuffer;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Avatar>>;
        deleteProjectAvatar: ({ projectIdOrKey, id, opts }: {
            projectIdOrKey: string;
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllProjectAvatars: ({ projectIdOrKey, opts }: {
            projectIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectAvatars>>;
        updateProjectAvatar: ({ projectIdOrKey, avatar, opts }: {
            projectIdOrKey: string;
            avatar: Avatar;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents project categories. Use it to create, update, and
     * delete project categories as well as obtain a list of all project categories
     * and details of individual categories. For more information on managing project
     * categories, see [Adding, assigning, and deleting project
     * categories](https://confluence.atlassian.com/x/-A5WMg).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-categories
     */
    get projectCategories(): {
        createProjectCategory: ({ projectCategory, opts }: {
            projectCategory: ProjectCategory;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectCategory>>;
        getAllProjectCategories: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<ProjectCategory[]>>;
        getProjectCategoryById: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectCategory>>;
        removeProjectCategory: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateProjectCategory: ({ id, projectCategory, opts }: {
            id: number;
            projectCategory: ProjectCategory;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<UpdatedProjectCategory>>;
    };
    /**
     * This resource represents classification levels used in a project. Use it to
     * view and manage classification levels in your projects.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-classification-levels
     */
    get projectClassificationLevels(): {
        getDefaultProjectClassification: ({ projectIdOrKey, opts }: {
            projectIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        removeDefaultProjectClassification: ({ projectIdOrKey, opts }: {
            projectIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateDefaultProjectClassification: ({ projectIdOrKey, updateDefaultProjectClassificationBean, opts }: {
            projectIdOrKey: string;
            updateDefaultProjectClassificationBean: UpdateDefaultProjectClassificationBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents project components. Use it to get, create, update, and
     * delete project components. Also get components for project and get a count of
     * issues by component.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-components
     */
    get projectComponents(): {
        createComponent: ({ projectComponent, opts }: {
            projectComponent: ProjectComponent;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectComponent>>;
        deleteComponent: ({ id, moveIssuesTo, opts }: {
            id: string;
            moveIssuesTo?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        findComponentsForProjects: ({ projectIdsOrKeys, startAt, maxResults, orderBy, query, opts }: {
            projectIdsOrKeys?: string[];
            startAt?: number;
            maxResults?: number;
            orderBy?: "description" | "-description" | "+description" | "name" | "-name" | "+name";
            query?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBean2ComponentJsonBean>>;
        getComponent: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectComponent>>;
        getComponentRelatedIssues: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ComponentIssuesCount>>;
        getProjectComponents: ({ projectIdOrKey, componentSource, opts }: {
            projectIdOrKey: string;
            componentSource?: "jira" | "compass" | "auto";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectComponent[]>>;
        getProjectComponentsPaginated: ({ projectIdOrKey, startAt, maxResults, orderBy, componentSource, query, opts }: {
            projectIdOrKey: string;
            startAt?: number;
            maxResults?: number;
            orderBy?: "description" | "-description" | "+description" | "issueCount" | "-issueCount" | "+issueCount" | "lead" | "-lead" | "+lead" | "name" | "-name" | "+name";
            componentSource?: "jira" | "compass" | "auto";
            query?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanComponentWithIssueCount>>;
        updateComponent: ({ id, projectComponent, opts }: {
            id: string;
            projectComponent: ProjectComponent;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectComponent>>;
    };
    /**
     * This resource represents the email address used to send a project's
     * notifications. Use it to get and set the [project's sender email
     * address](https://confluence.atlassian.com/x/dolKLg).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-email
     */
    get projectEmail(): {
        getProjectEmail: ({ projectId, opts }: {
            projectId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectEmailAddress>>;
        updateProjectEmail: ({ projectId, projectEmailAddress, opts }: {
            projectId: number;
            projectEmailAddress: ProjectEmailAddress;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents project features. Use it to get the list of features
     * for a project and modify the state of a feature. The project feature endpoint
     * is available only for Jira Software, both for team- and company-managed
     * projects.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-features
     */
    get projectFeatures(): {
        getFeaturesForProject: ({ projectIdOrKey, opts }: {
            projectIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ContainerForProjectFeatures>>;
        toggleFeatureForProject: ({ projectIdOrKey, featureKey, projectFeatureState, opts }: {
            projectIdOrKey: string;
            featureKey: string;
            projectFeatureState: ProjectFeatureState;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ContainerForProjectFeatures>>;
    };
    /**
     * This resource provides validation for project keys and names.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-key-and-name-validation
     */
    get projectKeyAndNameValidation(): {
        getValidProjectKey: ({ key, opts }?: {
            key?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<string>>;
        getValidProjectName: ({ name, opts }: {
            name: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<string>>;
        validateProjectKey: ({ key, opts }?: {
            key?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ErrorCollection>>;
    };
    /**
     * This resource represents permission schemes for a project. Use this resource to:
     *
     *  *  get details of a project's issue security levels available to the calling
     * user.
     *  *  get the permission scheme associated with the project or assign different
     * permission scheme to the project.
     *  *  get details of a project's issue security scheme.
     *
     * See [Managing project permissions](https://confluence.atlassian.com/x/yodKLg)
     * for more information about permission schemes.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-permission-schemes
     */
    get projectPermissionSchemes(): {
        assignPermissionScheme: ({ projectKeyOrId, expand, idBean, opts }: {
            projectKeyOrId: string;
            expand?: string;
            idBean: IdBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PermissionScheme>>;
        getAssignedPermissionScheme: ({ projectKeyOrId, expand, opts }: {
            projectKeyOrId: string;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PermissionScheme>>;
        getProjectIssueSecurityScheme: ({ projectKeyOrId, opts }: {
            projectKeyOrId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SecurityScheme>>;
        getSecurityLevelsForProject: ({ projectKeyOrId, opts }: {
            projectKeyOrId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectIssueSecurityLevels>>;
    };
    /**
     * This resource represents [project](#api-group-Projects) properties, which
     * provides for storing custom data against a project. Use it to get, create, and
     * delete project properties as well as get a list of property keys for a project.
     * Project properties are a type of [entity
     * property](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-properties
     */
    get projectProperties(): {
        deleteProjectProperty: ({ projectIdOrKey, propertyKey, opts }: {
            projectIdOrKey: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getProjectProperty: ({ projectIdOrKey, propertyKey, opts }: {
            projectIdOrKey: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<EntityProperty>>;
        getProjectPropertyKeys: ({ projectIdOrKey, opts }: {
            projectIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PropertyKeys>>;
        setProjectProperty: ({ projectIdOrKey, propertyKey, requestBody, opts }: {
            projectIdOrKey: string;
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
    };
    /**
     * This resource represents the users assigned to [project
     * roles](#api-group-Issue-comments). Use it to get, add, and remove default users
     * from project roles. Also use it to add and remove users from a project role
     * associated with a project.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-role-actors
     */
    get projectRoleActors(): {
        addActorUsers: ({ projectIdOrKey, id, actorsMap, opts }: {
            projectIdOrKey: string;
            id: number;
            actorsMap: ActorsMap;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole>>;
        addProjectRoleActorsToRole: ({ id, actorInputBean, opts }: {
            id: number;
            actorInputBean: ActorInputBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole>>;
        deleteActor: ({ projectIdOrKey, id, user, group, groupId, opts }: {
            projectIdOrKey: string;
            id: number;
            user?: string;
            group?: string;
            groupId?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteProjectRoleActorsFromRole: ({ id, user, groupId, group, opts }: {
            id: number;
            user?: string;
            groupId?: string;
            group?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole>>;
        getProjectRoleActorsForRole: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole>>;
        setActors: ({ projectIdOrKey, id, projectRoleActorsUpdateBean, opts }: {
            projectIdOrKey: string;
            id: number;
            projectRoleActorsUpdateBean: ProjectRoleActorsUpdateBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole>>;
    };
    /**
     * This resource represents the roles that users can play in projects. Use this
     * resource to get, create, update, and delete project roles.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-roles
     */
    get projectRoles(): {
        createProjectRole: ({ createUpdateRoleRequestBean, opts }: {
            createUpdateRoleRequestBean: CreateUpdateRoleRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole>>;
        deleteProjectRole: ({ id, swap, opts }: {
            id: number;
            swap?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        fullyUpdateProjectRole: ({ id, createUpdateRoleRequestBean, opts }: {
            id: number;
            createUpdateRoleRequestBean: CreateUpdateRoleRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole>>;
        getAllProjectRoles: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole[]>>;
        getProjectRole: ({ projectIdOrKey, id, excludeInactiveUsers, opts }: {
            projectIdOrKey: string;
            id: number;
            excludeInactiveUsers?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole>>;
        getProjectRoleById: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole>>;
        getProjectRoleDetails: ({ projectIdOrKey, currentMember, excludeConnectAddons, opts }: {
            projectIdOrKey: string;
            currentMember?: boolean;
            excludeConnectAddons?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRoleDetails[]>>;
        getProjectRoles: ({ projectIdOrKey, opts }: {
            projectIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            [key: string]: string;
        }>>;
        partialUpdateProjectRole: ({ id, createUpdateRoleRequestBean, opts }: {
            id: number;
            createUpdateRoleRequestBean: CreateUpdateRoleRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectRole>>;
    };
    /**
     * This resource represents projects. Use it to get, create, update, and delete
     * projects. Also get statuses available to a project, a project's notification
     * schemes, and update a project's type.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects
     */
    get projects(): {
        archiveProject: ({ projectIdOrKey, opts }: {
            projectIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createProject: ({ createProjectDetails, opts }: {
            createProjectDetails: CreateProjectDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectIdentifiers>>;
        deleteProject: ({ projectIdOrKey, enableUndo, opts }: {
            projectIdOrKey: string;
            enableUndo?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteProjectAsynchronously: ({ projectIdOrKey, opts }: {
            projectIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllProjects: ({ expand, recent, properties, opts }?: {
            expand?: string;
            recent?: number;
            properties?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Project[]>>;
        getAllStatuses: ({ projectIdOrKey, opts }: {
            projectIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeWithStatus[]>>;
        getHierarchy: ({ projectId, opts }: {
            projectId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectIssueTypeHierarchy>>;
        getNotificationSchemeForProject: ({ projectKeyOrId, expand, opts }: {
            projectKeyOrId: string;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<NotificationScheme>>;
        getProject: ({ projectIdOrKey, expand, properties, opts }: {
            projectIdOrKey: string;
            expand?: string;
            properties?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Project>>;
        getRecent: ({ expand, properties, opts }?: {
            expand?: string;
            properties?: StringList[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Project[]>>;
        restore: ({ projectIdOrKey, opts }: {
            projectIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Project>>;
        searchProjects: ({ startAt, maxResults, orderBy, id, keys, query, typeKey, categoryId, action, expand, status, properties, propertyQuery, opts }?: {
            startAt?: number;
            maxResults?: number;
            orderBy?: "category" | "-category" | "+category" | "key" | "-key" | "+key" | "name" | "-name" | "+name" | "owner" | "-owner" | "+owner" | "issueCount" | "-issueCount" | "+issueCount" | "lastIssueUpdatedDate" | "-lastIssueUpdatedDate" | "+lastIssueUpdatedDate" | "archivedDate" | "+archivedDate" | "-archivedDate" | "deletedDate" | "+deletedDate" | "-deletedDate";
            id?: number[];
            keys?: string[];
            query?: string;
            typeKey?: string;
            categoryId?: number;
            action?: "view" | "browse" | "edit" | "create";
            expand?: string;
            status?: ("live" | "archived" | "deleted")[];
            properties?: StringList[];
            propertyQuery?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanProject>>;
        updateProject: ({ projectIdOrKey, expand, updateProjectDetails, opts }: {
            projectIdOrKey: string;
            expand?: string;
            updateProjectDetails: UpdateProjectDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Project>>;
    };
    /**
     * This resource represents project templates. Use it to create a new project from
     * a custom template.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-templates
     */
    get projectTemplates(): {
        createProjectWithCustomTemplate: ({ projectCustomTemplateCreateRequestDto, opts }: {
            projectCustomTemplateCreateRequestDto: ProjectCustomTemplateCreateRequestDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        editTemplate: ({ editTemplateRequest, opts }: {
            editTemplateRequest: EditTemplateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        liveTemplate: ({ projectId, templateKey, opts }?: {
            projectId?: string;
            templateKey?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectTemplateModel>>;
        removeTemplate: ({ templateKey, opts }: {
            templateKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        saveTemplate: ({ saveTemplateRequest, opts }: {
            saveTemplateRequest: SaveTemplateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SaveTemplateResponse>>;
    };
    /**
     * This resource represents project types. Use it to obtain a list of all project
     * types, a list of project types accessible to the calling user, and details of a
     * project type.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-types
     */
    get projectTypes(): {
        getAccessibleProjectTypeByKey: ({ projectTypeKey, opts }: {
            projectTypeKey: "software" | "service_desk" | "business" | "product_discovery";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectType>>;
        getAllAccessibleProjectTypes: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<ProjectType[]>>;
        getAllProjectTypes: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<ProjectType[]>>;
        getProjectTypeByKey: ({ projectTypeKey, opts }: {
            projectTypeKey: "software" | "service_desk" | "business" | "product_discovery";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ProjectType>>;
    };
    /**
     * This resource represents project versions. Use it to get, get lists of, create,
     * update, move, merge, and delete project versions. This resource also provides
     * counts of issues by version.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-versions
     */
    get projectVersions(): {
        createRelatedWork: ({ id, versionRelatedWork, opts }: {
            id: string;
            versionRelatedWork: VersionRelatedWork;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<VersionRelatedWork>>;
        createVersion: ({ version, opts }: {
            version: Version;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Version>>;
        deleteAndReplaceVersion: ({ id, deleteAndReplaceVersionBean, opts }: {
            id: string;
            deleteAndReplaceVersionBean: DeleteAndReplaceVersionBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteRelatedWork: ({ versionId, relatedWorkId, opts }: {
            versionId: string;
            relatedWorkId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteVersion: ({ id, moveFixIssuesTo, moveAffectedIssuesTo, opts }: {
            id: string;
            moveFixIssuesTo?: string;
            moveAffectedIssuesTo?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getProjectVersions: ({ projectIdOrKey, expand, opts }: {
            projectIdOrKey: string;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Version[]>>;
        getProjectVersionsPaginated: ({ projectIdOrKey, startAt, maxResults, orderBy, query, status, expand, opts }: {
            projectIdOrKey: string;
            startAt?: number;
            maxResults?: number;
            orderBy?: "description" | "-description" | "+description" | "name" | "-name" | "+name" | "releaseDate" | "-releaseDate" | "+releaseDate" | "sequence" | "-sequence" | "+sequence" | "startDate" | "-startDate" | "+startDate";
            query?: string;
            status?: string;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanVersion>>;
        getRelatedWork: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<VersionRelatedWork[]>>;
        getVersion: ({ id, expand, opts }: {
            id: string;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Version>>;
        getVersionRelatedIssues: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<VersionIssueCounts>>;
        getVersionUnresolvedIssues: ({ id, opts }: {
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<VersionUnresolvedIssuesCount>>;
        mergeVersions: ({ id, moveIssuesTo, opts }: {
            id: string;
            moveIssuesTo: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        moveVersion: ({ id, versionMoveBean, opts }: {
            id: string;
            versionMoveBean: VersionMoveBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Version>>;
        updateRelatedWork: ({ id, versionRelatedWork, opts }: {
            id: string;
            versionRelatedWork: VersionRelatedWork;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<VersionRelatedWork>>;
        updateVersion: ({ id, version, opts }: {
            id: string;
            version: Version;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Version>>;
    };
    /**
     * This resource represents screen schemes in classic projects. Use it to get,
     * create, update, and delete screen schemes.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screen-schemes
     */
    get screenSchemes(): {
        createScreenScheme: ({ screenSchemeDetails, opts }: {
            screenSchemeDetails: ScreenSchemeDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ScreenSchemeId>>;
        deleteScreenScheme: ({ screenSchemeId, opts }: {
            screenSchemeId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getScreenSchemes: ({ startAt, maxResults, id, expand, queryString, orderBy, opts }?: {
            startAt?: number;
            maxResults?: number;
            id?: number[];
            expand?: string;
            queryString?: string;
            orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanScreenScheme>>;
        updateScreenScheme: ({ screenSchemeId, updateScreenSchemeDetails, opts }: {
            screenSchemeId: string;
            updateScreenSchemeDetails: UpdateScreenSchemeDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents the screens used to record issue details. Use it to:
     *
     *  *  get details of all screens.
     *  *  get details of all the fields available for use on screens.
     *  *  create screens.
     *  *  delete screens.
     *  *  update screens.
     *  *  add a field to the default screen.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screens
     */
    get screens(): {
        addFieldToDefaultScreen: ({ fieldId, opts }: {
            fieldId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        createScreen: ({ screenDetails, opts }: {
            screenDetails: ScreenDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Screen>>;
        deleteScreen: ({ screenId, opts }: {
            screenId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAvailableScreenFields: ({ screenId, opts }: {
            screenId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ScreenableField[]>>;
        getScreens: ({ startAt, maxResults, id, queryString, scope, orderBy, opts }?: {
            startAt?: number;
            maxResults?: number;
            id?: number[];
            queryString?: string;
            scope?: ("GLOBAL" | "TEMPLATE" | "PROJECT")[];
            orderBy?: "name" | "-name" | "+name" | "id" | "-id" | "+id";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanScreen>>;
        getScreensForField: ({ fieldId, startAt, maxResults, expand, opts }: {
            fieldId: string;
            startAt?: number;
            maxResults?: number;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanScreenWithTab>>;
        updateScreen: ({ screenId, updateScreenDetails, opts }: {
            screenId: number;
            updateScreenDetails: UpdateScreenDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<Screen>>;
    };
    /**
     * This resource represents the screen tab fields used to record issue details.
     * Use it to get, add, move, and remove fields from screen tabs.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screen-tab-fields
     */
    get screenTabFields(): {
        addScreenTabField: ({ screenId, tabId, addFieldBean, opts }: {
            screenId: number;
            tabId: number;
            addFieldBean: AddFieldBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ScreenableField>>;
        getAllScreenTabFields: ({ screenId, tabId, projectKey, opts }: {
            screenId: number;
            tabId: number;
            projectKey?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ScreenableField[]>>;
        moveScreenTabField: ({ screenId, tabId, id, moveFieldBean, opts }: {
            screenId: number;
            tabId: number;
            id: string;
            moveFieldBean: MoveFieldBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        removeScreenTabField: ({ screenId, tabId, id, opts }: {
            screenId: number;
            tabId: number;
            id: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents the screen tabs used to record issue details. Use it
     * to get, create, update, move, and delete screen tabs.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-screen-tabs
     */
    get screenTabs(): {
        addScreenTab: ({ screenId, screenableTab, opts }: {
            screenId: number;
            screenableTab: ScreenableTab;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ScreenableTab>>;
        deleteScreenTab: ({ screenId, tabId, opts }: {
            screenId: number;
            tabId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllScreenTabs: ({ screenId, projectKey, opts }: {
            screenId: number;
            projectKey?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ScreenableTab[]>>;
        getBulkScreenTabs: ({ screenId, tabId, startAt, maxResult, opts }?: {
            screenId?: number[];
            tabId?: number[];
            startAt?: number;
            maxResult?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        moveScreenTab: ({ screenId, tabId, pos, opts }: {
            screenId: number;
            tabId: number;
            pos: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        renameScreenTab: ({ screenId, tabId, screenableTab, opts }: {
            screenId: number;
            tabId: number;
            screenableTab: ScreenableTab;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ScreenableTab>>;
    };
    /**
     * This resource provides information about the Jira instance.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-server-info
     */
    get serverInfo(): {
        getServerInfo: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<ServerInformation>>;
    };
    /**
     * This resource represents a service registry. Use it to retrieve attributes
     * related to a [service
     * registry](https://support.atlassian.com/jira-service-management-cloud/docs/what-is-services/)
     * in JSM.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-service-registry
     */
    get serviceRegistry(): {
        serviceRegistryResourceServicesGet: ({ serviceIds, opts }: {
            serviceIds: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ServiceRegistry[]>>;
    };
    /**
     * This resource represents statuses. Use it to search, get, create, delete, and
     * change statuses.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-status
     */
    get status(): {
        createStatuses: ({ statusCreateRequest, opts }: {
            statusCreateRequest: StatusCreateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<JiraStatus[]>>;
        deleteStatusesById: ({ id, opts }: {
            id: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getProjectIssueTypeUsagesForStatus: ({ statusId, projectId, nextPageToken, maxResults, opts }: {
            statusId: string;
            projectId: string;
            nextPageToken?: string;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<StatusProjectIssueTypeUsageDto>>;
        getProjectUsagesForStatus: ({ statusId, nextPageToken, maxResults, opts }: {
            statusId: string;
            nextPageToken?: string;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<StatusProjectUsageDto>>;
        getStatus: ({ idOrName, opts }: {
            idOrName: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<JiraStatus>>;
        getStatusesById: ({ expand, id, opts }: {
            expand?: string;
            id: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<JiraStatus[]>>;
        getWorkflowUsagesForStatus: ({ statusId, nextPageToken, maxResults, opts }: {
            statusId: string;
            nextPageToken?: string;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<StatusWorkflowUsageDto>>;
        search: ({ expand, projectId, startAt, maxResults, searchString, statusCategory, opts }?: {
            expand?: string;
            projectId?: string;
            startAt?: number;
            maxResults?: number;
            searchString?: string;
            statusCategory?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageOfStatuses>>;
        updateStatuses: ({ statusUpdateRequest, opts }: {
            statusUpdateRequest: StatusUpdateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents a [long-running asynchronous
     * tasks](#async-operations). Use it to obtain details about the progress of a
     * long-running task or cancel a long-running task.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks
     */
    get tasks(): {
        cancelTask: ({ taskId, opts }: {
            taskId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getTask: ({ taskId, opts }: {
            taskId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<TaskProgressBeanObject>>;
    };
    /**
     * This resource represents planning settings for plan-only and Atlassian teams in
     * a plan. Use it to get, create, update and delete planning settings.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-teams-in-plan
     */
    get teamsInPlan(): {
        addAtlassianTeam: ({ planId, addAtlassianTeamRequest, opts }: {
            planId: number;
            addAtlassianTeamRequest: AddAtlassianTeamRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createPlanOnlyTeam: ({ planId, createPlanOnlyTeamRequest, opts }: {
            planId: number;
            createPlanOnlyTeamRequest: CreatePlanOnlyTeamRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<number>>;
        deletePlanOnlyTeam: ({ planId, planOnlyTeamId, opts }: {
            planId: number;
            planOnlyTeamId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAtlassianTeam: ({ planId, atlassianTeamId, opts }: {
            planId: number;
            atlassianTeamId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<GetAtlassianTeamResponse>>;
        getPlanOnlyTeam: ({ planId, planOnlyTeamId, opts }: {
            planId: number;
            planOnlyTeamId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<GetPlanOnlyTeamResponse>>;
        getTeams: ({ planId, cursor, maxResults, opts }: {
            planId: number;
            cursor?: string;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageWithCursorGetTeamResponseForPage>>;
        removeAtlassianTeam: ({ planId, atlassianTeamId, opts }: {
            planId: number;
            atlassianTeamId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateAtlassianTeam: ({ planId, atlassianTeamId, requestBody, opts }: {
            planId: number;
            atlassianTeamId: string;
            requestBody: {
                [key: string]: unknown;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updatePlanOnlyTeam: ({ planId, planOnlyTeamId, requestBody, opts }: {
            planId: number;
            planOnlyTeamId: number;
            requestBody: {
                [key: string]: unknown;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * This resource represents time tracking and time tracking providers. Use it to
     * get and set the time tracking provider, get and set the time tracking options,
     * and disable time tracking.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-time-tracking
     */
    get timeTracking(): {
        getAvailableTimeTrackingImplementations: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<TimeTrackingProvider[]>>;
        getSelectedTimeTrackingImplementation: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<TimeTrackingProvider | void>>;
        getSharedTimeTrackingConfiguration: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<TimeTrackingConfiguration>>;
        selectTimeTrackingImplementation: ({ timeTrackingProvider, opts }: {
            timeTrackingProvider: TimeTrackingProvider;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setSharedTimeTrackingConfiguration: ({ timeTrackingConfiguration, opts }: {
            timeTrackingConfiguration: TimeTrackingConfiguration;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<TimeTrackingConfiguration>>;
    };
    /**
     * UI modifications is a feature available for **Forge apps only**. It enables
     * Forge apps to control how selected Jira fields behave on the following views:
     * global issue create, issue view, issue transition. For example: hide specific
     * fields, set them as required, etc.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-ui-modifications-apps-
     */
    get uiModificationsApps(): {
        createUiModification: ({ createUiModificationDetails, opts }: {
            createUiModificationDetails: CreateUiModificationDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<UiModificationIdentifiers>>;
        deleteUiModification: ({ uiModificationId, opts }: {
            uiModificationId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getUiModifications: ({ startAt, maxResults, expand, opts }?: {
            startAt?: number;
            maxResults?: number;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanUiModificationDetails>>;
        updateUiModification: ({ uiModificationId, updateUiModificationDetails, opts }: {
            uiModificationId: string;
            updateUiModificationDetails: UpdateUiModificationDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    /**
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-usernavproperties
     */
    get usernavproperties(): {
        getUserNavProperty: ({ propertyKey, accountId, opts }: {
            propertyKey: string;
            accountId?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<UserNavPropertyJsonBean>>;
        setUserNavProperty: ({ propertyKey, accountId, requestBody, opts }: {
            propertyKey: string;
            accountId?: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
    /**
     * This resource represents [user](#api-group-Users) properties and provides for
     * storing custom data against a user. Use it to get, create, and delete user
     * properties as well as get a list of property keys for a user. This resourse is
     * designed for integrations and apps to store per-user data and settings. This
     * enables data used to customized the user experience to be kept in the Jira
     * Cloud instance's database. User properties are a type of [entity
     * property](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/).
     *
     * This resource does not access the [user
     * properties](https://confluence.atlassian.com/x/8YxjL) created and maintained in
     * Jira.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-user-properties
     */
    get userProperties(): {
        deleteUserProperty: ({ propertyKey, accountId, userKey, username, opts }: {
            propertyKey: string;
            accountId?: string;
            userKey?: string;
            username?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getUserProperty: ({ propertyKey, accountId, userKey, username, opts }: {
            propertyKey: string;
            accountId?: string;
            userKey?: string;
            username?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<EntityProperty>>;
        getUserPropertyKeys: ({ accountId, userKey, username, opts }?: {
            accountId?: string;
            userKey?: string;
            username?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PropertyKeys>>;
        setUserProperty: ({ propertyKey, accountId, userKey, username, requestBody, opts }: {
            propertyKey: string;
            accountId?: string;
            userKey?: string;
            username?: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
    };
    /**
     * This resource represents various ways to search for and find users. Use it to
     * obtain list of users including users assignable to projects and issues, users
     * with permissions, user lists for pickup fields, and user lists generated using
     * structured queries. Note that the operations in this resource only return users
     * found within the first 1000 users.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-user-search
     */
    get userSearch(): {
        findAssignableUsers: ({ query, sessionId, username, accountId, project, issueKey, issueId, startAt, maxResults, actionDescriptorId, recommend, opts }: {
            query?: string;
            sessionId?: string;
            username?: string;
            accountId?: string;
            project?: string;
            issueKey?: string;
            issueId?: string;
            startAt?: number;
            maxResults?: number;
            actionDescriptorId?: number;
            recommend?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<User[]>>;
        findBulkAssignableUsers: ({ query, username, accountId, projectKeys, startAt, maxResults, opts }: {
            query?: string;
            username?: string;
            accountId?: string;
            projectKeys: string;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<User[]>>;
        findUserKeysByQuery: ({ query, startAt, maxResult, opts }: {
            query: string;
            startAt?: number;
            maxResult?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanUserKey>>;
        findUsers: ({ query, username, accountId, startAt, maxResults, property, opts }: {
            query?: string;
            username?: string;
            accountId?: string;
            startAt?: number;
            maxResults?: number;
            property?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<User[]>>;
        findUsersByQuery: ({ query, startAt, maxResults, opts }: {
            query: string;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanUser>>;
        findUsersForPicker: ({ query, maxResults, showAvatar, exclude, excludeAccountIds, avatarSize, excludeConnectUsers, opts }: {
            query: string;
            maxResults?: number;
            showAvatar?: boolean;
            exclude?: string[];
            excludeAccountIds?: string[];
            avatarSize?: string;
            excludeConnectUsers?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<FoundUsers>>;
        findUsersWithAllPermissions: ({ query, username, accountId, permissions, issueKey, projectKey, startAt, maxResults, opts }: {
            query?: string;
            username?: string;
            accountId?: string;
            permissions: string;
            issueKey?: string;
            projectKey?: string;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<User[]>>;
        findUsersWithBrowsePermission: ({ query, username, accountId, issueKey, projectKey, startAt, maxResults, opts }: {
            query?: string;
            username?: string;
            accountId?: string;
            issueKey?: string;
            projectKey?: string;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<User[]>>;
    };
    /**
     * This resource represent users. Use it to:
     *
     *  *  get, get a list of, create, and delete users.
     *  *  get, set, and reset a user's default issue table columns.
     *  *  get a list of the groups the user belongs to.
     *  *  get a list of user account IDs for a list of usernames or user keys.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-users
     */
    get users(): {
        bulkGetUsers: ({ startAt, maxResults, username, key, accountId, opts }: {
            startAt?: number;
            maxResults?: number;
            username?: string[];
            key?: string[];
            accountId: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanUser>>;
        bulkGetUsersMigration: ({ startAt, maxResults, username, key, opts }?: {
            startAt?: number;
            maxResults?: number;
            username?: string[];
            key?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<UserMigrationBean[]>>;
        createUser: ({ newUserDetails, opts }: {
            newUserDetails: NewUserDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<User>>;
        getAllUsers: ({ startAt, maxResults, opts }?: {
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<User[]>>;
        getAllUsersDefault: ({ startAt, maxResults, opts }?: {
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<User[]>>;
        getUser: ({ accountId, username, key, expand, opts }?: {
            accountId?: string;
            username?: string;
            key?: string;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<User>>;
        getUserDefaultColumns: ({ accountId, username, opts }?: {
            accountId?: string;
            username?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ColumnItem[]>>;
        getUserEmail: ({ accountId, opts }: {
            accountId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<UnrestrictedUserEmail>>;
        getUserEmailBulk: ({ accountId, opts }: {
            accountId: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<UnrestrictedUserEmail>>;
        getUserGroups: ({ accountId, username, key, opts }: {
            accountId: string;
            username?: string;
            key?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<GroupName[]>>;
        removeUser: ({ accountId, username, key, opts }: {
            accountId: string;
            username?: string;
            key?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        resetUserColumns: ({ accountId, username, opts }?: {
            accountId?: string;
            username?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setUserColumns: ({ accountId, userColumnRequestBody, opts }: {
            accountId?: string;
            userColumnRequestBody: UserColumnRequestBody;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
    /**
     * This resource represents webhooks. Webhooks are calls sent to a URL when an
     * event occurs in Jira for issues specified by a JQL query. Only Connect and
     * OAuth 2.0 apps can register and manage webhooks. For more information, see
     * [Webhooks](https://developer.atlassian.com/cloud/jira/platform/webhooks/#registering-a-webhook-via-the-jira-rest-api-for-connect-apps).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-webhooks
     */
    get webhooks(): {
        deleteWebhookById: ({ containerForWebhookIds, opts }: {
            containerForWebhookIds: ContainerForWebhookIds;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getDynamicWebhooksForApp: ({ startAt, maxResults, opts }?: {
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanWebhook>>;
        getFailedWebhooks: ({ maxResults, after, opts }?: {
            maxResults?: number;
            after?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<FailedWebhooks>>;
        refreshWebhooks: ({ containerForWebhookIds, opts }: {
            containerForWebhookIds: ContainerForWebhookIds;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WebhooksExpirationDate>>;
        registerDynamicWebhooks: ({ webhookRegistrationDetails, opts }: {
            webhookRegistrationDetails: WebhookRegistrationDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ContainerForRegisteredWebhooks>>;
    };
    /**
     * This resource represents draft workflow schemes. Use it to manage drafts of
     * workflow schemes.
     *
     * A workflow scheme maps issue types to workflows. A workflow scheme can be
     * associated with one or more projects, which enables the projects to use the
     * workflow-issue type mappings.
     *
     * Active workflow schemes (workflow schemes that are used by projects) cannot be
     * edited. Editing an active workflow scheme creates a draft copy of the scheme.
     * The draft workflow scheme can then be edited and published (replacing the
     * active scheme).
     *
     * See [Configuring workflow schemes](https://confluence.atlassian.com/x/tohKLg)
     * for more information.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-scheme-drafts
     */
    get workflowSchemeDrafts(): {
        createWorkflowSchemeDraftFromParent: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        deleteDraftDefaultWorkflow: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        deleteDraftWorkflowMapping: ({ id, workflowName, opts }: {
            id: number;
            workflowName: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteWorkflowSchemeDraft: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteWorkflowSchemeDraftIssueType: ({ id, issueType, opts }: {
            id: number;
            issueType: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        getDraftDefaultWorkflow: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<DefaultWorkflow>>;
        getDraftWorkflow: ({ id, workflowName, opts }: {
            id: number;
            workflowName?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypesWorkflowMapping>>;
        getWorkflowSchemeDraft: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        getWorkflowSchemeDraftIssueType: ({ id, issueType, opts }: {
            id: number;
            issueType: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeWorkflowMapping>>;
        publishDraftWorkflowScheme: ({ id, validateOnly, publishDraftWorkflowScheme, opts }: {
            id: number;
            validateOnly?: boolean;
            publishDraftWorkflowScheme: PublishDraftWorkflowScheme;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setWorkflowSchemeDraftIssueType: ({ id, issueType, issueTypeWorkflowMapping, opts }: {
            id: number;
            issueType: string;
            issueTypeWorkflowMapping: IssueTypeWorkflowMapping;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        updateDraftDefaultWorkflow: ({ id, defaultWorkflow, opts }: {
            id: number;
            defaultWorkflow: DefaultWorkflow;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        updateDraftWorkflowMapping: ({ id, workflowName, issueTypesWorkflowMapping, opts }: {
            id: number;
            workflowName: string;
            issueTypesWorkflowMapping: IssueTypesWorkflowMapping;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        updateWorkflowSchemeDraft: ({ id, workflowScheme, opts }: {
            id: number;
            workflowScheme: WorkflowScheme;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
    };
    /**
     * This resource represents the associations between workflow schemes and projects.
     *
     * For more information, see [Managing your
     * workflows](https://confluence.atlassian.com/x/q4hKLg).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-scheme-project-associations
     */
    get workflowSchemeProjectAssociations(): {
        assignSchemeToProject: ({ workflowSchemeProjectAssociation, opts }: {
            workflowSchemeProjectAssociation: WorkflowSchemeProjectAssociation;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getWorkflowSchemeProjectAssociations: ({ projectId, opts }: {
            projectId: number[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ContainerOfWorkflowSchemeAssociations>>;
    };
    /**
     * This resource represents workflow schemes. Use it to manage workflow schemes
     * and the workflow scheme's workflows and issue types.
     *
     * A workflow scheme maps issue types to workflows. A workflow scheme can be
     * associated with one or more projects, which enables the projects to use the
     * workflow-issue type mappings.
     *
     * Active workflow schemes (workflow schemes that are used by projects) cannot be
     * edited. When an active workflow scheme is edited, a draft copy of the scheme is
     * created. The draft workflow scheme is then be edited and published (replacing
     * the active scheme).
     *
     * See [Configuring workflow schemes](https://confluence.atlassian.com/x/tohKLg)
     * for more information.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-schemes
     */
    get workflowSchemes(): {
        createWorkflowScheme: ({ workflowScheme, opts }: {
            workflowScheme: WorkflowScheme;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        deleteDefaultWorkflow: ({ id, updateDraftIfNeeded, opts }: {
            id: number;
            updateDraftIfNeeded?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        deleteWorkflowMapping: ({ id, workflowName, updateDraftIfNeeded, opts }: {
            id: number;
            workflowName: string;
            updateDraftIfNeeded?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteWorkflowScheme: ({ id, opts }: {
            id: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteWorkflowSchemeIssueType: ({ id, issueType, updateDraftIfNeeded, opts }: {
            id: number;
            issueType: string;
            updateDraftIfNeeded?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        getAllWorkflowSchemes: ({ startAt, maxResults, opts }?: {
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanWorkflowScheme>>;
        getDefaultWorkflow: ({ id, returnDraftIfExists, opts }: {
            id: number;
            returnDraftIfExists?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<DefaultWorkflow>>;
        getProjectUsagesForWorkflowScheme: ({ workflowSchemeId, nextPageToken, maxResults, opts }: {
            workflowSchemeId: string;
            nextPageToken?: string;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowSchemeProjectUsageDto>>;
        getWorkflow: ({ id, workflowName, returnDraftIfExists, opts }: {
            id: number;
            workflowName?: string;
            returnDraftIfExists?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypesWorkflowMapping>>;
        getWorkflowScheme: ({ id, returnDraftIfExists, opts }: {
            id: number;
            returnDraftIfExists?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        getWorkflowSchemeIssueType: ({ id, issueType, returnDraftIfExists, opts }: {
            id: number;
            issueType: string;
            returnDraftIfExists?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<IssueTypeWorkflowMapping>>;
        readWorkflowSchemes: ({ expand, workflowSchemeReadRequest, opts }: {
            expand?: string;
            workflowSchemeReadRequest: WorkflowSchemeReadRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowSchemeReadResponse[]>>;
        setWorkflowSchemeIssueType: ({ id, issueType, issueTypeWorkflowMapping, opts }: {
            id: number;
            issueType: string;
            issueTypeWorkflowMapping: IssueTypeWorkflowMapping;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        updateDefaultWorkflow: ({ id, defaultWorkflow, opts }: {
            id: number;
            defaultWorkflow: DefaultWorkflow;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        updateSchemes: ({ workflowSchemeUpdateRequest, opts }: {
            workflowSchemeUpdateRequest: WorkflowSchemeUpdateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        updateWorkflowMapping: ({ id, workflowName, issueTypesWorkflowMapping, opts }: {
            id: number;
            workflowName: string;
            issueTypesWorkflowMapping: IssueTypesWorkflowMapping;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        updateWorkflowScheme: ({ id, workflowScheme, opts }: {
            id: number;
            workflowScheme: WorkflowScheme;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowScheme>>;
        updateWorkflowSchemeMappings: ({ workflowSchemeUpdateRequiredMappingsRequest, opts }: {
            workflowSchemeUpdateRequiredMappingsRequest: WorkflowSchemeUpdateRequiredMappingsRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowSchemeUpdateRequiredMappingsResponse>>;
    };
    /**
     * This resource represents workflows. Use it to:
     *
     *  *  Get workflows
     *  *  Create workflows
     *  *  Update workflows
     *  *  Delete inactive workflows
     *  *  Get workflow capabilities
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflows
     */
    get workflows(): {
        createWorkflow: ({ createWorkflowDetails, opts }: {
            createWorkflowDetails: CreateWorkflowDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowIds>>;
        createWorkflows: ({ workflowCreateRequest, opts }: {
            workflowCreateRequest: WorkflowCreateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowCreateResponse>>;
        deleteInactiveWorkflow: ({ entityId, opts }: {
            entityId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllWorkflows: ({ workflowName, opts }: {
            workflowName?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<DeprecatedWorkflow[]>>;
        getDefaultEditor: ({ opts }: WithRequestOpts<TClient>) => Promise<JiraResult<DefaultWorkflowEditorResponse>>;
        getProjectUsagesForWorkflow: ({ workflowId, nextPageToken, maxResults, opts }: {
            workflowId: string;
            nextPageToken?: string;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowProjectUsageDto>>;
        getWorkflowProjectIssueTypeUsages: ({ workflowId, projectId, nextPageToken, maxResults, opts }: {
            workflowId: string;
            projectId: number;
            nextPageToken?: string;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowProjectIssueTypeUsageDto>>;
        getWorkflowSchemeUsagesForWorkflow: ({ workflowId, nextPageToken, maxResults, opts }: {
            workflowId: string;
            nextPageToken?: string;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowSchemeUsageDto>>;
        getWorkflowsPaginated: ({ startAt, maxResults, workflowName, expand, queryString, orderBy, isActive, opts }: {
            startAt?: number;
            maxResults?: number;
            workflowName?: string[];
            expand?: string;
            queryString?: string;
            orderBy?: "name" | "-name" | "+name" | "created" | "-created" | "+created" | "updated" | "+updated" | "-updated";
            isActive?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanWorkflow>>;
        readWorkflows: ({ expand, useApprovalConfiguration, workflowReadRequest, opts }: {
            expand?: string;
            useApprovalConfiguration?: boolean;
            workflowReadRequest: WorkflowReadRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowReadResponse>>;
        searchWorkflows: ({ startAt, maxResults, expand, queryString, orderBy, scope, isActive, opts }: {
            startAt?: number;
            maxResults?: number;
            expand?: string;
            queryString?: string;
            orderBy?: string;
            scope?: string;
            isActive?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowSearchResponse>>;
        updateWorkflows: ({ expand, workflowUpdateRequest, opts }: {
            expand?: string;
            workflowUpdateRequest: WorkflowUpdateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowUpdateResponse>>;
        validateCreateWorkflows: ({ workflowCreateValidateRequest, opts }: {
            workflowCreateValidateRequest: WorkflowCreateValidateRequest;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowValidationErrorList>>;
        validateUpdateWorkflows: ({ workflowUpdateValidateRequestBean, opts }: {
            workflowUpdateValidateRequestBean: WorkflowUpdateValidateRequestBean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowValidationErrorList>>;
        workflowCapabilities: ({ workflowId, projectId, issueTypeId, opts }: {
            workflowId?: string;
            projectId?: string;
            issueTypeId?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowCapabilities>>;
    };
    /**
     * This resource represents status categories. Use it to obtain a list of all
     * status categories and the details of a category. Status categories provided a
     * mechanism for categorizing [statuses](#api-group-Workflow-statuses).
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-status-categories
     */
    get workflowStatusCategories(): {
        getStatusCategories: ({ opts }: WithRequestOpts<TClient>) => Promise<JiraResult<StatusCategory[]>>;
        getStatusCategory: ({ idOrKey, opts }: {
            idOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<StatusCategory>>;
    };
    /**
     * This resource represents issue workflow statuses. Use it to obtain a list of
     * all statuses associated with workflows and the details of a status.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-statuses
     */
    get workflowStatuses(): {
        getStatus: ({ idOrName, opts }: {
            idOrName: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<StatusDetails>>;
        getStatuses: ({ opts }: WithRequestOpts<TClient>) => Promise<JiraResult<StatusDetails[]>>;
    };
    /**
     * This resource represents workflow transition properties, which provides for
     * storing custom data against a workflow transition. Use it to get, create, and
     * delete workflow transition properties as well as get a list of property keys
     * for a workflow transition. Workflow transition properties are a type of [entity
     * property](https://developer.atlassian.com/cloud/jira/platform/jira-entity-properties/).
     *
     * @deprecated
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-properties
     */
    get workflowTransitionProperties(): {
        createWorkflowTransitionProperty: ({ transitionId, key, workflowName, workflowMode, workflowTransitionProperty, opts }: {
            transitionId: number;
            key: string;
            workflowName: string;
            workflowMode?: "live" | "draft";
            workflowTransitionProperty: WorkflowTransitionProperty;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowTransitionProperty>>;
        deleteWorkflowTransitionProperty: ({ transitionId, key, workflowName, workflowMode, opts }: {
            transitionId: number;
            key: string;
            workflowName: string;
            workflowMode?: "live" | "draft";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getWorkflowTransitionProperties: ({ transitionId, includeReservedKeys, key, workflowName, workflowMode, opts }: {
            transitionId: number;
            includeReservedKeys?: boolean;
            key?: string;
            workflowName: string;
            workflowMode?: "live" | "draft";
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowTransitionProperty>>;
        updateWorkflowTransitionProperty: ({ transitionId, key, workflowName, workflowMode, workflowTransitionProperty, opts }: {
            transitionId: number;
            key: string;
            workflowName: string;
            workflowMode?: "live" | "draft";
            workflowTransitionProperty: WorkflowTransitionProperty;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowTransitionProperty>>;
    };
    /**
     * This resource represents workflow transition rules. Workflow transition rules
     * define a Connect or a Forge app routine, such as a [workflow post
     * functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/)
     * that is executed in association with the workflow. Use it to read and modify
     * configuration of workflow transition rules.
     *
     * @see https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-rules
     */
    get workflowTransitionRules(): {
        deleteWorkflowTransitionRuleConfigurations: ({ workflowsWithTransitionRulesDetails, opts }: {
            workflowsWithTransitionRulesDetails: WorkflowsWithTransitionRulesDetails;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowTransitionRulesUpdateErrors>>;
        getWorkflowTransitionRuleConfigurations: ({ startAt, maxResults, types, keys, workflowNames, withTags, draft, expand, opts }: {
            startAt?: number;
            maxResults?: number;
            types: ("postfunction" | "condition" | "validator")[];
            keys?: string[];
            workflowNames?: string[];
            withTags?: string[];
            draft?: boolean;
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PageBeanWorkflowTransitionRules>>;
        updateWorkflowTransitionRuleConfigurations: ({ workflowTransitionRulesUpdate, opts }: {
            workflowTransitionRulesUpdate: WorkflowTransitionRulesUpdate;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<WorkflowTransitionRulesUpdateErrors>>;
    };
    get servicedesk(): {
        addCustomers: ({ serviceDeskId, serviceDeskCustomerDto, opts }: {
            serviceDeskId: string;
            serviceDeskCustomerDto: ServiceDeskCustomerDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        attachTemporaryFile: ({ serviceDeskId, multipartFiles, opts }: {
            serviceDeskId: string;
            multipartFiles: MultipartFile[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        checkRequestTypePermissions: ({ serviceDeskId, requestTypePermissionCheckRequestDto, opts }: {
            serviceDeskId: string;
            requestTypePermissionCheckRequestDto: RequestTypePermissionCheckRequestDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<RequestTypePermissionCheckResponse>>;
        createRequestType: ({ serviceDeskId, requestTypeCreateDto, opts }: {
            serviceDeskId: string;
            requestTypeCreateDto: RequestTypeCreateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<RequestTypeDto>>;
        deleteProperty: ({ serviceDeskId, requestTypeId, propertyKey, opts }: {
            serviceDeskId: string;
            requestTypeId: number;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteRequestType: ({ serviceDeskId, requestTypeId, opts }: {
            serviceDeskId: string;
            requestTypeId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getArticles: ({ serviceDeskId, query, highlight, start, limit, cursor, prev, opts }: {
            serviceDeskId: string;
            query: string;
            highlight?: boolean;
            start?: number;
            limit?: number;
            cursor?: string;
            prev?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoArticleDto>>;
        getCustomers: ({ serviceDeskId, query, start, limit, opts }: {
            serviceDeskId: string;
            query?: string;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoUserDto>>;
        getIssuesInQueue: ({ serviceDeskId, queueId, start, limit, opts }: {
            serviceDeskId: string;
            queueId: number;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoIssueBean>>;
        getPropertiesKeys: ({ requestTypeId, serviceDeskId, opts }: {
            requestTypeId: number;
            serviceDeskId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PropertyKeys>>;
        getProperty: ({ serviceDeskId, requestTypeId, propertyKey, opts }: {
            serviceDeskId: string;
            requestTypeId: number;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<EntityProperty>>;
        getQueue: ({ serviceDeskId, queueId, includeCount, opts }: {
            serviceDeskId: string;
            queueId: number;
            includeCount?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<QueueDto>>;
        getQueues: ({ serviceDeskId, includeCount, start, limit, opts }: {
            serviceDeskId: string;
            includeCount?: boolean;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoQueueDto>>;
        getRequestTypeById: ({ serviceDeskId, requestTypeId, expand, opts }: {
            serviceDeskId: string;
            requestTypeId: string;
            expand?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<RequestTypeDto>>;
        getRequestTypeFields: ({ serviceDeskId, requestTypeId, expand, opts }: {
            serviceDeskId: string;
            requestTypeId: number;
            expand?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CustomerRequestCreateMetaDto>>;
        getRequestTypeGroups: ({ serviceDeskId, start, limit, opts }: {
            serviceDeskId: string;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoRequestTypeGroupDto>>;
        getRequestTypes: ({ serviceDeskId, groupId, expand, searchQuery, start, limit, includeHiddenRequestTypesInSearch, restrictionStatus, opts }: {
            serviceDeskId: string;
            groupId?: number;
            expand?: string[];
            searchQuery?: string;
            start?: number;
            limit?: number;
            includeHiddenRequestTypesInSearch?: boolean;
            restrictionStatus?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoRequestTypeDto>>;
        getServiceDeskById: ({ serviceDeskId, opts }: {
            serviceDeskId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ServiceDeskDto>>;
        getServiceDesks: ({ start, limit, opts }?: {
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoServiceDeskDto>>;
        removeCustomers: ({ serviceDeskId, serviceDeskCustomerDto, opts }: {
            serviceDeskId: string;
            serviceDeskCustomerDto: ServiceDeskCustomerDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setProperty: ({ serviceDeskId, requestTypeId, propertyKey, opts }: {
            serviceDeskId: string;
            requestTypeId: number;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
    };
    get request(): {
        addRequestParticipants: ({ issueIdOrKey, requestParticipantUpdateDto, opts }: {
            issueIdOrKey: string;
            requestParticipantUpdateDto: RequestParticipantUpdateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoUserDto>>;
        answerApproval: ({ issueIdOrKey, approvalId, approvalDecisionRequestDto, opts }: {
            issueIdOrKey: string;
            approvalId: number;
            approvalDecisionRequestDto: ApprovalDecisionRequestDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ApprovalDto>>;
        createCommentWithAttachment: ({ issueIdOrKey, attachmentCreateDto, opts }: {
            issueIdOrKey: string;
            attachmentCreateDto: AttachmentCreateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<AttachmentCreateResultDto>>;
        createCustomerRequest: ({ requestCreateDto, opts }: {
            requestCreateDto: RequestCreateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CustomerRequestDto>>;
        createRequestComment: ({ issueIdOrKey, commentCreateDto, opts }: {
            issueIdOrKey: string;
            commentCreateDto: CommentCreateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CommentDto>>;
        deleteFeedback: ({ requestIdOrKey, opts }: {
            requestIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getApprovalById: ({ issueIdOrKey, approvalId, opts }: {
            issueIdOrKey: string;
            approvalId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<ApprovalDto>>;
        getApprovals: ({ issueIdOrKey, start, limit, opts }: {
            issueIdOrKey: string;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoApprovalDto>>;
        getAttachmentContent: ({ issueIdOrKey, attachmentId, opts }: {
            issueIdOrKey: string;
            attachmentId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getAttachmentsForRequest: ({ issueIdOrKey, start, limit, opts }: {
            issueIdOrKey: string;
            start: number;
            limit: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoAttachmentDto>>;
        getAttachmentThumbnail: ({ issueIdOrKey, attachmentId, opts }: {
            issueIdOrKey: string;
            attachmentId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getCommentAttachments: ({ issueIdOrKey, commentId, start, limit, opts }: {
            issueIdOrKey: string;
            commentId: number;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoAttachmentDto>>;
        getCustomerRequestByIdOrKey: ({ issueIdOrKey, expand, opts }: {
            issueIdOrKey: string;
            expand?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CustomerRequestDto>>;
        getCustomerRequests: ({ searchTerm, requestOwnership, requestStatus, approvalStatus, organizationId, serviceDeskId, requestTypeId, expand, start, limit, opts }?: {
            searchTerm?: string;
            requestOwnership?: string[];
            requestStatus?: string;
            approvalStatus?: string;
            organizationId?: number;
            serviceDeskId?: number;
            requestTypeId?: number;
            expand?: string[];
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoCustomerRequestDto>>;
        getCustomerRequestStatus: ({ issueIdOrKey, start, limit, opts }: {
            issueIdOrKey: string;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoCustomerRequestStatusDto>>;
        getCustomerTransitions: ({ issueIdOrKey, start, limit, opts }: {
            issueIdOrKey: string;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoCustomerTransitionDto>>;
        getFeedback: ({ requestIdOrKey, opts }: {
            requestIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CsatFeedbackFullDto>>;
        getRequestCommentById: ({ issueIdOrKey, commentId, expand, opts }: {
            issueIdOrKey: string;
            commentId: number;
            expand?: string[];
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CommentDto>>;
        getRequestComments: ({ issueIdOrKey, public: publicQuery, internal, expand, start, limit, opts }: {
            issueIdOrKey: string;
            public?: boolean;
            internal?: boolean;
            expand?: string[];
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoCommentDto>>;
        getRequestParticipants: ({ issueIdOrKey, start, limit, opts }: {
            issueIdOrKey: string;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoUserDto>>;
        getSlaInformation: ({ issueIdOrKey, start, limit, opts }: {
            issueIdOrKey: string;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoSlaInformationDto>>;
        getSlaInformationById: ({ issueIdOrKey, slaMetricId, opts }: {
            issueIdOrKey: string;
            slaMetricId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SlaInformationDto>>;
        getSubscriptionStatus: ({ issueIdOrKey, opts }: {
            issueIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<RequestNotificationSubscriptionDto>>;
        performCustomerTransition: ({ issueIdOrKey, customerTransitionExecutionDto, opts }: {
            issueIdOrKey: string;
            customerTransitionExecutionDto: CustomerTransitionExecutionDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        postFeedback: ({ requestIdOrKey, csatFeedbackFullDto, opts }: {
            requestIdOrKey: string;
            csatFeedbackFullDto: CsatFeedbackFullDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<CsatFeedbackFullDto>>;
        removeRequestParticipants: ({ issueIdOrKey, requestParticipantUpdateDto, opts }: {
            issueIdOrKey: string;
            requestParticipantUpdateDto: RequestParticipantUpdateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoUserDto>>;
        subscribe: ({ issueIdOrKey, opts }: {
            issueIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        unsubscribe: ({ issueIdOrKey, opts }: {
            issueIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    get customer(): {
        createCustomer: ({ strictConflictStatusCode, customerCreateDto, opts }: {
            strictConflictStatusCode?: boolean;
            customerCreateDto: CustomerCreateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<UserDto>>;
    };
    get assets(): {
        getAssetsWorkspaces: ({ start, limit, opts }: {
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoAssetsWorkspaceDto>>;
        getInsightWorkspaces: ({ start, limit, opts }: {
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoInsightWorkspaceDto>>;
    };
    get info(): {
        getInfo: ({ opts }?: WithRequestOpts<TClient>) => Promise<JiraResult<SoftwareInfoDto>>;
    };
    get knowledgebase(): {
        getArticles: ({ query, highlight, start, limit, cursor, prev, opts }: {
            query: string;
            highlight: boolean;
            start?: number;
            limit?: number;
            cursor?: string;
            prev?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoArticleDto>>;
    };
    get organization(): {
        addOrganization: ({ serviceDeskId, organizationServiceDeskUpdateDto, opts }: {
            serviceDeskId: string;
            organizationServiceDeskUpdateDto: OrganizationServiceDeskUpdateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        addUsersToOrganization: ({ organizationId, usersOrganizationUpdateDto, opts }: {
            organizationId: number;
            usersOrganizationUpdateDto: UsersOrganizationUpdateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        createOrganization: ({ organizationCreateDto, opts }: {
            organizationCreateDto: OrganizationCreateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<OrganizationDto>>;
        deleteOrganization: ({ organizationId, opts }: {
            organizationId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteProperty: ({ organizationId, propertyKey, opts }: {
            organizationId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getOrganization: ({ organizationId, opts }: {
            organizationId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<OrganizationDto>>;
        getOrganizations: ({ start, limit, accountId, opts }?: {
            start?: number;
            limit?: number;
            accountId?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoOrganizationDto>>;
        getOrganizationsByServiceDeskId: ({ serviceDeskId, start, limit, accountId, opts }: {
            serviceDeskId: string;
            start?: number;
            limit?: number;
            accountId?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoOrganizationDto>>;
        getPropertiesKeys: ({ organizationId, opts }: {
            organizationId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PropertyKeys>>;
        getProperty: ({ organizationId, propertyKey, opts }: {
            organizationId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<EntityProperty>>;
        getUsersInOrganization: ({ organizationId, start, limit, opts }: {
            organizationId: number;
            start?: number;
            limit?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoUserDto>>;
        removeOrganization: ({ serviceDeskId, organizationServiceDeskUpdateDto, opts }: {
            serviceDeskId: string;
            organizationServiceDeskUpdateDto: OrganizationServiceDeskUpdateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        removeUsersFromOrganization: ({ organizationId, usersOrganizationUpdateDto, opts }: {
            organizationId: number;
            usersOrganizationUpdateDto: UsersOrganizationUpdateDto;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        setProperty: ({ organizationId, propertyKey, requestBody, opts }: {
            organizationId: string;
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
    };
    get requestType(): {
        getAllRequestTypes: ({ searchQuery, serviceDeskId, start, limit, expand, includeHiddenRequestTypesInSearch, restrictionStatus, opts }?: {
            searchQuery?: string;
            serviceDeskId?: number[];
            start?: number;
            limit?: number;
            expand?: string[];
            includeHiddenRequestTypesInSearch?: boolean;
            restrictionStatus?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<PagedDtoRequestTypeDto>>;
    };
    get backlog(): {
        moveIssuesToBacklog: ({ requestBody, opts }: {
            requestBody: {
                issues?: string[];
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        moveIssuesToBacklogForBoard: ({ boardId, requestBody, opts }: {
            boardId: number;
            requestBody: {
                issues?: string[];
                rankAfterIssue?: string;
                rankBeforeIssue?: string;
                rankCustomFieldId?: number;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
    get boardIssue(): {
        estimateIssueForBoard: ({ issueIdOrKey, boardId, requestBody, opts }: {
            issueIdOrKey: string;
            boardId?: number;
            requestBody: {
                value?: string;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getIssue: ({ issueIdOrKey, fields, expand, updateHistory, opts }: {
            issueIdOrKey: string;
            fields?: {}[];
            expand?: string;
            updateHistory?: boolean;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getIssueEstimationForBoard: ({ issueIdOrKey, boardId, opts }: {
            issueIdOrKey: string;
            boardId?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        rankIssues: ({ requestBody, opts }: {
            requestBody: {
                issues?: string[];
                rankAfterIssue?: string;
                rankBeforeIssue?: string;
                rankCustomFieldId?: number;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
    get board(): {
        createBoard: ({ requestBody, opts }: {
            requestBody: {
                filterId?: number;
                location?: {
                    projectKeyOrId?: string;
                    type?: "project" | "user";
                };
                name?: string;
                type?: "kanban" | "scrum" | "agility";
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            admins?: {
                groups?: {
                    name?: string;
                    self?: string;
                }[];
                users?: {
                    accountId?: string;
                    active?: boolean;
                    avatarUrls?: {
                        "16x16"?: string;
                        "24x24"?: string;
                        "32x32"?: string;
                        "48x48"?: string;
                    };
                    displayName?: string;
                    key?: string;
                    name?: string;
                    self?: string;
                }[];
            };
            canEdit?: boolean;
            favourite?: boolean;
            id?: number;
            isPrivate?: boolean;
            location?: {
                avatarURI?: string;
                displayName?: string;
                name?: string;
                projectId?: number;
                projectKey?: string;
                projectName?: string;
                projectTypeKey?: string;
                userAccountId?: string;
                userId?: number;
            };
            name?: string;
            self?: string;
            type?: string;
        }>>;
        deleteBoard: ({ boardId, opts }: {
            boardId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteBoardProperty: ({ boardId, propertyKey, opts }: {
            boardId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getAllBoards: ({ startAt, maxResults, type, name, projectKeyOrId, accountIdLocation, projectLocation, includePrivate, negateLocationFiltering, orderBy, expand, projectTypeLocation, filterId, opts }?: {
            startAt?: number;
            maxResults?: number;
            type?: {};
            name?: string;
            projectKeyOrId?: string;
            accountIdLocation?: string;
            projectLocation?: string;
            includePrivate?: boolean;
            negateLocationFiltering?: boolean;
            orderBy?: "name" | "-name" | "+name";
            expand?: string;
            projectTypeLocation?: string[];
            filterId?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            isLast?: boolean;
            maxResults?: number;
            startAt?: number;
            total?: number;
            values?: {
                admins?: {
                    groups?: {
                        name?: string;
                        self?: string;
                    }[];
                    users?: {
                        accountId?: string;
                        active?: boolean;
                        avatarUrls?: {
                            "16x16"?: string;
                            "24x24"?: string;
                            "32x32"?: string;
                            "48x48"?: string;
                        };
                        displayName?: string;
                        key?: string;
                        name?: string;
                        self?: string;
                    }[];
                };
                canEdit?: boolean;
                favourite?: boolean;
                id?: number;
                isPrivate?: boolean;
                location?: {
                    avatarURI?: string;
                    displayName?: string;
                    name?: string;
                    projectId?: number;
                    projectKey?: string;
                    projectName?: string;
                    projectTypeKey?: string;
                    userAccountId?: string;
                    userId?: number;
                };
                name?: string;
                self?: string;
                type?: string;
            }[];
        }>>;
        getAllQuickFilters: ({ boardId, startAt, maxResults, opts }: {
            boardId: number;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            isLast?: boolean;
            maxResults?: number;
            startAt?: number;
            total?: number;
            values?: {
                boardId?: number;
                description?: string;
                id?: number;
                jql?: string;
                name?: string;
                position?: number;
            }[];
        }>>;
        getAllSprints: ({ boardId, startAt, maxResults, state, opts }: {
            boardId: number;
            startAt?: number;
            maxResults?: number;
            state?: {};
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getAllVersions: ({ boardId, startAt, maxResults, released, opts }: {
            boardId: number;
            startAt?: number;
            maxResults?: number;
            released?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getBoard: ({ boardId, opts }: {
            boardId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            admins?: {
                groups?: {
                    name?: string;
                    self?: string;
                }[];
                users?: {
                    accountId?: string;
                    active?: boolean;
                    avatarUrls?: {
                        "16x16"?: string;
                        "24x24"?: string;
                        "32x32"?: string;
                        "48x48"?: string;
                    };
                    displayName?: string;
                    key?: string;
                    name?: string;
                    self?: string;
                }[];
            };
            canEdit?: boolean;
            favourite?: boolean;
            id?: number;
            isPrivate?: boolean;
            location?: {
                avatarURI?: string;
                displayName?: string;
                name?: string;
                projectId?: number;
                projectKey?: string;
                projectName?: string;
                projectTypeKey?: string;
                userAccountId?: string;
                userId?: number;
            };
            name?: string;
            self?: string;
            type?: string;
        }>>;
        getBoardByFilterId: ({ filterId, startAt, maxResults, opts }: {
            filterId: number;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            isLast?: boolean;
            maxResults?: number;
            startAt?: number;
            total?: number;
            values?: {
                id?: number;
                name?: string;
                self?: string;
            }[];
        }>>;
        getBoardIssuesForEpic: ({ boardId, epicId, startAt, maxResults, jql, validateQuery, fields, expand, opts }: {
            boardId: number;
            epicId: number;
            startAt?: number;
            maxResults?: number;
            jql?: string;
            validateQuery?: boolean;
            fields?: {}[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getBoardIssuesForSprint: ({ boardId, sprintId, startAt, maxResults, jql, validateQuery, fields, expand, opts }: {
            boardId: number;
            sprintId: number;
            startAt?: number;
            maxResults?: number;
            jql?: string;
            validateQuery?: boolean;
            fields?: {}[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getBoardProperty: ({ boardId, propertyKey, opts }: {
            boardId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getBoardPropertyKeys: ({ boardId, opts }: {
            boardId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getConfiguration: ({ boardId, opts }: {
            boardId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            columnConfig?: {
                columns?: {
                    max?: number;
                    min?: number;
                    name?: string;
                    statuses?: {
                        id?: string;
                        self?: string;
                    }[];
                }[];
                constraintType?: string;
            };
            estimation?: {
                field?: {
                    displayName?: string;
                    fieldId?: string;
                };
                type?: string;
            };
            filter?: {
                id?: string;
                self?: string;
            };
            id?: number;
            location?: {
                projectKeyOrId?: string;
                type?: "project" | "user";
            };
            name?: string;
            ranking?: {
                rankCustomFieldId?: number;
            };
            self?: string;
            subQuery?: {
                query?: string;
            };
            type?: string;
        }>>;
        getEpics: ({ boardId, startAt, maxResults, done, opts }: {
            boardId: number;
            startAt?: number;
            maxResults?: number;
            done?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getFeaturesForBoard: ({ boardId, opts }: {
            boardId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            features?: {
                boardFeature?: "SIMPLE_ROADMAP" | "BACKLOG" | "SPRINTS" | "CALENDAR" | "DEVTOOLS" | "REPORTS" | "ESTIMATION" | "PAGES" | "CODE" | "SECURITY" | "REQUESTS" | "INCIDENTS" | "RELEASES" | "DEPLOYMENTS" | "ISSUE_NAVIGATOR" | "ON_CALL_SCHEDULE" | "BOARD" | "GOALS" | "LIST_VIEW";
                boardId?: number;
                featureId?: string;
                featureType?: "BASIC" | "ESTIMATION";
                imageUri?: string;
                learnMoreArticleId?: string;
                learnMoreLink?: string;
                localisedDescription?: string;
                localisedGroup?: string;
                localisedName?: string;
                permissibleEstimationTypes?: {
                    localisedDescription?: string;
                    localisedName?: string;
                    value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE";
                }[];
                state?: "ENABLED" | "DISABLED" | "COMING_SOON";
                toggleLocked?: boolean;
            }[];
        }>>;
        getIssuesForBacklog: ({ boardId, startAt, maxResults, jql, validateQuery, fields, expand, opts }: {
            boardId: number;
            startAt?: number;
            maxResults?: number;
            jql?: string;
            validateQuery?: boolean;
            fields?: {}[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SearchResults>>;
        getIssuesForBoard: ({ boardId, startAt, maxResults, jql, validateQuery, fields, expand, opts }: {
            boardId: number;
            startAt?: number;
            maxResults?: number;
            jql?: string;
            validateQuery?: boolean;
            fields?: {}[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<SearchResults>>;
        getIssuesWithoutEpicForBoard: ({ boardId, startAt, maxResults, jql, validateQuery, fields, expand, opts }: {
            boardId: number;
            startAt?: number;
            maxResults?: number;
            jql?: string;
            validateQuery?: boolean;
            fields?: {}[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getProjects: ({ boardId, startAt, maxResults, opts }: {
            boardId: number;
            startAt?: number;
            maxResults?: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getProjectsFull: ({ boardId, opts }: {
            boardId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getQuickFilter: ({ boardId, quickFilterId, opts }: {
            boardId: number;
            quickFilterId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            boardId?: number;
            description?: string;
            id?: number;
            jql?: string;
            name?: string;
            position?: number;
        }>>;
        getReportsForBoard: ({ boardId, opts }: {
            boardId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            reports?: {}[];
        }>>;
        moveIssuesToBoard: ({ boardId, requestBody, opts }: {
            boardId: number;
            requestBody: {
                issues?: string[];
                rankAfterIssue?: string;
                rankBeforeIssue?: string;
                rankCustomFieldId?: number;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            entries?: {
                errors?: string[];
                issueId?: number;
                issueKey?: string;
                status?: number;
            }[];
        }>>;
        setBoardProperty: ({ boardId, propertyKey, requestBody, opts }: {
            boardId: string;
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
        toggleFeatures: ({ boardId, requestBody, opts }: {
            boardId: number;
            requestBody: {
                boardId?: number;
                enabling?: boolean;
                feature?: string;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            features?: {
                boardFeature?: "SIMPLE_ROADMAP" | "BACKLOG" | "SPRINTS" | "CALENDAR" | "DEVTOOLS" | "REPORTS" | "ESTIMATION" | "PAGES" | "CODE" | "SECURITY" | "REQUESTS" | "INCIDENTS" | "RELEASES" | "DEPLOYMENTS" | "ISSUE_NAVIGATOR" | "ON_CALL_SCHEDULE" | "BOARD" | "GOALS" | "LIST_VIEW";
                boardId?: number;
                featureId?: string;
                featureType?: "BASIC" | "ESTIMATION";
                imageUri?: string;
                learnMoreArticleId?: string;
                learnMoreLink?: string;
                localisedDescription?: string;
                localisedGroup?: string;
                localisedName?: string;
                permissibleEstimationTypes?: {
                    localisedDescription?: string;
                    localisedName?: string;
                    value?: "STORY_POINTS" | "ORIGINAL_ESTIMATE";
                }[];
                state?: "ENABLED" | "DISABLED" | "COMING_SOON";
                toggleLocked?: boolean;
            }[];
        }>>;
    };
    get builds(): {
        deleteBuildByKey: ({ pipelineId, buildNumber, updateSequenceNumber, authorization, opts }: {
            pipelineId: string;
            buildNumber: number;
            updateSequenceNumber?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteBuildsByProperty: ({ updateSequenceNumber, authorization, opts }: {
            updateSequenceNumber?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getBuildByKey: ({ pipelineId, buildNumber, authorization, opts }: {
            pipelineId: string;
            buildNumber: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        submitBuilds: ({ authorization, requestBody, opts }: {
            authorization: string;
            requestBody: {
                properties?: {
                    [key: string]: string;
                };
                builds: unknown[];
                providerMetadata?: {
                    product?: string;
                } & {
                    [key: string]: unknown;
                };
            } & {
                [key: string]: unknown;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            acceptedBuilds?: ({
                pipelineId: string;
                buildNumber: number;
            } & {
                [key: string]: unknown;
            })[];
            rejectedBuilds?: ({
                key: {
                    pipelineId: string;
                    buildNumber: number;
                } & {
                    [key: string]: unknown;
                };
                errors: ({
                    message: string;
                    errorTraceId?: string;
                } & {
                    [key: string]: unknown;
                })[];
            } & {
                [key: string]: unknown;
            })[];
            unknownIssueKeys?: string[];
            unknownAssociations?: IssueIdOrKeysAssociation[];
        } & {
            [key: string]: unknown;
        }>>;
    };
    get deployments(): {
        deleteDeploymentByKey: ({ pipelineId, environmentId, deploymentSequenceNumber, updateSequenceNumber, authorization, opts }: {
            pipelineId: string;
            environmentId: string;
            deploymentSequenceNumber: number;
            updateSequenceNumber?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteDeploymentsByProperty: ({ updateSequenceNumber, authorization, opts }: {
            updateSequenceNumber?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getDeploymentByKey: ({ pipelineId, environmentId, deploymentSequenceNumber, authorization, opts }: {
            pipelineId: string;
            environmentId: string;
            deploymentSequenceNumber: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getDeploymentGatingStatusByKey: ({ pipelineId, environmentId, deploymentSequenceNumber, opts }: {
            pipelineId: string;
            environmentId: string;
            deploymentSequenceNumber: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        submitDeployments: ({ authorization, requestBody, opts }: {
            authorization: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
    get developmentInformation(): {
        deleteByProperties: ({ updateSequenceId, authorization, opts }: {
            updateSequenceId?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteEntity: ({ repositoryId, entityType, entityId, updateSequenceId, authorization, opts }: {
            repositoryId: string;
            entityType: "commit" | "branch" | "pull_request";
            entityId: string;
            updateSequenceId?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteRepository: ({ repositoryId, updateSequenceId, authorization, opts }: {
            repositoryId: string;
            updateSequenceId?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        existsByProperties: ({ updateSequenceId, authorization, opts }: {
            updateSequenceId?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            hasDataMatchingProperties?: boolean;
        } & {
            [key: string]: unknown;
        }>>;
        getRepository: ({ repositoryId, authorization, opts }: {
            repositoryId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            name: string;
            description?: string;
            forkOf?: string;
            url: string;
            commits?: ({
                id: string;
                issueKeys?: string[];
                associations?: IssueIdOrKeysAssociation[];
                updateSequenceId: number;
                hash?: string;
                flags?: "MERGE_COMMIT"[];
                message: string;
                author: {
                    name?: string;
                    email?: string;
                    username?: string;
                    url?: string;
                    avatar?: string;
                } & {
                    [key: string]: unknown;
                };
                fileCount: number;
                url: string;
                files?: ({
                    path: string;
                    url: string;
                    changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN";
                    linesAdded: number;
                    linesRemoved: number;
                } & {
                    [key: string]: unknown;
                })[];
                authorTimestamp: string;
                displayId: string;
            } & {
                [key: string]: unknown;
            })[];
            branches?: ({
                id: string;
                issueKeys?: string[];
                associations?: IssueIdOrKeysAssociation[];
                updateSequenceId: number;
                name: string;
                lastCommit: {
                    id: string;
                    issueKeys: string[];
                    updateSequenceId: number;
                    hash?: string;
                    flags?: "MERGE_COMMIT"[];
                    message: string;
                    author: {
                        name?: string;
                        email?: string;
                        username?: string;
                        url?: string;
                        avatar?: string;
                    } & {
                        [key: string]: unknown;
                    };
                    fileCount: number;
                    url: string;
                    files?: ({
                        path: string;
                        url: string;
                        changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN";
                        linesAdded: number;
                        linesRemoved: number;
                    } & {
                        [key: string]: unknown;
                    })[];
                    authorTimestamp: string;
                    displayId: string;
                } & {
                    [key: string]: unknown;
                };
                createPullRequestUrl?: string;
                url: string;
            } & {
                [key: string]: unknown;
            })[];
            pullRequests?: ({
                id: string;
                issueKeys?: string[];
                associations?: IssueIdOrKeysAssociation[];
                updateSequenceId: number;
                status: "OPEN" | "MERGED" | "DECLINED" | "UNKNOWN";
                title: string;
                author: {
                    name?: string;
                    email?: string;
                    username?: string;
                    url?: string;
                    avatar?: string;
                } & {
                    [key: string]: unknown;
                };
                commentCount: number;
                sourceBranch: string;
                sourceBranchUrl?: string;
                lastUpdate: string;
                destinationBranch?: string;
                destinationBranchUrl?: string;
                reviewers?: ({
                    name?: string;
                    approvalStatus?: "APPROVED" | "UNAPPROVED";
                    url?: string;
                    avatar?: string;
                    email?: string;
                    accountId?: string;
                } & {
                    [key: string]: unknown;
                })[];
                url: string;
                displayId: string;
            } & {
                [key: string]: unknown;
            })[];
            avatar?: string;
            avatarDescription?: string;
            id: string;
            updateSequenceId: number;
        } & {
            [key: string]: unknown;
        }>>;
        storeDevelopmentInformation: ({ authorization, requestBody, opts }: {
            authorization: string;
            requestBody: {
                repositories: ({
                    name: string;
                    description?: string;
                    forkOf?: string;
                    url: string;
                    commits?: ({
                        id: string;
                        issueKeys?: string[];
                        associations?: IssueIdOrKeysAssociation[];
                        updateSequenceId: number;
                        hash?: string;
                        flags?: "MERGE_COMMIT"[];
                        message: string;
                        author: {
                            name?: string;
                            email?: string;
                            username?: string;
                            url?: string;
                            avatar?: string;
                        } & {
                            [key: string]: unknown;
                        };
                        fileCount: number;
                        url: string;
                        files?: ({
                            path: string;
                            url: string;
                            changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN";
                            linesAdded: number;
                            linesRemoved: number;
                        } & {
                            [key: string]: unknown;
                        })[];
                        authorTimestamp: string;
                        displayId: string;
                    } & {
                        [key: string]: unknown;
                    })[];
                    branches?: ({
                        id: string;
                        issueKeys?: string[];
                        associations?: IssueIdOrKeysAssociation[];
                        updateSequenceId: number;
                        name: string;
                        lastCommit: {
                            id: string;
                            issueKeys: string[];
                            updateSequenceId: number;
                            hash?: string;
                            flags?: "MERGE_COMMIT"[];
                            message: string;
                            author: {
                                name?: string;
                                email?: string;
                                username?: string;
                                url?: string;
                                avatar?: string;
                            } & {
                                [key: string]: unknown;
                            };
                            fileCount: number;
                            url: string;
                            files?: ({
                                path: string;
                                url: string;
                                changeType: "ADDED" | "COPIED" | "DELETED" | "MODIFIED" | "MOVED" | "UNKNOWN";
                                linesAdded: number;
                                linesRemoved: number;
                            } & {
                                [key: string]: unknown;
                            })[];
                            authorTimestamp: string;
                            displayId: string;
                        } & {
                            [key: string]: unknown;
                        };
                        createPullRequestUrl?: string;
                        url: string;
                    } & {
                        [key: string]: unknown;
                    })[];
                    pullRequests?: ({
                        id: string;
                        issueKeys?: string[];
                        associations?: IssueIdOrKeysAssociation[];
                        updateSequenceId: number;
                        status: "OPEN" | "MERGED" | "DECLINED" | "UNKNOWN";
                        title: string;
                        author: {
                            name?: string;
                            email?: string;
                            username?: string;
                            url?: string;
                            avatar?: string;
                        } & {
                            [key: string]: unknown;
                        };
                        commentCount: number;
                        sourceBranch: string;
                        sourceBranchUrl?: string;
                        lastUpdate: string;
                        destinationBranch?: string;
                        destinationBranchUrl?: string;
                        reviewers?: ({
                            name?: string;
                            approvalStatus?: "APPROVED" | "UNAPPROVED";
                            url?: string;
                            avatar?: string;
                            email?: string;
                            accountId?: string;
                        } & {
                            [key: string]: unknown;
                        })[];
                        url: string;
                        displayId: string;
                    } & {
                        [key: string]: unknown;
                    })[];
                    avatar?: string;
                    avatarDescription?: string;
                    id: string;
                    updateSequenceId: number;
                } & {
                    [key: string]: unknown;
                })[];
                preventTransitions?: boolean;
                operationType?: "NORMAL" | "BACKFILL";
                properties?: {
                    [key: string]: string;
                };
                providerMetadata?: {
                    product?: string;
                } & {
                    [key: string]: unknown;
                };
            } & {
                [key: string]: unknown;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            acceptedDevinfoEntities?: {
                [entityIds: string]: {
                    commits?: string[];
                    branches?: string[];
                    pullRequests?: string[];
                } & {
                    [key: string]: unknown;
                };
            };
            failedDevinfoEntities?: {
                [repositoryErrors: string]: {
                    errorMessages?: ({
                        message: string;
                        errorTraceId?: string;
                    } & {
                        [key: string]: unknown;
                    })[];
                    commits?: ({
                        id: string;
                        errorMessages?: ({
                            message: string;
                            errorTraceId?: string;
                        } & {
                            [key: string]: unknown;
                        })[];
                    } & {
                        [key: string]: unknown;
                    })[];
                    branches?: ({
                        id: string;
                        errorMessages?: ({
                            message: string;
                            errorTraceId?: string;
                        } & {
                            [key: string]: unknown;
                        })[];
                    } & {
                        [key: string]: unknown;
                    })[];
                    pullRequests?: ({
                        id: string;
                        errorMessages?: ({
                            message: string;
                            errorTraceId?: string;
                        } & {
                            [key: string]: unknown;
                        })[];
                    } & {
                        [key: string]: unknown;
                    })[];
                } & {
                    [key: string]: unknown;
                };
            };
            unknownIssueKeys?: string[];
            unknownAssociations?: IssueIdOrKeysAssociation[];
        } & {
            [key: string]: unknown;
        }>>;
    };
    get devOpsComponents(): {
        deleteComponentById: ({ componentId, authorization, opts }: {
            componentId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteComponentsByProperty: ({ authorization, opts }: {
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getComponentById: ({ componentId, authorization, opts }: {
            componentId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        submitComponents: ({ authorization, requestBody, opts }: {
            authorization: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
    get epic(): {
        getEpic: ({ epicIdOrKey, opts }: {
            epicIdOrKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getIssuesForEpic: ({ epicIdOrKey, startAt, maxResults, jql, validateQuery, fields, expand, opts }: {
            epicIdOrKey: string;
            startAt?: number;
            maxResults?: number;
            jql?: string;
            validateQuery?: boolean;
            fields?: {}[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getIssuesWithoutEpic: ({ startAt, maxResults, jql, validateQuery, fields, expand, opts }?: {
            startAt?: number;
            maxResults?: number;
            jql?: string;
            validateQuery?: boolean;
            fields?: {}[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        moveIssuesToEpic: ({ epicIdOrKey, requestBody, opts }: {
            epicIdOrKey: string;
            requestBody: {
                issues?: string[];
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        partiallyUpdateEpic: ({ epicIdOrKey, requestBody, opts }: {
            epicIdOrKey: string;
            requestBody: {
                color?: {
                    key?: "color_1" | "color_2" | "color_3" | "color_4" | "color_5" | "color_6" | "color_7" | "color_8" | "color_9" | "color_10" | "color_11" | "color_12" | "color_13" | "color_14";
                };
                done?: boolean;
                name?: string;
                summary?: string;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        rankEpics: ({ epicIdOrKey, requestBody, opts }: {
            epicIdOrKey: string;
            requestBody: {
                rankAfterEpic?: string;
                rankBeforeEpic?: string;
                rankCustomFieldId?: number;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        removeIssuesFromEpic: ({ requestBody, opts }: {
            requestBody: {
                issues?: string[];
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    get featureFlags(): {
        deleteFeatureFlagById: ({ featureFlagId, updateSequenceId, authorization, opts }: {
            featureFlagId: string;
            updateSequenceId?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteFeatureFlagsByProperty: ({ updateSequenceId, authorization, opts }: {
            updateSequenceId?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getFeatureFlagById: ({ featureFlagId, authorization, opts }: {
            featureFlagId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        submitFeatureFlags: ({ authorization, requestBody, opts }: {
            authorization: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
    get operations(): {
        deleteEntityByProperty: ({ authorization, opts }: {
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteIncidentById: ({ incidentId, authorization, opts }: {
            incidentId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteReviewById: ({ reviewId, authorization, opts }: {
            reviewId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteWorkspaces: ({ authorization, opts }: {
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getIncidentById: ({ incidentId, authorization, opts }: {
            incidentId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getReviewById: ({ reviewId, authorization, opts }: {
            reviewId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getWorkspaces: ({ authorization, opts }: {
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        submitEntity: ({ authorization, requestBody, opts }: {
            authorization: string;
            requestBody: ({
                properties?: {
                    [key: string]: string;
                };
                providerMetadata?: {
                    product?: string;
                };
                incidents?: unknown[];
            } & {
                [key: string]: unknown;
            }) | ({
                properties?: {
                    [key: string]: string;
                };
                providerMetadata?: {
                    product?: string;
                };
                reviews?: unknown[];
            } & {
                [key: string]: unknown;
            });
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        submitOperationsWorkspaces: ({ authorization, requestBody, opts }: {
            authorization: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
    get remoteLinks(): {
        deleteRemoteLinkById: ({ remoteLinkId, updateSequenceNumber, authorization, opts }: {
            remoteLinkId: string;
            updateSequenceNumber?: number;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteRemoteLinksByProperty: ({ updateSequenceNumber, params, authorization, opts }: {
            updateSequenceNumber?: number;
            params?: {
                [key: string]: unknown;
            };
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getRemoteLinkById: ({ remoteLinkId, authorization, opts }: {
            remoteLinkId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        submitRemoteLinks: ({ authorization, requestBody, opts }: {
            authorization: string;
            requestBody: {
                properties?: {
                    [key: string]: string;
                };
                remoteLinks: unknown[];
                providerMetadata?: {
                    product?: string;
                } & {
                    [key: string]: unknown;
                };
            } & {
                [key: string]: unknown;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            acceptedRemoteLinks?: string[];
            rejectedRemoteLinks?: {
                [key: string]: ({
                    message: string;
                    errorTraceId?: string;
                } & {
                    [key: string]: unknown;
                })[];
            };
            unknownAssociations?: (IssueIdOrKeysAssociation | ServiceIdOrKeysAssociation)[];
        } & {
            [key: string]: unknown;
        }>>;
    };
    get securityInformation(): {
        deleteLinkedWorkspaces: ({ authorization, opts }: {
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteVulnerabilitiesByProperty: ({ authorization, opts }: {
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteVulnerabilityById: ({ vulnerabilityId, authorization, opts }: {
            vulnerabilityId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getLinkedWorkspaceById: ({ workspaceId, authorization, opts }: {
            workspaceId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getLinkedWorkspaces: ({ authorization, opts }: {
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getVulnerabilityById: ({ vulnerabilityId, authorization, opts }: {
            vulnerabilityId: string;
            authorization: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        submitVulnerabilities: ({ authorization, requestBody, opts }: {
            authorization: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        submitWorkspaces: ({ authorization, requestBody, opts }: {
            authorization: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
    };
    get sprint(): {
        createSprint: ({ requestBody, opts }: {
            requestBody: {
                endDate?: string;
                goal?: string;
                name?: string;
                originBoardId?: number;
                startDate?: string;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        deleteProperty: ({ sprintId, propertyKey, opts }: {
            sprintId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        deleteSprint: ({ sprintId, opts }: {
            sprintId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        getIssuesForSprint: ({ sprintId, startAt, maxResults, jql, validateQuery, fields, expand, opts }: {
            sprintId: number;
            startAt?: number;
            maxResults?: number;
            jql?: string;
            validateQuery?: boolean;
            fields?: {}[];
            expand?: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getPropertiesKeys: ({ sprintId, opts }: {
            sprintId: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getProperty: ({ sprintId, propertyKey, opts }: {
            sprintId: string;
            propertyKey: string;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        getSprint: ({ sprintId, opts }: {
            sprintId: number;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        moveIssuesToSprintAndRank: ({ sprintId, requestBody, opts }: {
            sprintId: number;
            requestBody: {
                issues?: string[];
                rankAfterIssue?: string;
                rankBeforeIssue?: string;
                rankCustomFieldId?: number;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        partiallyUpdateSprint: ({ sprintId, requestBody, opts }: {
            sprintId: number;
            requestBody: {
                completeDate?: string;
                createdDate?: string;
                endDate?: string;
                goal?: string;
                id?: number;
                name?: string;
                originBoardId?: number;
                self?: string;
                startDate?: string;
                state?: string;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
        setProperty: ({ sprintId, propertyKey, requestBody, opts }: {
            sprintId: string;
            propertyKey: string;
            requestBody: unknown;
        } & WithRequestOpts<TClient>) => Promise<JiraResult<{
            created: boolean;
            body: unknown;
        }>>;
        swapSprint: ({ sprintId, requestBody, opts }: {
            sprintId: number;
            requestBody: {
                sprintToSwapWith?: number;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<void>>;
        updateSprint: ({ sprintId, requestBody, opts }: {
            sprintId: number;
            requestBody: {
                completeDate?: string;
                createdDate?: string;
                endDate?: string;
                goal?: string;
                id?: number;
                name?: string;
                originBoardId?: number;
                self?: string;
                startDate?: string;
                state?: string;
            };
        } & WithRequestOpts<TClient>) => Promise<JiraResult<unknown>>;
    };
}

interface JiraClient {
    new (config: DefaultJiraConfig): JiraClientImpl<"default">;
    new (config: ForgeJiraConfig): JiraClientImpl<"forge">;
}
/**
 * Jira API client with dual ESM/CJS support, designed for both standard Jira REST API
 * and Atlassian Forge applications.
 *
 * @example
 * ```typescript
 * // Initialize the client once and reuse across your application
 * // jira-client-default.ts
 * const client = new JiraClient({
 *   type: "default",
 *   auth: {
 *     email: "your-email@example.com",
 *     apiToken: "your-api-token",
 *     baseUrl: "https://your-domain.atlassian.net"
 *   }
 * });
 *
 * // Use any of the available services
 * // some-file.ts
 * const issue = await client.issues.getIssue({
 *   issueKeyOrId: "PROJ-123",
 *   fields: ["summary", "description", "status"]
 * });
 * ```
 *
 * @example
 * ```typescript
 * // For Atlassian Forge applications
 * // jira-client-forge.ts
 * import api from "@forge/api";
 *
 * const client = new JiraClient({
 *   type: "forge",
 *   auth: { api }
 * });
 *
 * // Execute as app for elevated permissions
 * // some-file.ts
 * const issue = await client.issues.getIssue({
 *   issueKeyOrId: "PROJ-123",
 *   opts: { as: "app" } // by default, its "user"
 * });
 * ```
 */
declare const JiraClient: JiraClient;
type DefaultJiraClientType = JiraClientImpl<"default">;
type ForgeJiraClientType = JiraClientImpl<"forge">;

export { type ActorInputBean, type ActorsMap, type AddAtlassianTeamRequest, type AddFieldBean, type AddGroupBean, type AddNotificationsDetails, type AddSecuritySchemeLevelsRequestBean, type AdditionalCommentDto, type AnnouncementBannerConfiguration, type AnnouncementBannerConfigurationUpdate, type AppWorkflowTransitionRule, type Application, type ApplicationProperty, type ApplicationRole, type ApprovalConfiguration, type ApprovalDecisionRequestDto, type ApprovalDto, type ApproverDto, type ArchiveIssueAsyncRequest, type ArchivedIssuesFilterRequest, type ArticleDto, type AsType, type AssetsWorkspaceDto, type AssociateFieldConfigurationsWithIssueTypesRequest, type AssociateSecuritySchemeWithProjectDetails, type AssociatedItemBean, type AssociationContextObject, type Attachment, type AttachmentArchiveEntry, type AttachmentArchiveImpl, type AttachmentArchiveItemReadable, type AttachmentArchiveMetadataReadable, type AttachmentCreateDto, type AttachmentCreateResultDto, type AttachmentDto, type AttachmentLinkDto, type AttachmentMetadata, type AttachmentSettings, type AuditRecordBean, type AuditRecords, type AutoCompleteSuggestion, type AutoCompleteSuggestions, type AvailableDashboardGadget, type AvailableDashboardGadgetsResponse, type AvailableWorkflowConnectRule, type AvailableWorkflowForgeRule, type AvailableWorkflowSystemRule, type AvailableWorkflowTriggerTypes, type AvailableWorkflowTriggers, type Avatar, type AvatarUrlsBean, type Avatars, type BoardColumnPayload, type BoardFeaturePayload, type BoardPayload, type BoardsPayload, type BulkChangeOwnerDetails, type BulkChangelogRequestBean, type BulkChangelogResponseBean, type BulkContextualConfiguration, type BulkCustomFieldOptionCreateRequest, type BulkCustomFieldOptionUpdateRequest, type BulkEditActionError, type BulkEditGetFields, type BulkEditShareableEntityRequest, type BulkEditShareableEntityResponse, type BulkFetchIssueRequestBean, type BulkIssueIsWatching, type BulkIssuePropertyUpdateRequest, type BulkIssueResults, type BulkOperationErrorResponse, type BulkOperationErrorResult, type BulkOperationFields, type BulkOperationProgress, type BulkPermissionGrants, type BulkPermissionsRequestBean, type BulkProjectPermissionGrants, type BulkProjectPermissions, type BulkRedactionRequest, type BulkRedactionResponse, type BulkTransitionGetAvailableTransitions, type BulkTransitionSubmitInput, type CardLayout, type CardLayoutField, type ChangeDetails, type ChangeFilterOwner, type ChangedValueBean, type ChangedWorklog, type ChangedWorklogs, type Changelog, type ClientType, type ColumnItem, type ColumnRequestBody, type Comment, type CommentCreateDto, type CommentDto, type ComponentIssuesCount, type ComponentJsonBean, type ComponentWithIssueCount, type CompoundClause, type ConditionGroupConfiguration, type ConditionGroupPayload, type ConditionGroupUpdate, type Configuration, type ConfigurationsListParameters, type ConnectCustomFieldValue, type ConnectCustomFieldValues, type ConnectModule, type ConnectModules, type ContainerForProjectFeatures, type ContainerForRegisteredWebhooks, type ContainerForWebhookIds, type ContainerOfWorkflowSchemeAssociations, type ContentDto, type ContentItem, type Context, type ContextForProjectAndIssueType, type ContextualConfiguration, type ConvertedJqlQueries, type CreateCrossProjectReleaseRequest, type CreateCustomFieldContext, type CreateCustomFieldRequest, type CreateDateFieldRequest, type CreateExclusionRulesRequest, type CreateIssueSecuritySchemeDetails, type CreateIssueSourceRequest, type CreateNotificationSchemeDetails, type CreatePermissionHolderRequest, type CreatePermissionRequest, type CreatePlanOnlyTeamRequest, type CreatePlanRequest, type CreatePriorityDetails, type CreatePrioritySchemeDetails, type CreateProjectDetails, type CreateResolutionDetails, type CreateSchedulingRequest, type CreateUiModificationDetails, type CreateUpdateRoleRequestBean, type CreateWorkflowCondition, type CreateWorkflowDetails, type CreateWorkflowStatusDetails, type CreateWorkflowTransitionDetails, type CreateWorkflowTransitionRule, type CreateWorkflowTransitionRulesDetails, type CreateWorkflowTransitionScreenDetails, type CreatedIssue, type CreatedIssues, type CsatFeedbackFullDto, type CustomContextVariable, type CustomFieldConfigurations, type CustomFieldContext, type CustomFieldContextDefaultValue, type CustomFieldContextDefaultValueCascadingOption, type CustomFieldContextDefaultValueDate, type CustomFieldContextDefaultValueDateTime, type CustomFieldContextDefaultValueFloat, type CustomFieldContextDefaultValueForgeDateTimeField, type CustomFieldContextDefaultValueForgeGroupField, type CustomFieldContextDefaultValueForgeMultiGroupField, type CustomFieldContextDefaultValueForgeMultiStringField, type CustomFieldContextDefaultValueForgeMultiUserField, type CustomFieldContextDefaultValueForgeNumberField, type CustomFieldContextDefaultValueForgeObjectField, type CustomFieldContextDefaultValueForgeStringField, type CustomFieldContextDefaultValueForgeUserField, type CustomFieldContextDefaultValueLabels, type CustomFieldContextDefaultValueMultiUserPicker, type CustomFieldContextDefaultValueMultipleGroupPicker, type CustomFieldContextDefaultValueMultipleOption, type CustomFieldContextDefaultValueMultipleVersionPicker, type CustomFieldContextDefaultValueProject, type CustomFieldContextDefaultValueReadOnly, type CustomFieldContextDefaultValueSingleGroupPicker, type CustomFieldContextDefaultValueSingleOption, type CustomFieldContextDefaultValueSingleVersionPicker, type CustomFieldContextDefaultValueTextArea, type CustomFieldContextDefaultValueTextField, type CustomFieldContextDefaultValueUpdate, type CustomFieldContextDefaultValueUrl, type CustomFieldContextOption, type CustomFieldContextProjectMapping, type CustomFieldContextSingleUserPickerDefaults, type CustomFieldContextUpdateDetails, type CustomFieldCreatedContextOptionsList, type CustomFieldDefinitionJsonBean, type CustomFieldOption, type CustomFieldOptionCreate, type CustomFieldOptionUpdate, type CustomFieldPayload, type CustomFieldReplacement, type CustomFieldUpdatedContextOptionsList, type CustomFieldValueUpdate, type CustomFieldValueUpdateDetails, type CustomTemplateOptions, type CustomTemplateRequestDto, type CustomTemplatesProjectDetails, type CustomerCreateDto, type CustomerRequestActionDto, type CustomerRequestActionsDto, type CustomerRequestCreateMetaDto, type CustomerRequestDto, type CustomerRequestFieldValueDto, type CustomerRequestLinkDto, type CustomerRequestStatusDto, type CustomerTransitionDto, type CustomerTransitionExecutionDto, type Dashboard, type DashboardDetails, type DashboardGadget, type DashboardGadgetPosition, type DashboardGadgetResponse, type DashboardGadgetSettings, type DashboardGadgetUpdateRequest, type DataClassificationLevelsBean, type DataClassificationTagBean, type DateDto, type DateRangeFilterRequest, type DefaultJiraClientType, type DefaultJiraConfig, type DefaultLevelValue, type DefaultRequestOpts, type DefaultShareScope, type DefaultWorkflow, type DefaultWorkflowEditorResponse, type DeleteAndReplaceVersionBean, type DeprecatedWorkflow, type Description, type DetailedErrorCollection, type DocumentVersion, type DuplicatePlanRequest, type DurationDto, type EditTemplateRequest, type EntityProperty, type EntityPropertyDetails, type Error, type ErrorCollection, type ErrorCollections, type ErrorMessage, type ErrorResponse, type Errors, type EventNotification, type ExpandPrioritySchemePage, type ExportArchivedIssuesTaskProgressResponse, type FailedWebhook, type FailedWebhooks, type Field, type FieldAssociationsRequest, type FieldCapabilityPayload, type FieldChangedClause, type FieldConfiguration, type FieldConfigurationDetails, type FieldConfigurationIssueTypeItem, type FieldConfigurationItem, type FieldConfigurationItemsDetails, type FieldConfigurationScheme, type FieldConfigurationSchemeProjectAssociation, type FieldConfigurationSchemeProjects, type FieldConfigurationToIssueTypeMapping, type FieldCreateMetadata, type FieldDetails, type FieldIdentifierObject, type FieldLastUsed, type FieldLayoutConfiguration, type FieldLayoutPayload, type FieldLayoutSchemePayload, type FieldMetadata, type FieldReferenceData, type FieldUpdateOperation, type FieldValueClause, type FieldWasClause, type Filter, type FilterDetails, type FilterSubscription, type FilterSubscriptionsList, type ForgeJiraClientType, type ForgeJiraConfig, type ForgeRequestOpts, type Form, type FormAnswer, type FoundGroup, type FoundGroups, type FoundUsers, type FoundUsersAndGroups, type FromLayoutPayload, type FunctionOperand, type FunctionReferenceData, type GetAtlassianTeamResponse, type GetCrossProjectReleaseResponse, type GetCustomFieldResponse, type GetDateFieldResponse, type GetExclusionRulesResponse, type GetIssueSourceResponse, type GetPermissionHolderResponse, type GetPermissionResponse, type GetPlanOnlyTeamResponse, type GetPlanResponse, type GetPlanResponseForPage, type GetSchedulingResponse, type GetTeamResponseForPage, type GlobalScopeBean, type Group, type GroupDetails, type GroupLabel, type GroupName, type HealthCheckResult, type Hierarchy, type HistoryMetadata, type HistoryMetadataParticipant, type I18nErrorMessage, type Icon, type IdBean, type IdOrKeyBean, type IncludedFields, type InsightWorkspaceDto, type IssueArchivalSyncRequest, type IssueArchivalSyncResponse, type IssueBean, type IssueBeanKnownFields, type IssueBeanKnownUpdateFields, type IssueBulkDeletePayload, type IssueBulkEditField, type IssueBulkEditPayload, type IssueBulkMovePayload, type IssueBulkOperationsFieldOption, type IssueBulkTransitionForWorkflow, type IssueBulkTransitionPayload, type IssueBulkWatchOrUnwatchPayload, type IssueChangeLog, type IssueChangelogIds, type IssueCommentListRequestBean, type IssueContextVariable, type IssueCreateMetadata, type IssueEntityProperties, type IssueEntityPropertiesForMultiUpdate, type IssueError, type IssueEvent, type IssueFieldKeys, type IssueFieldOption, type IssueFieldOptionConfiguration, type IssueFieldOptionCreateBean, type IssueFieldOptionScopeBean, type IssueFilterForBulkPropertyDelete, type IssueFilterForBulkPropertySet, type IssueIdOrKeysAssociation, type IssueLayoutItemPayload, type IssueLayoutPayload, type IssueLimitReportResponseBean, type IssueLink, type IssueLinkFields, type IssueLinkType, type IssueLinkTypes, type IssueList, type IssueMatches, type IssueMatchesForJql, type IssuePickerSuggestions, type IssuePickerSuggestionsIssueType, type IssueSecurityLevelMember, type IssueSecuritySchemeToProjectMapping, type IssueTransition, type IssueTransitionStatus, type IssueTypeCreateBean, type IssueTypeDetails, type IssueTypeHierarchyPayload, type IssueTypeIds, type IssueTypeIdsToRemove, type IssueTypeInfo, type IssueTypeIssueCreateMetadata, type IssueTypePayload, type IssueTypeProjectCreatePayload, type IssueTypeScheme, type IssueTypeSchemeDetails, type IssueTypeSchemeId, type IssueTypeSchemeMapping, type IssueTypeSchemePayload, type IssueTypeSchemeProjectAssociation, type IssueTypeSchemeProjects, type IssueTypeSchemeUpdateDetails, type IssueTypeScreenScheme, type IssueTypeScreenSchemeDetails, type IssueTypeScreenSchemeId, type IssueTypeScreenSchemeItem, type IssueTypeScreenSchemeMapping, type IssueTypeScreenSchemeMappingDetails, type IssueTypeScreenSchemePayload, type IssueTypeScreenSchemeProjectAssociation, type IssueTypeScreenSchemeUpdateDetails, type IssueTypeScreenSchemesProjects, type IssueTypeToContextMapping, type IssueTypeUpdateBean, type IssueTypeWithStatus, type IssueTypeWorkflowMapping, type IssueTypesWorkflowMapping, type IssueUpdateDetails, type IssueUpdateMetadata, type IssuesAndJqlQueries, type IssuesJqlMetaDataBean, type IssuesMetaBean, type IssuesUpdateBean, type JexpEvaluateCtxIssues, type JexpEvaluateCtxJqlIssues, type JexpEvaluateIssuesJqlMetaDataBean, type JexpEvaluateIssuesMetaBean, type JexpEvaluateJiraExpressionResultBean, type JexpEvaluateMetaDataBean, type JexpIssues, type JexpJqlIssues, type JiraCascadingSelectField, JiraClient, type JiraColorField, type JiraColorInput, type JiraComponentField, type JiraDateField, type JiraDateInput, type JiraDateTimeField, type JiraDateTimeInput, type JiraDurationField, type JiraExpressionAnalysis, type JiraExpressionComplexity, type JiraExpressionEvalContextBean, type JiraExpressionEvalRequestBean, type JiraExpressionEvaluateContextBean, type JiraExpressionEvaluateRequestBean, type JiraExpressionEvaluationMetaDataBean, type JiraExpressionForAnalysis, type JiraExpressionResult, type JiraExpressionValidationError, type JiraExpressionsAnalysis, type JiraExpressionsComplexityBean, type JiraExpressionsComplexityValueBean, type JiraGroupInput, type JiraIssueFields, type JiraIssueTypeField, type JiraLabelPropertiesInputJackson1, type JiraLabelsField, type JiraLabelsInput, type JiraMultiSelectComponentField, type JiraMultipleGroupPickerField, type JiraMultipleSelectField, type JiraMultipleSelectUserPickerField, type JiraMultipleVersionPickerField, type JiraNumberField, type JiraPriorityField, type JiraResult, type JiraRichTextField, type JiraRichTextInput, type JiraSelectedOptionField, type JiraSingleGroupPickerField, type JiraSingleLineTextField, type JiraSingleSelectField, type JiraSingleSelectUserPickerField, type JiraSingleVersionPickerField, type JiraStatus, type JiraStatusInput, type JiraTimeTrackingField, type JiraUrlField, type JiraUserField, type JiraVersionField, type JiraWorkflow, type JiraWorkflowStatus, type JqlCountRequestBean, type JqlCountResultsBean, type JqlFunctionPrecomputationBean, type JqlFunctionPrecomputationGetByIdRequest, type JqlFunctionPrecomputationGetByIdResponse, type JqlFunctionPrecomputationUpdateBean, type JqlFunctionPrecomputationUpdateErrorResponse, type JqlFunctionPrecomputationUpdateRequestBean, type JqlFunctionPrecomputationUpdateResponse, type JqlPersonalDataMigrationRequest, type JqlQueriesToParse, type JqlQueriesToSanitize, type JqlQuery, type JqlQueryClause, type JqlQueryClauseOperand, type JqlQueryClauseTimePredicate, type JqlQueryField, type JqlQueryFieldEntityProperty, type JqlQueryOrderByClause, type JqlQueryOrderByClauseElement, type JqlQueryToSanitize, type JqlQueryUnitaryOperand, type JqlQueryWithUnknownUsers, type JqlReferenceData, type JsonContextVariable, type JsonNode, type JsonTypeBean, type KeywordOperand, type License, type LicenseMetric, type LicensedApplication, type LinkGroup, type LinkIssueRequestJsonBean, type LinkedIssue, type ListOperand, type ListWrapperCallbackApplicationRole, type ListWrapperCallbackGroupName, type Locale, type MandatoryFieldValue, type MandatoryFieldValueForAdf, type MappingsByIssueTypeOverride, type MappingsByWorkflow, type MoveFieldBean, type MultiIssueEntityProperties, type MultipartFile, type MultipleCustomFieldValuesUpdate, type MultipleCustomFieldValuesUpdateDetails, type NestedResponse, type NewUserDetails, type NonWorkingDay, type Notification, type NotificationEvent, type NotificationRecipients, type NotificationRecipientsRestrictions, type NotificationScheme, type NotificationSchemeAndProjectMappingJsonBean, type NotificationSchemeEvent, type NotificationSchemeEventDetails, type NotificationSchemeEventIdPayload, type NotificationSchemeEventPayload, type NotificationSchemeEventTypeId, type NotificationSchemeId, type NotificationSchemeNotificationDetails, type NotificationSchemeNotificationDetailsPayload, type NotificationSchemePayload, type OldToNewSecurityLevelMappingsBean, type OperationMessage, type Operations, type OrderOfCustomFieldOptions, type OrderOfIssueTypes, type OrganizationCreateDto, type OrganizationDto, type OrganizationServiceDeskUpdateDto, type PageBean2ComponentJsonBean, type PageBean2JqlFunctionPrecomputationBean, type PageBeanBulkContextualConfiguration, type PageBeanChangelog, type PageBeanComment, type PageBeanComponentWithIssueCount, type PageBeanContext, type PageBeanContextForProjectAndIssueType, type PageBeanContextualConfiguration, type PageBeanCustomFieldContext, type PageBeanCustomFieldContextDefaultValue, type PageBeanCustomFieldContextOption, type PageBeanCustomFieldContextProjectMapping, type PageBeanDashboard, type PageBeanField, type PageBeanFieldConfigurationDetails, type PageBeanFieldConfigurationIssueTypeItem, type PageBeanFieldConfigurationItem, type PageBeanFieldConfigurationScheme, type PageBeanFieldConfigurationSchemeProjects, type PageBeanFilterDetails, type PageBeanGroupDetails, type PageBeanIssueFieldOption, type PageBeanIssueSecurityLevelMember, type PageBeanIssueSecuritySchemeToProjectMapping, type PageBeanIssueTypeScheme, type PageBeanIssueTypeSchemeMapping, type PageBeanIssueTypeSchemeProjects, type PageBeanIssueTypeScreenScheme, type PageBeanIssueTypeScreenSchemeItem, type PageBeanIssueTypeScreenSchemesProjects, type PageBeanIssueTypeToContextMapping, type PageBeanNotificationScheme, type PageBeanNotificationSchemeAndProjectMappingJsonBean, type PageBeanPriority, type PageBeanPrioritySchemeWithPaginatedPrioritiesAndProjects, type PageBeanPriorityWithSequence, type PageBeanProject, type PageBeanProjectDetails, type PageBeanResolutionJsonBean, type PageBeanScreen, type PageBeanScreenScheme, type PageBeanScreenWithTab, type PageBeanSecurityLevel, type PageBeanSecurityLevelMember, type PageBeanSecuritySchemeWithProjects, type PageBeanString, type PageBeanUiModificationDetails, type PageBeanUser, type PageBeanUserDetails, type PageBeanUserKey, type PageBeanVersion, type PageBeanWebhook, type PageBeanWorkflow, type PageBeanWorkflowScheme, type PageBeanWorkflowTransitionRules, type PageOfChangelogs, type PageOfComments, type PageOfCreateMetaIssueTypeWithField, type PageOfCreateMetaIssueTypes, type PageOfDashboards, type PageOfStatuses, type PageOfWorklogs, type PageWithCursorGetPlanResponseForPage, type PageWithCursorGetTeamResponseForPage, type PagedDtoApprovalDto, type PagedDtoArticleDto, type PagedDtoAssetsWorkspaceDto, type PagedDtoAttachmentDto, type PagedDtoCommentDto, type PagedDtoCustomerRequestDto, type PagedDtoCustomerRequestStatusDto, type PagedDtoCustomerTransitionDto, type PagedDtoInsightWorkspaceDto, type PagedDtoIssueBean, type PagedDtoOrganizationDto, type PagedDtoQueueDto, type PagedDtoRequestTypeDto, type PagedDtoRequestTypeGroupDto, type PagedDtoServiceDeskDto, type PagedDtoSlaInformationDto, type PagedDtoUserDto, type PagedLinkDto, type PagedListUserDetailsApplicationUser, type ParsedJqlQueries, type ParsedJqlQuery, type PermissionDetails, type PermissionGrant, type PermissionGrantDto, type PermissionGrants, type PermissionHolder, type PermissionPayloadDto, type PermissionScheme, type PermissionSchemes, type Permissions, type PermissionsKeysBean, type PermittedProjects, type Priority, type PriorityId, type PriorityMapping, type PrioritySchemeChangesWithoutMappings, type PrioritySchemeId, type PrioritySchemeWithPaginatedPrioritiesAndProjects, type PriorityWithSequence, type Project, type ProjectAndIssueTypePair, type ProjectArchetype, type ProjectAvatars, type ProjectCategory, type ProjectComponent, type ProjectCreateResourceIdentifier, type ProjectCustomTemplateCreateRequestDto, type ProjectDataPolicies, type ProjectDataPolicy, type ProjectDetails, type ProjectEmailAddress, type ProjectFeature, type ProjectFeatureState, type ProjectId, type ProjectIdentifierBean, type ProjectIdentifiers, type ProjectIds, type ProjectInsight, type ProjectIssueCreateMetadata, type ProjectIssueSecurityLevels, type ProjectIssueTypeHierarchy, type ProjectIssueTypeMapping, type ProjectIssueTypeMappings, type ProjectIssueTypes, type ProjectIssueTypesHierarchyLevel, type ProjectLandingPageInfo, type ProjectPayload, type ProjectPermissions, type ProjectRole, type ProjectRoleActorsUpdateBean, type ProjectRoleDetails, type ProjectRoleGroup, type ProjectRoleUser, type ProjectScopeBean, type ProjectTemplateKey, type ProjectTemplateModel, type ProjectType, type ProjectUsage, type ProjectUsagePage, type ProjectWithDataPolicy, type PropertyKey, type PropertyKeys, type PublishDraftWorkflowScheme, type PublishedWorkflowId, type QueueDto, type QuickFilterPayload, type RedactionJobStatusResponse, type RedactionPosition, type RegisteredWebhook, type RemoteIssueLink, type RemoteIssueLinkIdentifies, type RemoteIssueLinkRequest, type RemoteObject, type RemoveOptionFromIssuesResult, type RenderedValueDto, type ReorderIssuePriorities, type ReorderIssueResolutionsRequest, type RequestCreateDto, type RequestNotificationSubscriptionDto, type RequestOpts, type RequestParams, type RequestParticipantUpdateDto, type RequestTypeCreateDto, type RequestTypeDto, type RequestTypeFieldDto, type RequestTypeFieldValueDto, type RequestTypeGroupDto, type RequestTypeIconDto, type RequestTypeIconLinkDto, type RequestTypePermissionCheckRequestDto, type RequestTypePermissionCheckResponse, type RequiredMappingByIssueType, type RequiredMappingByWorkflows, type Resolution, type ResolutionId, type ResolutionJsonBean, type Resource, type RestrictedPermission, type RoleActor, type RolePayload, type RolesCapabilityPayload, type RuleConfiguration, type RulePayload, type SanitizedJqlQueries, type SanitizedJqlQuery, type SaveProjectTemplateRequest, type SaveTemplateRequest, type SaveTemplateResponse, type Scope, type ScopePayload, type Screen, type ScreenDetails, type ScreenPayload, type ScreenScheme, type ScreenSchemeDetails, type ScreenSchemeId, type ScreenSchemePayload, type ScreenTypes, type ScreenWithTab, type ScreenableField, type ScreenableTab, type SearchAndReconcileRequestBean, type SearchAndReconcileResults, type SearchAutoCompleteFilter, type SearchRequestBean, type SearchResults, type SecurityLevel, type SecurityLevelMember, type SecurityLevelMemberPayload, type SecurityLevelPayload, type SecurityScheme, type SecuritySchemeId, type SecuritySchemeLevelBean, type SecuritySchemeLevelMemberBean, type SecuritySchemeMembersRequest, type SecuritySchemePayload, type SecuritySchemeWithProjects, type SecuritySchemes, type SelfLinkDto, type ServerInformation, type ServiceDeskCustomerDto, type ServiceDeskDto, type ServiceIdOrKeysAssociation, type ServiceRegistry, type ServiceRegistryTier, type SetDefaultLevelsRequest, type SetDefaultPriorityRequest, type SetDefaultResolutionRequest, type SharePermission, type SharePermissionInputBean, type SimpleApplicationPropertyBean, type SimpleErrorCollection, type SimpleLink, type SimpleListWrapperApplicationRole, type SimpleListWrapperGroupName, type SimpleUsage, type SimplifiedHierarchyLevel, type SimplifiedIssueTransition, type SingleRedactionRequest, type SingleRedactionResponse, type SlaInformationCompletedCycleDto, type SlaInformationDto, type SlaInformationOngoingCycleDto, type SoftwareInfoDto, type SourceDto, type Status, type StatusCategory, type StatusCreate, type StatusCreateRequest, type StatusDetails, type StatusLayoutUpdate, type StatusMapping, type StatusMappingDto, type StatusMetadata, type StatusMigration, type StatusPayload, type StatusProjectIssueTypeUsage, type StatusProjectIssueTypeUsageDto, type StatusProjectIssueTypeUsagePage, type StatusProjectUsage, type StatusProjectUsageDto, type StatusProjectUsagePage, type StatusScope, type StatusUpdate, type StatusUpdateRequest, type StatusWorkflowUsageDto, type StatusWorkflowUsagePage, type StatusWorkflowUsageWorkflow, type StatusesPerWorkflow, type StreamingResponseBody, type StringList, type SubmittedBulkOperation, type SuggestedIssue, type SuggestedMappingsForPrioritiesRequestBean, type SuggestedMappingsForProjectsRequestBean, type SuggestedMappingsRequestBean, type SwimlanePayload, type SwimlanesPayload, type SystemAvatars, type TabPayload, type TargetClassification, type TargetMandatoryFields, type TargetStatus, type TargetToSourcesMapping, type TaskProgressBeanJsonNode, type TaskProgressBeanObject, type TaskProgressBeanRemoveOptionFromIssuesResult, type TimeTrackingConfiguration, type TimeTrackingDetails, type TimeTrackingProvider, type ToLayoutPayload, type Transition, type TransitionPayload, type TransitionScreenDetails, type TransitionUpdateDto, type Transitions, type UiModificationContextDetails, type UiModificationDetails, type UiModificationIdentifiers, type UnrestrictedUserEmail, type UpdateCustomFieldDetails, type UpdateDefaultProjectClassificationBean, type UpdateDefaultScreenScheme, type UpdateFieldConfigurationSchemeDetails, type UpdateIssueSecurityLevelDetails, type UpdateIssueSecuritySchemeRequestBean, type UpdateNotificationSchemeDetails, type UpdatePrioritiesInSchemeRequestBean, type UpdatePriorityDetails, type UpdatePrioritySchemeRequestBean, type UpdatePrioritySchemeResponseBean, type UpdateProjectDetails, type UpdateProjectsInSchemeRequestBean, type UpdateResolutionDetails, type UpdateScreenDetails, type UpdateScreenSchemeDetails, type UpdateScreenTypes, type UpdateUiModificationDetails, type UpdateUserToGroupBean, type UpdatedProjectCategory, type User, type UserBean, type UserBeanAvatarUrls, type UserColumnRequestBody, type UserContextVariable, type UserDetails, type UserDto, type UserFilter, type UserKey, type UserLinkDto, type UserList, type UserMigrationBean, type UserNavPropertyJsonBean, type UserPermission, type UserPickerUser, type UsersOrganizationUpdateDto, type ValidationOptionsForCreate, type ValidationOptionsForUpdate, type ValueOperand, type Version, type VersionApprover, type VersionIssueCounts, type VersionIssuesStatus, type VersionMoveBean, type VersionRelatedWork, type VersionUnresolvedIssuesCount, type VersionUsageInCustomField, type Visibility, type Votes, type WarningCollection, type Watchers, type Webhook, type WebhookDetails, type WebhookRegistrationDetails, type WebhooksExpirationDate, type WithRequestOpts, type WithRequestOptsDefault, type WithRequestOptsForge, type Workflow, type WorkflowAssociationStatusMapping, type WorkflowCapabilities, type WorkflowCapabilityPayload, type WorkflowCompoundCondition, type WorkflowCondition, type WorkflowCreate, type WorkflowCreateRequest, type WorkflowCreateResponse, type WorkflowCreateValidateRequest, type WorkflowElementReference, type WorkflowId, type WorkflowIds, type WorkflowLayout, type WorkflowMetadataAndIssueTypeRestModel, type WorkflowMetadataRestModel, type WorkflowOperations, type WorkflowPayload, type WorkflowProjectIssueTypeUsage, type WorkflowProjectIssueTypeUsageDto, type WorkflowProjectIssueTypeUsagePage, type WorkflowProjectUsageDto, type WorkflowReadRequest, type WorkflowReadResponse, type WorkflowReferenceStatus, type WorkflowRuleConfiguration, type WorkflowRules, type WorkflowRulesSearch, type WorkflowRulesSearchDetails, type WorkflowScheme, type WorkflowSchemeAssociation, type WorkflowSchemeAssociations, type WorkflowSchemeIdName, type WorkflowSchemePayload, type WorkflowSchemeProjectAssociation, type WorkflowSchemeProjectUsageDto, type WorkflowSchemeReadRequest, type WorkflowSchemeReadResponse, type WorkflowSchemeUpdateRequest, type WorkflowSchemeUpdateRequiredMappingsRequest, type WorkflowSchemeUpdateRequiredMappingsResponse, type WorkflowSchemeUsage, type WorkflowSchemeUsageDto, type WorkflowSchemeUsagePage, type WorkflowScope, type WorkflowSearchResponse, type WorkflowSimpleCondition, type WorkflowStatus, type WorkflowStatusLayout, type WorkflowStatusLayoutPayload, type WorkflowStatusPayload, type WorkflowStatusUpdate, type WorkflowTransition, type WorkflowTransitionLinks, type WorkflowTransitionProperty, type WorkflowTransitionRule, type WorkflowTransitionRules, type WorkflowTransitionRulesDetails, type WorkflowTransitionRulesUpdate, type WorkflowTransitionRulesUpdateErrorDetails, type WorkflowTransitionRulesUpdateErrors, type WorkflowTransitions, type WorkflowTrigger, type WorkflowUpdate, type WorkflowUpdateRequest, type WorkflowUpdateResponse, type WorkflowUpdateValidateRequestBean, type WorkflowUsages, type WorkflowValidationError, type WorkflowValidationErrorList, type WorkflowsWithTransitionRulesDetails, type WorkingDaysConfig, type Worklog, type WorklogIdsRequestBean, type WorklogsMoveRequestBean, type WorkspaceDataPolicy };
