{"version":3,"sources":["../src/agile/index.ts","../src/agile/backlog.ts","../src/agile/board.ts","../src/agile/builds.ts","../src/agile/deployments.ts","../src/agile/developmentInformation.ts","../src/agile/devopsComponents.ts","../src/agile/epic.ts","../src/agile/featureFlags.ts","../src/agile/issue.ts","../src/agile/operations.ts","../src/agile/remoteLinks.ts","../src/agile/securityInformation.ts","../src/agile/sprint.ts","../src/agile/models/index.ts","../src/agile/parameters/index.ts","../src/clients/baseClient.ts","../src/config.ts","../src/services/authenticationService/base64Encoder.ts","../src/services/authenticationService/authentications/createBasicAuthenticationToken.ts","../src/services/authenticationService/authentications/createOAuth2AuthenticationToken.ts","../src/services/authenticationService/getAuthenticationToken.ts","../src/clients/httpException.ts","../src/agile/client/agileClient.ts","../src/version2/index.ts","../src/version2/announcementBanner.ts","../src/version2/appDataPolicies.ts","../src/version2/appMigration.ts","../src/version2/appProperties.ts","../src/version2/applicationRoles.ts","../src/version2/auditRecords.ts","../src/version2/avatars.ts","../src/version2/classificationLevels.ts","../src/paramSerializer.ts","../src/version2/dashboards.ts","../src/version2/dynamicModules.ts","../src/version2/filterSharing.ts","../src/version2/filters.ts","../src/version2/groupAndUserPicker.ts","../src/version2/groups.ts","../src/version2/issueAttachments.ts","../src/version2/issueCommentProperties.ts","../src/version2/issueComments.ts","../src/version2/issueCustomFieldAssociations.ts","../src/version2/issueCustomFieldConfigurationApps.ts","../src/version2/issueCustomFieldContexts.ts","../src/version2/issueCustomFieldOptions.ts","../src/version2/issueCustomFieldOptionsApps.ts","../src/version2/issueCustomFieldValuesApps.ts","../src/version2/issueFieldConfigurations.ts","../src/version2/issueFields.ts","../src/version2/issueLinkTypes.ts","../src/version2/issueLinks.ts","../src/version2/issueNavigatorSettings.ts","../src/version2/issueNotificationSchemes.ts","../src/version2/issuePriorities.ts","../src/version2/issueProperties.ts","../src/version2/issueRemoteLinks.ts","../src/version2/issueResolutions.ts","../src/version2/issueSearch.ts","../src/version2/issueSecurityLevel.ts","../src/version2/issueSecuritySchemes.ts","../src/version2/issueTypeProperties.ts","../src/version2/issueTypeSchemes.ts","../src/version2/issueTypeScreenSchemes.ts","../src/version2/issueTypes.ts","../src/version2/issueVotes.ts","../src/version2/issueWatchers.ts","../src/version2/issueWorklogProperties.ts","../src/version2/issueWorklogs.ts","../src/version2/issues.ts","../src/version2/jiraExpressions.ts","../src/version2/jiraSettings.ts","../src/version2/jQL.ts","../src/version2/jqlFunctionsApps.ts","../src/version2/labels.ts","../src/version2/licenseMetrics.ts","../src/version2/myself.ts","../src/version2/permissionSchemes.ts","../src/version2/permissions.ts","../src/version2/plans.ts","../src/version2/prioritySchemes.ts","../src/version2/projectAvatars.ts","../src/version2/projectCategories.ts","../src/version2/projectClassificationLevels.ts","../src/version2/projectComponents.ts","../src/version2/projectEmail.ts","../src/version2/projectFeatures.ts","../src/version2/projectKeyAndNameValidation.ts","../src/version2/projectPermissionSchemes.ts","../src/version2/projectProperties.ts","../src/version2/projectRoleActors.ts","../src/version2/projectRoles.ts","../src/version2/projectTemplates.ts","../src/version2/projectTypes.ts","../src/version2/projectVersions.ts","../src/version2/projects.ts","../src/version2/screenSchemes.ts","../src/version2/screenTabFields.ts","../src/version2/screenTabs.ts","../src/version2/screens.ts","../src/version2/serverInfo.ts","../src/version2/serviceRegistry.ts","../src/version2/status.ts","../src/version2/tasks.ts","../src/version2/teamsInPlan.ts","../src/version2/timeTracking.ts","../src/version2/uIModificationsApps.ts","../src/version2/userProperties.ts","../src/version2/userSearch.ts","../src/version2/userNavProperties.ts","../src/version2/users.ts","../src/version2/webhooks.ts","../src/version2/workflowSchemeDrafts.ts","../src/version2/workflowSchemeProjectAssociations.ts","../src/version2/workflowSchemes.ts","../src/version2/workflowStatusCategories.ts","../src/version2/workflowStatuses.ts","../src/version2/workflowTransitionProperties.ts","../src/version2/workflowTransitionRules.ts","../src/version2/workflows.ts","../src/version2/client/version2Client.ts","../src/version2/models/index.ts","../src/version2/parameters/index.ts","../src/version3/index.ts","../src/version3/announcementBanner.ts","../src/version3/appDataPolicies.ts","../src/version3/applicationRoles.ts","../src/version3/appMigration.ts","../src/version3/appProperties.ts","../src/version3/auditRecords.ts","../src/version3/avatars.ts","../src/version3/classificationLevels.ts","../src/version3/dashboards.ts","../src/version3/dynamicModules.ts","../src/version3/filters.ts","../src/version3/filterSharing.ts","../src/version3/groupAndUserPicker.ts","../src/version3/groups.ts","../src/version3/instanceInformation.ts","../src/version3/issueAttachments.ts","../src/version3/issueBulkOperations.ts","../src/version3/issueCommentProperties.ts","../src/version3/issueComments.ts","../src/version3/issueCustomFieldAssociations.ts","../src/version3/issueCustomFieldConfigurationApps.ts","../src/version3/issueCustomFieldContexts.ts","../src/version3/issueCustomFieldOptions.ts","../src/version3/issueCustomFieldOptionsApps.ts","../src/version3/issueCustomFieldValuesApps.ts","../src/version3/issueFieldConfigurations.ts","../src/version3/issueFields.ts","../src/version3/issueLinks.ts","../src/version3/issueLinkTypes.ts","../src/version3/issueNavigatorSettings.ts","../src/version3/issueNotificationSchemes.ts","../src/version3/issuePriorities.ts","../src/version3/issueProperties.ts","../src/version3/issueRemoteLinks.ts","../src/version3/issueResolutions.ts","../src/version3/issues.ts","../src/version3/issueSearch.ts","../src/version3/issueSecurityLevel.ts","../src/version3/issueSecuritySchemes.ts","../src/version3/issueTypeProperties.ts","../src/version3/issueTypes.ts","../src/version3/issueTypeSchemes.ts","../src/version3/issueTypeScreenSchemes.ts","../src/version3/issueVotes.ts","../src/version3/issueWatchers.ts","../src/version3/issueWorklogProperties.ts","../src/version3/issueWorklogs.ts","../src/version3/jiraExpressions.ts","../src/version3/jiraSettings.ts","../src/version3/jQL.ts","../src/version3/jqlFunctionsApps.ts","../src/version3/labels.ts","../src/version3/licenseMetrics.ts","../src/version3/myself.ts","../src/version3/permissions.ts","../src/version3/permissionSchemes.ts","../src/version3/plans.ts","../src/version3/prioritySchemes.ts","../src/version3/projectAvatars.ts","../src/version3/projectCategories.ts","../src/version3/projectClassificationLevels.ts","../src/version3/projectComponents.ts","../src/version3/projectEmail.ts","../src/version3/projectFeatures.ts","../src/version3/projectKeyAndNameValidation.ts","../src/version3/projectPermissionSchemes.ts","../src/version3/projectProperties.ts","../src/version3/projectRoleActors.ts","../src/version3/projectRoles.ts","../src/version3/projects.ts","../src/version3/projectTemplates.ts","../src/version3/projectTypes.ts","../src/version3/projectVersions.ts","../src/version3/screens.ts","../src/version3/screenSchemes.ts","../src/version3/screenTabFields.ts","../src/version3/screenTabs.ts","../src/version3/serverInfo.ts","../src/version3/serviceRegistry.ts","../src/version3/status.ts","../src/version3/tasks.ts","../src/version3/teamsInPlan.ts","../src/version3/timeTracking.ts","../src/version3/uIModificationsApps.ts","../src/version3/userNavProperties.ts","../src/version3/userProperties.ts","../src/version3/users.ts","../src/version3/userSearch.ts","../src/version3/webhooks.ts","../src/version3/workflows.ts","../src/version3/workflowSchemeDrafts.ts","../src/version3/workflowSchemeProjectAssociations.ts","../src/version3/workflowSchemes.ts","../src/version3/workflowStatusCategories.ts","../src/version3/workflowStatuses.ts","../src/version3/workflowTransitionProperties.ts","../src/version3/workflowTransitionRules.ts","../src/version3/client/version3Client.ts","../src/version3/models/index.ts","../src/version3/parameters/index.ts","../src/serviceDesk/index.ts","../src/serviceDesk/customer.ts","../src/serviceDesk/info.ts","../src/serviceDesk/insight.ts","../src/serviceDesk/knowledgeBase.ts","../src/serviceDesk/organization.ts","../src/serviceDesk/request.ts","../src/serviceDesk/requestType.ts","../src/serviceDesk/serviceDesk.ts","../src/serviceDesk/models/index.ts","../src/serviceDesk/parameters/index.ts","../src/serviceDesk/client/serviceDeskClient.ts","../src/createClient.ts"],"sourcesContent":["export * from './backlog';\nexport * from './board';\nexport * from './builds';\nexport * from './deployments';\nexport * from './developmentInformation';\nexport * from './devopsComponents';\nexport * from './epic';\nexport * from './featureFlags';\nexport * from './issue';\nexport * from './operations';\nexport * from './remoteLinks';\nexport * from './securityInformation';\nexport * from './sprint';\n\nexport * as AgileModels from './models';\nexport * as AgileParameters from './parameters';\nexport * from './client';\n","import type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Backlog {\n  constructor(private client: Client) {}\n\n  /**\n   * Move issues to the backlog.\\\n   * This operation is equivalent to remove future and active sprints from a given set of issues. At most 50 issues may\n   * be moved at once.\n   */\n  async moveIssuesToBacklog<T = void>(parameters: Parameters.MoveIssuesToBacklog, callback: Callback<T>): Promise<void>;\n  /**\n   * Move issues to the backlog.\\\n   * This operation is equivalent to remove future and active sprints from a given set of issues. At most 50 issues may\n   * be moved at once.\n   */\n  async moveIssuesToBacklog<T = void>(parameters: Parameters.MoveIssuesToBacklog, callback?: never): Promise<T>;\n  async moveIssuesToBacklog<T = void>(\n    parameters: Parameters.MoveIssuesToBacklog,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/agile/1.0/backlog/issue',\n      method: 'POST',\n      data: {\n        issues: parameters.issues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Move issues to the backlog of a particular board (if they are already on that board).\\\n   * This operation is equivalent to remove future and active sprints from a given set of issues if the board has\n   * sprints If the board does not have sprints this will put the issues back into the backlog from the board. At most\n   * 50 issues may be moved at once.\n   */\n  async moveIssuesToBacklogForBoard<T = void>(\n    parameters: Parameters.MoveIssuesToBacklogForBoard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Move issues to the backlog of a particular board (if they are already on that board).\\\n   * This operation is equivalent to remove future and active sprints from a given set of issues if the board has\n   * sprints If the board does not have sprints this will put the issues back into the backlog from the board. At most\n   * 50 issues may be moved at once.\n   */\n  async moveIssuesToBacklogForBoard<T = void>(\n    parameters: Parameters.MoveIssuesToBacklogForBoard,\n    callback?: never,\n  ): Promise<T>;\n  async moveIssuesToBacklogForBoard<T = void>(\n    parameters: Parameters.MoveIssuesToBacklogForBoard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/backlog/${parameters.boardId}/issue`,\n      method: 'POST',\n      data: {\n        issues: parameters.issues,\n        rankAfterIssue: parameters.rankAfterIssue,\n        rankBeforeIssue: parameters.rankBeforeIssue,\n        rankCustomFieldId: parameters.rankCustomFieldId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { Paginated } from '../paginated';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Board {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all boards. This only includes boards that the user has permission to view.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024.\n   *\n   * - `read:board-scope:jira-software`, `read:project:jira`\n   */\n  async getAllBoards<T = Models.GetAllBoards>(\n    parameters: Parameters.GetAllBoards | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all boards. This only includes boards that the user has permission to view.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on February 15, 2024.\n   *\n   * - `read:board-scope:jira-software`, `read:project:jira`\n   */\n  async getAllBoards<T = Models.GetAllBoards>(parameters?: Parameters.GetAllBoards, callback?: never): Promise<T>;\n  async getAllBoards<T = Models.GetAllBoards>(\n    parameters?: Parameters.GetAllBoards,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/agile/1.0/board',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        type: parameters?.type,\n        name: parameters?.name,\n        projectKeyOrId: parameters?.projectKeyOrId,\n        accountIdLocation: parameters?.accountIdLocation,\n        projectLocation: parameters?.projectLocation,\n        includePrivate: parameters?.includePrivate,\n        negateLocationFiltering: parameters?.negateLocationFiltering,\n        orderBy: parameters?.orderBy,\n        expand: parameters?.expand,\n        projectTypeLocation: parameters?.projectTypeLocation,\n        filterId: parameters?.filterId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a new board. Board name, type and filter ID is required.\n   *\n   * - `name` - Must be less than 255 characters.\n   * - `type` - Valid values: scrum, kanban\n   * - `filterId` - ID of a filter that the user has permissions to view. Note, if the user does not have the 'Create\n   *   shared objects' permission and tries to create a shared board, a private board will be created instead (remember\n   *   that board sharing depends on the filter sharing).\n   * - `location` - The container that the board will be located in. `location` must include the `type` property (Valid\n   *   values: project, user). If choosing 'project', then a project must be specified by a `projectKeyOrId` property in\n   *   `location`. If choosing 'user', the current user is chosen by default. The `projectKeyOrId` property should not\n   *   be provided.\n   *\n   * Note:\n   *\n   * - If you want to create a new project with an associated board, use the [Jira platform REST\n   *   API](https://docs.atlassian.com/jira/REST/latest). For more information, see the [Create\n   *   project](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects/#api-rest-api-3-project-post)\n   *   method. The `projectTypeKey` for software boards must be 'software' and the `projectTemplateKey` must be either\n   *   `com.pyxis.greenhopper.jira:gh-kanban-template` or `com.pyxis.greenhopper.jira:gh-scrum-template`.\n   * - You can create a filter using the [Jira REST API](https://docs.atlassian.com/jira/REST/latest). For more\n   *   information, see the [Create\n   *   filter](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-filters/#api-rest-api-3-filter-post)\n   *   method.\n   * - If you do not ORDER BY the Rank field for the filter of your board, you will not be able to reorder issues on the\n   *   board.\n   */\n  async createBoard<T = Models.CreateBoard>(parameters: Parameters.CreateBoard, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a new board. Board name, type and filter ID is required.\n   *\n   * - `name` - Must be less than 255 characters.\n   * - `type` - Valid values: scrum, kanban\n   * - `filterId` - ID of a filter that the user has permissions to view. Note, if the user does not have the 'Create\n   *   shared objects' permission and tries to create a shared board, a private board will be created instead (remember\n   *   that board sharing depends on the filter sharing).\n   * - `location` - The container that the board will be located in. `location` must include the `type` property (Valid\n   *   values: project, user). If choosing 'project', then a project must be specified by a `projectKeyOrId` property in\n   *   `location`. If choosing 'user', the current user is chosen by default. The `projectKeyOrId` property should not\n   *   be provided.\n   *\n   * Note:\n   *\n   * - If you want to create a new project with an associated board, use the [Jira platform REST\n   *   API](https://docs.atlassian.com/jira/REST/latest). For more information, see the [Create\n   *   project](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-projects/#api-rest-api-3-project-post)\n   *   method. The `projectTypeKey` for software boards must be 'software' and the `projectTemplateKey` must be either\n   *   `com.pyxis.greenhopper.jira:gh-kanban-template` or `com.pyxis.greenhopper.jira:gh-scrum-template`.\n   * - You can create a filter using the [Jira REST API](https://docs.atlassian.com/jira/REST/latest). For more\n   *   information, see the [Create\n   *   filter](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-filters/#api-rest-api-3-filter-post)\n   *   method.\n   * - If you do not ORDER BY the Rank field for the filter of your board, you will not be able to reorder issues on the\n   *   board.\n   */\n  async createBoard<T = Models.CreateBoard>(parameters: Parameters.CreateBoard, callback?: never): Promise<T>;\n  async createBoard<T = Models.CreateBoard>(\n    parameters: Parameters.CreateBoard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/agile/1.0/board',\n      method: 'POST',\n      data: {\n        filterId: parameters.filterId,\n        location: parameters.location,\n        name: parameters.name,\n        type: parameters.type,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns any boards which use the provided filter id. This method can be executed by users without a valid software\n   * license in order to find which boards are using a particular filter.\n   */\n  async getBoardByFilterId<T = Models.GetBoardByFilterId>(\n    parameters: Parameters.GetBoardByFilterId,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns any boards which use the provided filter id. This method can be executed by users without a valid software\n   * license in order to find which boards are using a particular filter.\n   */\n  async getBoardByFilterId<T = Models.GetBoardByFilterId>(\n    parameters: Parameters.GetBoardByFilterId,\n    callback?: never,\n  ): Promise<T>;\n  async getBoardByFilterId<T = Models.GetBoardByFilterId>(\n    parameters: Parameters.GetBoardByFilterId,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/filter/${parameters.filterId}`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the board for the given board ID. This board will only be returned if the user has permission to view it.\n   * Admins without the view permission will see the board as a private one, so will see only a subset of the board's\n   * data (board location for instance).\n   */\n  async getBoard<T = Models.GetBoard>(parameters: Parameters.GetBoard, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the board for the given board ID. This board will only be returned if the user has permission to view it.\n   * Admins without the view permission will see the board as a private one, so will see only a subset of the board's\n   * data (board location for instance).\n   */\n  async getBoard<T = Models.GetBoard>(parameters: Parameters.GetBoard, callback?: never): Promise<T>;\n  async getBoard<T = Models.GetBoard>(parameters: Parameters.GetBoard, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Deletes the board. Admin without the view permission can still remove the board. */\n  async deleteBoard<T = void>(parameters: Parameters.DeleteBoard, callback: Callback<T>): Promise<void>;\n  /** Deletes the board. Admin without the view permission can still remove the board. */\n  async deleteBoard<T = void>(parameters: Parameters.DeleteBoard, callback?: never): Promise<T>;\n  async deleteBoard<T = void>(parameters: Parameters.DeleteBoard, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all issues from the board's backlog, for the given board ID. This only includes issues that the user has\n   * permission to view. The backlog contains incomplete issues that are not assigned to any future or active sprint.\n   * Note, if the user does not have permission to view the board, no issues will be returned at all. Issues returned\n   * from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned\n   * issues are ordered by rank.\n   */\n  async getIssuesForBacklog<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesForBacklog,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all issues from the board's backlog, for the given board ID. This only includes issues that the user has\n   * permission to view. The backlog contains incomplete issues that are not assigned to any future or active sprint.\n   * Note, if the user does not have permission to view the board, no issues will be returned at all. Issues returned\n   * from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default, the returned\n   * issues are ordered by rank.\n   */\n  async getIssuesForBacklog<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesForBacklog,\n    callback?: never,\n  ): Promise<T>;\n  async getIssuesForBacklog<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesForBacklog,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/backlog`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        jql: parameters.jql,\n        validateQuery: parameters.validateQuery,\n        fields: parameters.fields,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Get the board configuration. The response contains the following fields:\n   *\n   * - `id` - ID of the board.\n   * - `name` - Name of the board.\n   * - `filter` - Reference to the filter used by the given board.\n   * - `location` - Reference to the container that the board is located in. Includes the container type (Valid values:\n   *   project, user).\n   * - `subQuery` (Kanban only) - JQL subquery used by the given board.\n   * - `columnConfig` - The column configuration lists the columns for the board, in the order defined in the column\n   *   configuration. For each column, it shows the issue status mapping as well as the constraint type (Valid values:\n   *   none, issueCount, issueCountExclSubs) for the min/max number of issues. Note, the last column with statuses\n   *   mapped to it is treated as the \"Done\" column, which means that issues in that column will be marked as already\n   *   completed.\n   * - `estimation` (Scrum only) - Contains information about type of estimation used for the board. Valid values: none,\n   *   issueCount, field. If the estimation type is \"field\", the ID and display name of the field used for estimation is\n   *   also returned. Note, estimates for an issue can be updated by a PUT /rest/api/3/issue/{issueIdOrKey} request,\n   *   however the fields must be on the screen. \"timeoriginalestimate\" field will never be on the screen, so in order\n   *   to update it \"originalEstimate\" in \"timetracking\" field should be updated.\n   * - `ranking` - Contains information about custom field used for ranking in the given board.\n   */\n  async getConfiguration<T = Models.GetConfiguration>(\n    parameters: Parameters.GetConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Get the board configuration. The response contains the following fields:\n   *\n   * - `id` - ID of the board.\n   * - `name` - Name of the board.\n   * - `filter` - Reference to the filter used by the given board.\n   * - `location` - Reference to the container that the board is located in. Includes the container type (Valid values:\n   *   project, user).\n   * - `subQuery` (Kanban only) - JQL subquery used by the given board.\n   * - `columnConfig` - The column configuration lists the columns for the board, in the order defined in the column\n   *   configuration. For each column, it shows the issue status mapping as well as the constraint type (Valid values:\n   *   none, issueCount, issueCountExclSubs) for the min/max number of issues. Note, the last column with statuses\n   *   mapped to it is treated as the \"Done\" column, which means that issues in that column will be marked as already\n   *   completed.\n   * - `estimation` (Scrum only) - Contains information about type of estimation used for the board. Valid values: none,\n   *   issueCount, field. If the estimation type is \"field\", the ID and display name of the field used for estimation is\n   *   also returned. Note, estimates for an issue can be updated by a PUT /rest/api/3/issue/{issueIdOrKey} request,\n   *   however the fields must be on the screen. \"timeoriginalestimate\" field will never be on the screen, so in order\n   *   to update it \"originalEstimate\" in \"timetracking\" field should be updated.\n   * - `ranking` - Contains information about custom field used for ranking in the given board.\n   */\n  async getConfiguration<T = Models.GetConfiguration>(\n    parameters: Parameters.GetConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async getConfiguration<T = Models.GetConfiguration>(\n    parameters: Parameters.GetConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/configuration`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all epics from the board, for the given board ID. This only includes epics that the user has permission to\n   * view. Note, if the user does not have permission to view the board, no epics will be returned at all.\n   */\n  async getEpics<T = Paginated<Models.Epic>>(parameters: Parameters.GetEpics, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all epics from the board, for the given board ID. This only includes epics that the user has permission to\n   * view. Note, if the user does not have permission to view the board, no epics will be returned at all.\n   */\n  async getEpics<T = Paginated<Models.Epic>>(parameters: Parameters.GetEpics, callback?: never): Promise<T>;\n  async getEpics<T = Paginated<Models.Epic>>(\n    parameters: Parameters.GetEpics,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/epic`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        done: parameters.done,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all issues that do not belong to any epic on a board, for a given board ID. This only includes issues that\n   * the user has permission to view. Issues returned from this resource include Agile fields, like sprint,\n   * closedSprints, flagged, and epic. By default, the returned issues are ordered by rank.\n   */\n  async getIssuesWithoutEpicForBoard<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesWithoutEpicForBoard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all issues that do not belong to any epic on a board, for a given board ID. This only includes issues that\n   * the user has permission to view. Issues returned from this resource include Agile fields, like sprint,\n   * closedSprints, flagged, and epic. By default, the returned issues are ordered by rank.\n   */\n  async getIssuesWithoutEpicForBoard<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesWithoutEpicForBoard,\n    callback?: never,\n  ): Promise<T>;\n  async getIssuesWithoutEpicForBoard<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesWithoutEpicForBoard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/epic/none/issue`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        jql: parameters.jql,\n        validateQuery: parameters.validateQuery,\n        fields: parameters.fields,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all issues that belong to an epic on the board, for the given epic ID and the board ID. This only includes\n   * issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint,\n   * closedSprints, flagged, and epic. By default, the returned issues are ordered by rank.\n   */\n  async getBoardIssuesForEpic<T = Models.SearchResults>(\n    parameters: Parameters.GetBoardIssuesForEpic,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all issues that belong to an epic on the board, for the given epic ID and the board ID. This only includes\n   * issues that the user has permission to view. Issues returned from this resource include Agile fields, like sprint,\n   * closedSprints, flagged, and epic. By default, the returned issues are ordered by rank.\n   */\n  async getBoardIssuesForEpic<T = Models.SearchResults>(\n    parameters: Parameters.GetBoardIssuesForEpic,\n    callback?: never,\n  ): Promise<T>;\n  async getBoardIssuesForEpic<T = Models.SearchResults>(\n    parameters: Parameters.GetBoardIssuesForEpic,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/epic/${parameters.epicId}/issue`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        jql: parameters.jql,\n        validateQuery: parameters.validateQuery,\n        fields: parameters.fields,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  async getFeaturesForBoard<T = Models.GetFeaturesForBoard>(\n    parameters: Parameters.GetFeaturesForBoard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  async getFeaturesForBoard<T = Models.GetFeaturesForBoard>(\n    parameters: Parameters.GetFeaturesForBoard,\n    callback?: never,\n  ): Promise<T>;\n  async getFeaturesForBoard<T = Models.GetFeaturesForBoard>(\n    parameters: Parameters.GetFeaturesForBoard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/features`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  async toggleFeatures<T = Models.ToggleFeatures>(\n    parameters: Parameters.ToggleFeatures,\n    callback: Callback<T>,\n  ): Promise<void>;\n  async toggleFeatures<T = Models.ToggleFeatures>(parameters: Parameters.ToggleFeatures, callback?: never): Promise<T>;\n  async toggleFeatures<T = Models.ToggleFeatures>(\n    parameters: Parameters.ToggleFeatures,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/features`,\n      method: 'PUT',\n      data: parameters.body,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all issues from a board, for a given board ID. This only includes issues that the user has permission to\n   * view. An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to\n   * the scrum boards. Note, if the user does not have permission to view the board, no issues will be returned at all.\n   * Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default,\n   * the returned issues are ordered by rank.\n   */\n  async getIssuesForBoard<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesForBoard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all issues from a board, for a given board ID. This only includes issues that the user has permission to\n   * view. An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to\n   * the scrum boards. Note, if the user does not have permission to view the board, no issues will be returned at all.\n   * Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default,\n   * the returned issues are ordered by rank.\n   */\n  async getIssuesForBoard<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesForBoard,\n    callback?: never,\n  ): Promise<T>;\n  async getIssuesForBoard<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesForBoard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/issue`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        jql: parameters.jql,\n        validateQuery: parameters.validateQuery,\n        fields: parameters.fields,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Move issues from the backlog to the board (if they are already in the backlog of that board).\\\n   * This operation either moves an issue(s) onto a board from the backlog (by adding it to the issueList for the board)\n   * Or transitions the issue(s) to the first column for a kanban board with backlog. At most 50 issues may be moved at\n   * once.\n   */\n  async moveIssuesToBoard<T = void>(parameters: Parameters.MoveIssuesToBoard, callback: Callback<T>): Promise<void>;\n  /**\n   * Move issues from the backlog to the board (if they are already in the backlog of that board).\\\n   * This operation either moves an issue(s) onto a board from the backlog (by adding it to the issueList for the board)\n   * Or transitions the issue(s) to the first column for a kanban board with backlog. At most 50 issues may be moved at\n   * once.\n   */\n  async moveIssuesToBoard<T = void>(parameters: Parameters.MoveIssuesToBoard, callback?: never): Promise<T>;\n  async moveIssuesToBoard<T = void>(\n    parameters: Parameters.MoveIssuesToBoard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/issue`,\n      method: 'POST',\n      data: {\n        issues: parameters.issues,\n        rankAfterIssue: parameters.rankAfterIssue,\n        rankBeforeIssue: parameters.rankBeforeIssue,\n        rankCustomFieldId: parameters.rankCustomFieldId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all projects that are associated with the board, for the given board ID. If the user does not have\n   * permission to view the board, no projects will be returned at all. Returned projects are ordered by the name.\n   *\n   * A project is associated with a board if the board filter contains reference the project or there is an issue from\n   * the project that belongs to the board.\n   *\n   * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned\n   * from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have\n   * reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to\n   * any project.\n   *\n   * An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to the\n   * scrum boards.\n   */\n  async getProjects<T = Paginated<Models.Projects>>(\n    parameters: Parameters.GetProjects,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all projects that are associated with the board, for the given board ID. If the user does not have\n   * permission to view the board, no projects will be returned at all. Returned projects are ordered by the name.\n   *\n   * A project is associated with a board if the board filter contains reference the project or there is an issue from\n   * the project that belongs to the board.\n   *\n   * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned\n   * from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have\n   * reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to\n   * any project.\n   *\n   * An issue belongs to the board if its status is mapped to the board's column. Epic issues do not belongs to the\n   * scrum boards.\n   */\n  async getProjects<T = Paginated<Models.Projects>>(parameters: Parameters.GetProjects, callback?: never): Promise<T>;\n  async getProjects<T = Paginated<Models.Projects>>(\n    parameters: Parameters.GetProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/project`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all projects that are statically associated with the board, for the given board ID. Returned projects are\n   * ordered by the name.\n   *\n   * A project is associated with a board if the board filter contains reference the project.\n   *\n   * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned\n   * from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have\n   * reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to\n   * any project.\n   */\n  async getProjectsFull<T = Models.Projects[]>(\n    parameters: Parameters.GetProjectsFull,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all projects that are statically associated with the board, for the given board ID. Returned projects are\n   * ordered by the name.\n   *\n   * A project is associated with a board if the board filter contains reference the project.\n   *\n   * The board filter contains reference the project only if JQL query guarantees that returned issues will be returned\n   * from the project set defined in JQL. For instance the query `project in (ABC, BCD) AND reporter = admin` have\n   * reference to ABC and BCD projects but query `project in (ABC, BCD) OR reporter = admin` doesn't have reference to\n   * any project.\n   */\n  async getProjectsFull<T = Models.Projects[]>(parameters: Parameters.GetProjectsFull, callback?: never): Promise<T>;\n  async getProjectsFull<T = Models.Projects[]>(\n    parameters: Parameters.GetProjectsFull,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/project/full`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the keys of all properties for the board identified by the id. The user who retrieves the property keys is\n   * required to have permissions to view the board.\n   */\n  async getBoardPropertyKeys<T = unknown>(\n    parameters: Parameters.GetBoardPropertyKeys,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all properties for the board identified by the id. The user who retrieves the property keys is\n   * required to have permissions to view the board.\n   */\n  async getBoardPropertyKeys<T = unknown>(parameters: Parameters.GetBoardPropertyKeys, callback?: never): Promise<T>;\n  async getBoardPropertyKeys<T = unknown>(\n    parameters: Parameters.GetBoardPropertyKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of the property with a given key from the board identified by the provided id. The user who\n   * retrieves the property is required to have permissions to view the board.\n   */\n  async getBoardProperty<T = unknown>(parameters: Parameters.GetBoardProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the value of the property with a given key from the board identified by the provided id. The user who\n   * retrieves the property is required to have permissions to view the board.\n   */\n  async getBoardProperty<T = unknown>(parameters: Parameters.GetBoardProperty, callback?: never): Promise<T>;\n  async getBoardProperty<T = unknown>(\n    parameters: Parameters.GetBoardProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of the specified board's property.\n   *\n   * You can use this resource to store a custom data against the board identified by the id. The user who stores the\n   * data is required to have permissions to modify the board.\n   */\n  async setBoardProperty<T = unknown>(parameters: Parameters.SetBoardProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the value of the specified board's property.\n   *\n   * You can use this resource to store a custom data against the board identified by the id. The user who stores the\n   * data is required to have permissions to modify the board.\n   */\n  async setBoardProperty<T = unknown>(parameters: Parameters.SetBoardProperty, callback?: never): Promise<T>;\n  async setBoardProperty<T = unknown>(\n    parameters: Parameters.SetBoardProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes the property from the board identified by the id. Ths user removing the property is required to have\n   * permissions to modify the board.\n   */\n  async deleteBoardProperty<T = void>(parameters: Parameters.DeleteBoardProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Removes the property from the board identified by the id. Ths user removing the property is required to have\n   * permissions to modify the board.\n   */\n  async deleteBoardProperty<T = void>(parameters: Parameters.DeleteBoardProperty, callback?: never): Promise<T>;\n  async deleteBoardProperty<T = void>(\n    parameters: Parameters.DeleteBoardProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns all quick filters from a board, for a given board ID. */\n  async getAllQuickFilters<T = Models.GetAllQuickFilters>(\n    parameters: Parameters.GetAllQuickFilters,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns all quick filters from a board, for a given board ID. */\n  async getAllQuickFilters<T = Models.GetAllQuickFilters>(\n    parameters: Parameters.GetAllQuickFilters,\n    callback?: never,\n  ): Promise<T>;\n  async getAllQuickFilters<T = Models.GetAllQuickFilters>(\n    parameters: Parameters.GetAllQuickFilters,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/quickfilter`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the quick filter for a given quick filter ID. The quick filter will only be returned if the user can view\n   * the board that the quick filter belongs to.\n   */\n  async getQuickFilter<T = Models.GetQuickFilter>(\n    parameters: Parameters.GetQuickFilter,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the quick filter for a given quick filter ID. The quick filter will only be returned if the user can view\n   * the board that the quick filter belongs to.\n   */\n  async getQuickFilter<T = Models.GetQuickFilter>(parameters: Parameters.GetQuickFilter, callback?: never): Promise<T>;\n  async getQuickFilter<T = Models.GetQuickFilter>(\n    parameters: Parameters.GetQuickFilter,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/quickfilter/${parameters.quickFilterId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  async getReportsForBoard<T = Models.GetReportsForBoard>(\n    parameters: Parameters.GetReportsForBoard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  async getReportsForBoard<T = Models.GetReportsForBoard>(\n    parameters: Parameters.GetReportsForBoard,\n    callback?: never,\n  ): Promise<T>;\n  async getReportsForBoard<T = Models.GetReportsForBoard>(\n    parameters: Parameters.GetReportsForBoard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/reports`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all sprints from a board, for a given board ID. This only includes sprints that the user has permission to\n   * view.\n   */\n  async getAllSprints<T = Paginated<Models.Sprint>>(\n    parameters: Parameters.GetAllSprints,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all sprints from a board, for a given board ID. This only includes sprints that the user has permission to\n   * view.\n   */\n  async getAllSprints<T = Paginated<Models.Sprint>>(parameters: Parameters.GetAllSprints, callback?: never): Promise<T>;\n  async getAllSprints<T = Paginated<Models.Sprint>>(\n    parameters: Parameters.GetAllSprints,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/sprint`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        state: parameters.state,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Get all issues you have access to that belong to the sprint from the board. Issue returned from this resource\n   * contains additional fields like: sprint, closedSprints, flagged and epic. Issues are returned ordered by rank. JQL\n   * order has higher priority than default rank.\n   */\n  async getBoardIssuesForSprint<T = unknown>(\n    parameters: Parameters.GetBoardIssuesForSprint,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Get all issues you have access to that belong to the sprint from the board. Issue returned from this resource\n   * contains additional fields like: sprint, closedSprints, flagged and epic. Issues are returned ordered by rank. JQL\n   * order has higher priority than default rank.\n   */\n  async getBoardIssuesForSprint<T = unknown>(\n    parameters: Parameters.GetBoardIssuesForSprint,\n    callback?: never,\n  ): Promise<T>;\n  async getBoardIssuesForSprint<T = unknown>(\n    parameters: Parameters.GetBoardIssuesForSprint,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/sprint/${parameters.sprintId}/issue`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        jql: parameters.jql,\n        validateQuery: parameters.validateQuery,\n        fields: parameters.fields,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all versions from a board, for a given board ID. This only includes versions that the user has permission\n   * to view. Note, if the user does not have permission to view the board, no versions will be returned at all.\n   * Returned versions are ordered by the name of the project from which they belong and then by sequence defined by\n   * user.\n   */\n  async getAllVersions<T = Paginated<Models.Version>>(\n    parameters: Parameters.GetAllVersions,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all versions from a board, for a given board ID. This only includes versions that the user has permission\n   * to view. Note, if the user does not have permission to view the board, no versions will be returned at all.\n   * Returned versions are ordered by the name of the project from which they belong and then by sequence defined by\n   * user.\n   */\n  async getAllVersions<T = Paginated<Models.Version>>(\n    parameters: Parameters.GetAllVersions,\n    callback?: never,\n  ): Promise<T>;\n  async getAllVersions<T = Paginated<Models.Version>>(\n    parameters: Parameters.GetAllVersions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/board/${parameters.boardId}/version`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        released: parameters.released,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Builds {\n  constructor(private client: Client) {}\n\n  /**\n   * Update / insert builds data.\n   *\n   * Builds are identified by the combination of `pipelineId` and `buildNumber`, and existing build data for the same\n   * build will be replaced if it exists and the `updateSequenceNumber` of the existing data is less than the incoming\n   * data.\n   *\n   * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * `getBuildByKey` operation can be used to confirm that data has been stored successfully (if needed).\n   *\n   * In the case of multiple builds being submitted in one request, each is validated individually prior to submission.\n   * Details of which build failed submission (if any) are available in the response object.\n   *\n   * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'WRITE' scope for Connect apps.\n   */\n  async submitBuilds<T = Models.SubmitBuilds>(\n    parameters: Parameters.SubmitBuilds,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update / insert builds data.\n   *\n   * Builds are identified by the combination of `pipelineId` and `buildNumber`, and existing build data for the same\n   * build will be replaced if it exists and the `updateSequenceNumber` of the existing data is less than the incoming\n   * data.\n   *\n   * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * `getBuildByKey` operation can be used to confirm that data has been stored successfully (if needed).\n   *\n   * In the case of multiple builds being submitted in one request, each is validated individually prior to submission.\n   * Details of which build failed submission (if any) are available in the response object.\n   *\n   * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'WRITE' scope for Connect apps.\n   */\n  async submitBuilds<T = Models.SubmitBuilds>(parameters: Parameters.SubmitBuilds, callback?: never): Promise<T>;\n  async submitBuilds<T = Models.SubmitBuilds>(\n    parameters: Parameters.SubmitBuilds,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/builds/0.1/bulk',\n      method: 'POST',\n      data: {\n        properties: parameters.properties,\n        builds: parameters.builds,\n        providerMetadata: parameters.providerMetadata,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk delete all builds data that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. Optional param\n   * `_updateSequenceNumber` is no longer supported. If more than one Property is provided, data will be deleted that\n   * matches ALL of the Properties (e.g. treated as an AND).\n   *\n   * See the documentation for the `submitBuilds` operation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345\n   *\n   * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteBuildsByProperty<T = unknown>(\n    parameters: Parameters.DeleteBuildsByProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk delete all builds data that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. Optional param\n   * `_updateSequenceNumber` is no longer supported. If more than one Property is provided, data will be deleted that\n   * matches ALL of the Properties (e.g. treated as an AND).\n   *\n   * See the documentation for the `submitBuilds` operation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345\n   *\n   * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteBuildsByProperty<T = unknown>(\n    parameters: Parameters.DeleteBuildsByProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteBuildsByProperty<T = unknown>(\n    parameters: Parameters.DeleteBuildsByProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/builds/0.1/bulkByProperties',\n      method: 'DELETE',\n      params: {\n        _updateSequenceNumber: parameters.updateSequenceNumber,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve the currently stored build data for the given `pipelineId` and `buildNumber` combination.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'READ' scope for Connect apps.\n   */\n  async getBuildByKey<T = Models.GetBuildByKey>(\n    parameters: Parameters.GetBuildByKey,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve the currently stored build data for the given `pipelineId` and `buildNumber` combination.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'READ' scope for Connect apps.\n   */\n  async getBuildByKey<T = Models.GetBuildByKey>(parameters: Parameters.GetBuildByKey, callback?: never): Promise<T>;\n  async getBuildByKey<T = Models.GetBuildByKey>(\n    parameters: Parameters.GetBuildByKey,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/builds/0.1/pipelines/${parameters.pipelineId}/builds/${parameters.buildNumber}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Delete the build data currently stored for the given `pipelineId` and `buildNumber` combination.\n   *\n   * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteBuildByKey<T = unknown>(parameters: Parameters.DeleteBuildByKey, callback: Callback<T>): Promise<void>;\n  /**\n   * Delete the build data currently stored for the given `pipelineId` and `buildNumber` combination.\n   *\n   * Deletion is performed asynchronously. The `getBuildByKey` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraBuildInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteBuildByKey<T = unknown>(parameters: Parameters.DeleteBuildByKey, callback?: never): Promise<T>;\n  async deleteBuildByKey<T = unknown>(\n    parameters: Parameters.DeleteBuildByKey,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/builds/0.1/pipelines/${parameters.pipelineId}/builds/${parameters.buildNumber}`,\n      method: 'DELETE',\n      params: {\n        _updateSequenceNumber: parameters.updateSequenceNumber,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Deployments {\n  constructor(private client: Client) {}\n\n  /**\n   * Update / insert deployment data.\n   *\n   * Deployments are identified by the combination of `pipelineId`, `environmentId` and `deploymentSequenceNumber`, and\n   * existing deployment data for the same deployment will be replaced if it exists and the `updateSequenceNumber` of\n   * existing data is less than the incoming data.\n   *\n   * Submissions are processed asynchronously. Submitted data will eventually be available in Jira. Most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * `getDeploymentByKey` operation can be used to confirm that data has been stored successfully (if needed).\n   *\n   * In the case of multiple deployments being submitted in one request, each is validated individually prior to\n   * submission. Details of which deployments failed submission (if any) are available in the response object.\n   *\n   * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'WRITE' scope for Connect apps.\n   */\n  async submitDeployments<T = Models.SubmitDeployments>(\n    parameters: Parameters.SubmitDeployments,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update / insert deployment data.\n   *\n   * Deployments are identified by the combination of `pipelineId`, `environmentId` and `deploymentSequenceNumber`, and\n   * existing deployment data for the same deployment will be replaced if it exists and the `updateSequenceNumber` of\n   * existing data is less than the incoming data.\n   *\n   * Submissions are processed asynchronously. Submitted data will eventually be available in Jira. Most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * `getDeploymentByKey` operation can be used to confirm that data has been stored successfully (if needed).\n   *\n   * In the case of multiple deployments being submitted in one request, each is validated individually prior to\n   * submission. Details of which deployments failed submission (if any) are available in the response object.\n   *\n   * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'WRITE' scope for Connect apps.\n   */\n  async submitDeployments<T = Models.SubmitDeployments>(\n    parameters: Parameters.SubmitDeployments,\n    callback?: never,\n  ): Promise<T>;\n  async submitDeployments<T = Models.SubmitDeployments>(\n    parameters: Parameters.SubmitDeployments,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/deployments/0.1/bulk',\n      method: 'POST',\n      data: {\n        properties: parameters.properties,\n        deployments: parameters.deployments,\n        providerMetadata: parameters.providerMetadata,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk delete all deployments that match the given request.\n   *\n   * One or more query params must be supplied to specify the Properties to delete by. Optional param\n   * `_updateSequenceNumber` is no longer supported. If more than one Property is provided, data will be deleted that\n   * matches ALL of the Properties (i.e. treated as AND). See the documentation for the `submitDeployments` operation\n   * for more details.\n   *\n   * Example operation: DELETE /bulkByProperties?accountId=account-123&createdBy=user-456\n   *\n   * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteDeploymentsByProperty<T = unknown>(\n    parameters: Parameters.DeleteDeploymentsByProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk delete all deployments that match the given request.\n   *\n   * One or more query params must be supplied to specify the Properties to delete by. Optional param\n   * `_updateSequenceNumber` is no longer supported. If more than one Property is provided, data will be deleted that\n   * matches ALL of the Properties (i.e. treated as AND). See the documentation for the `submitDeployments` operation\n   * for more details.\n   *\n   * Example operation: DELETE /bulkByProperties?accountId=account-123&createdBy=user-456\n   *\n   * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteDeploymentsByProperty<T = unknown>(\n    parameters: Parameters.DeleteDeploymentsByProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteDeploymentsByProperty<T = unknown>(\n    parameters: Parameters.DeleteDeploymentsByProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/deployments/0.1/bulkByProperties',\n      method: 'DELETE',\n      params: {\n        _updateSequenceNumber: parameters.updateSequenceNumber,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve the currently stored deployment data for the given `pipelineId`, `environmentId` and\n   * `deploymentSequenceNumber` combination.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'READ' scope for Connect apps.\n   */\n  async getDeploymentByKey<T = Models.GetDeploymentByKey>(\n    parameters: Parameters.GetDeploymentByKey,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve the currently stored deployment data for the given `pipelineId`, `environmentId` and\n   * `deploymentSequenceNumber` combination.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'READ' scope for Connect apps.\n   */\n  async getDeploymentByKey<T = Models.GetDeploymentByKey>(\n    parameters: Parameters.GetDeploymentByKey,\n    callback?: never,\n  ): Promise<T>;\n  async getDeploymentByKey<T = Models.GetDeploymentByKey>(\n    parameters: Parameters.GetDeploymentByKey,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/deployments/0.1/pipelines/${parameters.pipelineId}/environments/${parameters.environmentId}/deployments/${parameters.deploymentSequenceNumber}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Delete the currently stored deployment data for the given `pipelineId`, `environmentId` and\n   * `deploymentSequenceNumber` combination.\n   *\n   * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteDeploymentByKey<T = unknown>(\n    parameters: Parameters.DeleteDeploymentByKey,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Delete the currently stored deployment data for the given `pipelineId`, `environmentId` and\n   * `deploymentSequenceNumber` combination.\n   *\n   * Deletion is performed asynchronously. The `getDeploymentByKey` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraDeploymentInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteDeploymentByKey<T = unknown>(parameters: Parameters.DeleteDeploymentByKey, callback?: never): Promise<T>;\n  async deleteDeploymentByKey<T = unknown>(\n    parameters: Parameters.DeleteDeploymentByKey,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/deployments/0.1/pipelines/${parameters.pipelineId}/environments/${parameters.environmentId}/deployments/${parameters.deploymentSequenceNumber}`,\n      method: 'DELETE',\n      params: {\n        _updateSequenceNumber: parameters.updateSequenceNumber,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve the Deployment gating status for the given `pipelineId + environmentId + deploymentSequenceNumber`\n   * combination. Only apps that define the `jiraDeploymentInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope.\n   */\n  async getDeploymentGatingStatusByKey<T = Models.GetDeploymentGatingStatusByKey>(\n    parameters: Parameters.GetDeploymentGatingStatusByKey,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve the Deployment gating status for the given `pipelineId + environmentId + deploymentSequenceNumber`\n   * combination. Only apps that define the `jiraDeploymentInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope.\n   */\n  async getDeploymentGatingStatusByKey<T = Models.GetDeploymentGatingStatusByKey>(\n    parameters: Parameters.GetDeploymentGatingStatusByKey,\n    callback?: never,\n  ): Promise<T>;\n  async getDeploymentGatingStatusByKey<T = Models.GetDeploymentGatingStatusByKey>(\n    parameters: Parameters.GetDeploymentGatingStatusByKey,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/deployments/0.1/pipelines/${parameters.pipelineId}/environments/${parameters.environmentId}/deployments/${parameters.deploymentSequenceNumber}/gating-status`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class DevelopmentInformation {\n  constructor(private client: Client) {}\n\n  /**\n   * Stores development information provided in the request to make it available when viewing issues in Jira. Existing\n   * repository and entity data for the same ID will be replaced if the updateSequenceId of existing data is less than\n   * the incoming data. Submissions are performed asynchronously. Submitted data will eventually be available in Jira;\n   * most updates are available within a short period of time, but may take some time during peak load and/or\n   * maintenance times.\n   */\n  async storeDevelopmentInformation<T = Models.StoreDevelopmentInformation>(\n    parameters: Parameters.StoreDevelopmentInformation,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Stores development information provided in the request to make it available when viewing issues in Jira. Existing\n   * repository and entity data for the same ID will be replaced if the updateSequenceId of existing data is less than\n   * the incoming data. Submissions are performed asynchronously. Submitted data will eventually be available in Jira;\n   * most updates are available within a short period of time, but may take some time during peak load and/or\n   * maintenance times.\n   */\n  async storeDevelopmentInformation<T = Models.StoreDevelopmentInformation>(\n    parameters: Parameters.StoreDevelopmentInformation,\n    callback?: never,\n  ): Promise<T>;\n  async storeDevelopmentInformation<T = Models.StoreDevelopmentInformation>(\n    parameters: Parameters.StoreDevelopmentInformation,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/devinfo/0.10/bulk',\n      method: 'POST',\n      data: {\n        repositories: parameters.repositories,\n        preventTransitions: parameters.preventTransitions,\n        operationType: parameters.operationType,\n        properties: parameters.properties,\n        providerMetadata: parameters.providerMetadata,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * For the specified repository ID, retrieves the repository and the most recent 400 development information entities.\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   */\n  async getRepository<T = Models.GetRepository>(\n    parameters: Parameters.GetRepository,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * For the specified repository ID, retrieves the repository and the most recent 400 development information entities.\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   */\n  async getRepository<T = Models.GetRepository>(parameters: Parameters.GetRepository, callback?: never): Promise<T>;\n  async getRepository<T = Models.GetRepository>(\n    parameters: Parameters.GetRepository,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/devinfo/0.10/repository/${parameters.repositoryId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the repository data stored by the given ID and all related development information entities. Deletion is\n   * performed asynchronously.\n   */\n  async deleteRepository<T = unknown>(parameters: Parameters.DeleteRepository, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes the repository data stored by the given ID and all related development information entities. Deletion is\n   * performed asynchronously.\n   */\n  async deleteRepository<T = unknown>(parameters: Parameters.DeleteRepository, callback?: never): Promise<T>;\n  async deleteRepository<T = unknown>(\n    parameters: Parameters.DeleteRepository,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/devinfo/0.10/repository/${parameters.repositoryId}`,\n      method: 'DELETE',\n      params: {\n        _updateSequenceId: parameters.updateSequenceId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes development information entities which have all the provided properties. Repositories which have properties\n   * that match ALL of the properties (i.e. treated as an AND), and all their related development information (such as\n   * commits, branches and pull requests), will be deleted. For example if request is `DELETE\n   * bulk?accountId=123&projectId=ABC` entities which have properties `accountId=123` and `projectId=ABC` will be\n   * deleted. Optional param `_updateSequenceId` is no longer supported. Deletion is performed asynchronously: specified\n   * entities will eventually be removed from Jira.\n   */\n  async deleteByProperties<T = unknown>(\n    parameters: Parameters.DeleteByProperties,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes development information entities which have all the provided properties. Repositories which have properties\n   * that match ALL of the properties (i.e. treated as an AND), and all their related development information (such as\n   * commits, branches and pull requests), will be deleted. For example if request is `DELETE\n   * bulk?accountId=123&projectId=ABC` entities which have properties `accountId=123` and `projectId=ABC` will be\n   * deleted. Optional param `_updateSequenceId` is no longer supported. Deletion is performed asynchronously: specified\n   * entities will eventually be removed from Jira.\n   */\n  async deleteByProperties<T = unknown>(parameters: Parameters.DeleteByProperties, callback?: never): Promise<T>;\n  async deleteByProperties<T = unknown>(\n    parameters: Parameters.DeleteByProperties,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/devinfo/0.10/bulkByProperties',\n      method: 'DELETE',\n      params: {\n        _updateSequenceId: parameters.updateSequenceId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Checks if repositories which have all the provided properties exists. For example, if request is `GET\n   * existsByProperties?accountId=123&projectId=ABC` then result will be positive only if there is at least one\n   * repository with both properties `accountId=123` and `projectId=ABC`. Special property `_updateSequenceId` can be\n   * used to filter all entities with updateSequenceId less or equal than the value specified. In addition to the\n   * optional `_updateSequenceId`, one or more query params must be supplied to specify properties to search by.\n   */\n  async existsByProperties<T = Models.ExistsByProperties>(\n    parameters: Parameters.ExistsByProperties,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Checks if repositories which have all the provided properties exists. For example, if request is `GET\n   * existsByProperties?accountId=123&projectId=ABC` then result will be positive only if there is at least one\n   * repository with both properties `accountId=123` and `projectId=ABC`. Special property `_updateSequenceId` can be\n   * used to filter all entities with updateSequenceId less or equal than the value specified. In addition to the\n   * optional `_updateSequenceId`, one or more query params must be supplied to specify properties to search by.\n   */\n  async existsByProperties<T = Models.ExistsByProperties>(\n    parameters: Parameters.ExistsByProperties,\n    callback?: never,\n  ): Promise<T>;\n  async existsByProperties<T = Models.ExistsByProperties>(\n    parameters: Parameters.ExistsByProperties,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/devinfo/0.10/existsByProperties',\n      method: 'GET',\n      params: {\n        _updateSequenceId: parameters.updateSequenceId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Deletes particular development information entity. Deletion is performed asynchronously. */\n  async deleteEntity<T = unknown>(parameters: Parameters.DeleteEntity, callback: Callback<T>): Promise<void>;\n  /** Deletes particular development information entity. Deletion is performed asynchronously. */\n  async deleteEntity<T = unknown>(parameters: Parameters.DeleteEntity, callback?: never): Promise<T>;\n  async deleteEntity<T = unknown>(parameters: Parameters.DeleteEntity, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/devinfo/0.10/repository/${parameters.repositoryId}/${parameters.entityType}/${parameters.entityId}`,\n      method: 'DELETE',\n      params: {\n        _updateSequenceId: parameters.updateSequenceId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class DevopsComponents {\n  constructor(private client: Client) {}\n\n  /**\n   * Update / insert DevOps Component data.\n   *\n   * Components are identified by their ID, and existing Component data for the same ID will be replaced if it exists\n   * and the updateSequenceNumber of existing data is less than the incoming data.\n   *\n   * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * getComponentById operation can be used to confirm that data has been stored successfully (if needed).\n   *\n   * In the case of multiple Components being submitted in one request, each is validated individually prior to\n   * submission. Details of which Components failed submission (if any) are available in the response object.\n   *\n   * A maximum of 1000 components can be submitted in one request.\n   *\n   * Only Connect apps that define the `jiraDevOpsComponentProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitComponents<T = Models.SubmitComponents>(\n    parameters: Parameters.SubmitComponents,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update / insert DevOps Component data.\n   *\n   * Components are identified by their ID, and existing Component data for the same ID will be replaced if it exists\n   * and the updateSequenceNumber of existing data is less than the incoming data.\n   *\n   * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * getComponentById operation can be used to confirm that data has been stored successfully (if needed).\n   *\n   * In the case of multiple Components being submitted in one request, each is validated individually prior to\n   * submission. Details of which Components failed submission (if any) are available in the response object.\n   *\n   * A maximum of 1000 components can be submitted in one request.\n   *\n   * Only Connect apps that define the `jiraDevOpsComponentProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitComponents<T = Models.SubmitComponents>(\n    parameters: Parameters.SubmitComponents,\n    callback?: never,\n  ): Promise<T>;\n  async submitComponents<T = Models.SubmitComponents>(\n    parameters: Parameters.SubmitComponents,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/devopscomponents/1.0/bulk',\n      method: 'POST',\n      data: {\n        properties: parameters.properties,\n        components: parameters.components,\n        providerMetadata: parameters.providerMetadata,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk delete all Components that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. If more than one Property is\n   * provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). See the documentation\n   * for the submitComponents operation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456\n   *\n   * Deletion is performed asynchronously. The getComponentById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraDevOpsComponentProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteComponentsByProperty<T = void>(\n    parameters: Parameters.DeleteComponentsByProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk delete all Components that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. If more than one Property is\n   * provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). See the documentation\n   * for the submitComponents operation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456\n   *\n   * Deletion is performed asynchronously. The getComponentById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraDevOpsComponentProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteComponentsByProperty<T = void>(\n    parameters: Parameters.DeleteComponentsByProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteComponentsByProperty<T = void>(\n    parameters: Parameters.DeleteComponentsByProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/devopscomponents/1.0/bulkByProperties',\n      method: 'DELETE',\n      params: parameters,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve the currently stored Component data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraDevOpsComponentProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getComponentById<T = Models.GetComponentById>(\n    parameters: Parameters.GetComponentById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve the currently stored Component data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraDevOpsComponentProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getComponentById<T = Models.GetComponentById>(\n    parameters: Parameters.GetComponentById,\n    callback?: never,\n  ): Promise<T>;\n  async getComponentById<T = Models.GetComponentById>(\n    parameters: Parameters.GetComponentById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/devopscomponents/1.0/${parameters.componentId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Delete the Component data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The getComponentById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraDevOpsComponentProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteComponentById<T = void>(parameters: Parameters.DeleteComponentById, callback: Callback<T>): Promise<void>;\n  /**\n   * Delete the Component data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The getComponentById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraDevOpsComponentProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteComponentById<T = void>(parameters: Parameters.DeleteComponentById, callback?: never): Promise<T>;\n  async deleteComponentById<T = void>(\n    parameters: Parameters.DeleteComponentById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/devopscomponents/1.0/${parameters.componentId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Epic {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all issues that do not belong to any epic. This only includes issues that the user has permission to view.\n   * Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default,\n   * the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do not use this\n   * operation. Instead, search for issues that don't belong to an epic by using the [Search for issues using\n   * JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira\n   * platform REST API. Build your JQL query using the `parent is empty` clause. For more information on the `parent`\n   * JQL field, see [Advanced\n   * searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent).\n   */\n  async getIssuesWithoutEpic<T = unknown>(\n    parameters: Parameters.GetIssuesWithoutEpic | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all issues that do not belong to any epic. This only includes issues that the user has permission to view.\n   * Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged, and epic. By default,\n   * the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do not use this\n   * operation. Instead, search for issues that don't belong to an epic by using the [Search for issues using\n   * JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira\n   * platform REST API. Build your JQL query using the `parent is empty` clause. For more information on the `parent`\n   * JQL field, see [Advanced\n   * searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent).\n   */\n  async getIssuesWithoutEpic<T = unknown>(parameters?: Parameters.GetIssuesWithoutEpic, callback?: never): Promise<T>;\n  async getIssuesWithoutEpic<T = unknown>(\n    parameters?: Parameters.GetIssuesWithoutEpic,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/agile/1.0/epic/none/issue',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        jql: parameters?.jql,\n        validateQuery: parameters?.validateQuery,\n        fields: parameters?.fields,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes issues from epics. The user needs to have the edit issue permission for all issue they want to remove from\n   * epics. The maximum number of issues that can be moved in one operation is 50. **Note:** This operation does not\n   * work for epics in next-gen projects. Instead, update the issue using `\\{ fields: \\{ parent: \\{\\} \\} \\}`\n   */\n  async removeIssuesFromEpic<T = void>(\n    parameters: Parameters.RemoveIssuesFromEpic | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes issues from epics. The user needs to have the edit issue permission for all issue they want to remove from\n   * epics. The maximum number of issues that can be moved in one operation is 50. **Note:** This operation does not\n   * work for epics in next-gen projects. Instead, update the issue using `\\{ fields: \\{ parent: \\{\\} \\} \\}`\n   */\n  async removeIssuesFromEpic<T = void>(parameters?: Parameters.RemoveIssuesFromEpic, callback?: never): Promise<T>;\n  async removeIssuesFromEpic<T = void>(\n    parameters?: Parameters.RemoveIssuesFromEpic,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/agile/1.0/epic/none/issue',\n      method: 'POST',\n      data: {\n        issues: parameters?.issues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the epic for a given epic ID. This epic will only be returned if the user has permission to view it.\n   * **Note:** This operation does not work for epics in next-gen projects.\n   */\n  async getEpic<T = Models.Epic>(parameters: Parameters.GetEpic, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the epic for a given epic ID. This epic will only be returned if the user has permission to view it.\n   * **Note:** This operation does not work for epics in next-gen projects.\n   */\n  async getEpic<T = Models.Epic>(parameters: Parameters.GetEpic, callback?: never): Promise<T>;\n  async getEpic<T = Models.Epic>(parameters: Parameters.GetEpic, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/epic/${parameters.epicIdOrKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Performs a partial update of the epic. A partial update means that fields not present in the request JSON will not\n   * be updated. Valid values for color are `color_1` to `color_9`. **Note:** This operation does not work for epics in\n   * next-gen projects.\n   */\n  async partiallyUpdateEpic<T = Models.Epic>(\n    parameters: Parameters.PartiallyUpdateEpic,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Performs a partial update of the epic. A partial update means that fields not present in the request JSON will not\n   * be updated. Valid values for color are `color_1` to `color_9`. **Note:** This operation does not work for epics in\n   * next-gen projects.\n   */\n  async partiallyUpdateEpic<T = Models.Epic>(parameters: Parameters.PartiallyUpdateEpic, callback?: never): Promise<T>;\n  async partiallyUpdateEpic<T = Models.Epic>(\n    parameters: Parameters.PartiallyUpdateEpic,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/epic/${parameters.epicIdOrKey}`,\n      method: 'POST',\n      data: {\n        color: parameters.color,\n        done: parameters.done,\n        name: parameters.name,\n        summary: parameters.summary,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all issues that belong to the epic, for the given epic ID. This only includes issues that the user has\n   * permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged,\n   * and epic. By default, the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do\n   * not use this operation. Instead, search for issues that belong to an epic by using the [Search for issues using\n   * JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira\n   * platform REST API. Build your JQL query using the `parent` clause. For more information on the `parent` JQL field,\n   * see [Advanced searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent).\n   */\n  async getIssuesForEpic<T = unknown>(parameters: Parameters.GetIssuesForEpic, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all issues that belong to the epic, for the given epic ID. This only includes issues that the user has\n   * permission to view. Issues returned from this resource include Agile fields, like sprint, closedSprints, flagged,\n   * and epic. By default, the returned issues are ordered by rank. **Note:** If you are querying a next-gen project, do\n   * not use this operation. Instead, search for issues that belong to an epic by using the [Search for issues using\n   * JQL](https://developer.atlassian.com/cloud/jira/platform/rest/v2/#api-rest-api-2-search-get) operation in the Jira\n   * platform REST API. Build your JQL query using the `parent` clause. For more information on the `parent` JQL field,\n   * see [Advanced searching](https://confluence.atlassian.com/x/dAiiLQ#Advancedsearching-fieldsreference-Parent).\n   */\n  async getIssuesForEpic<T = unknown>(parameters: Parameters.GetIssuesForEpic, callback?: never): Promise<T>;\n  async getIssuesForEpic<T = unknown>(\n    parameters: Parameters.GetIssuesForEpic,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/epic/${parameters.epicIdOrKey}/issue`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        jql: parameters.jql,\n        validateQuery: parameters.validateQuery,\n        fields: parameters.fields,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves issues to an epic, for a given epic id. Issues can be only in a single epic at the same time. That means that\n   * already assigned issues to an epic, will not be assigned to the previous epic anymore. The user needs to have the\n   * edit issue permission for all issue they want to move and to the epic. The maximum number of issues that can be\n   * moved in one operation is 50. **Note:** This operation does not work for epics in next-gen projects.\n   */\n  async moveIssuesToEpic<T = void>(parameters: Parameters.MoveIssuesToEpic, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves issues to an epic, for a given epic id. Issues can be only in a single epic at the same time. That means that\n   * already assigned issues to an epic, will not be assigned to the previous epic anymore. The user needs to have the\n   * edit issue permission for all issue they want to move and to the epic. The maximum number of issues that can be\n   * moved in one operation is 50. **Note:** This operation does not work for epics in next-gen projects.\n   */\n  async moveIssuesToEpic<T = void>(parameters: Parameters.MoveIssuesToEpic, callback?: never): Promise<T>;\n  async moveIssuesToEpic<T = void>(parameters: Parameters.MoveIssuesToEpic, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/epic/${parameters.epicIdOrKey}/issue`,\n      method: 'POST',\n      data: {\n        issues: parameters.issues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves (ranks) an epic before or after a given epic.\n   *\n   * If rankCustomFieldId is not defined, the default rank field will be used.\n   *\n   * **Note:** This operation does not work for epics in next-gen projects.\n   */\n  async rankEpics<T = void>(parameters: Parameters.RankEpics, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves (ranks) an epic before or after a given epic.\n   *\n   * If rankCustomFieldId is not defined, the default rank field will be used.\n   *\n   * **Note:** This operation does not work for epics in next-gen projects.\n   */\n  async rankEpics<T = void>(parameters: Parameters.RankEpics, callback?: never): Promise<T>;\n  async rankEpics<T = void>(parameters: Parameters.RankEpics, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/epic/${parameters.epicIdOrKey}/rank`,\n      method: 'PUT',\n      data: {\n        rankAfterEpic: parameters.rankAfterEpic,\n        rankBeforeEpic: parameters.rankBeforeEpic,\n        rankCustomFieldId: parameters.rankCustomFieldId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class FeatureFlags {\n  constructor(private client: Client) {}\n\n  /**\n   * Update / insert Feature Flag data.\n   *\n   * Feature Flags are identified by their ID, and existing Feature Flag data for the same ID will be replaced if it\n   * exists and the updateSequenceId of existing data is less than the incoming data.\n   *\n   * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * getFeatureFlagById operation can be used to confirm that data has been stored successfully (if needed).\n   *\n   * In the case of multiple Feature Flags being submitted in one request, each is validated individually prior to\n   * submission. Details of which Feature Flags failed submission (if any) are available in the response object.\n   *\n   * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitFeatureFlags<T = Models.SubmitFeatureFlags>(\n    parameters: Parameters.SubmitFeatureFlags,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update / insert Feature Flag data.\n   *\n   * Feature Flags are identified by their ID, and existing Feature Flag data for the same ID will be replaced if it\n   * exists and the updateSequenceId of existing data is less than the incoming data.\n   *\n   * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * getFeatureFlagById operation can be used to confirm that data has been stored successfully (if needed).\n   *\n   * In the case of multiple Feature Flags being submitted in one request, each is validated individually prior to\n   * submission. Details of which Feature Flags failed submission (if any) are available in the response object.\n   *\n   * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitFeatureFlags<T = Models.SubmitFeatureFlags>(\n    parameters: Parameters.SubmitFeatureFlags,\n    callback?: never,\n  ): Promise<T>;\n  async submitFeatureFlags<T = Models.SubmitFeatureFlags>(\n    parameters: Parameters.SubmitFeatureFlags,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/featureflags/0.1/bulk',\n      method: 'POST',\n      data: {\n        properties: parameters.properties,\n        flags: parameters.flags,\n        providerMetadata: parameters.providerMetadata,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk delete all Feature Flags that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. Optional param `_updateSequenceId` is\n   * no longer supported. If more than one Property is provided, data will be deleted that matches ALL of the Properties\n   * (e.g. treated as an AND). See the documentation for the submitFeatureFlags operation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456\n   *\n   * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteFeatureFlagsByProperty<T = unknown>(\n    parameters: Parameters.DeleteFeatureFlagsByProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk delete all Feature Flags that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. Optional param `_updateSequenceId` is\n   * no longer supported. If more than one Property is provided, data will be deleted that matches ALL of the Properties\n   * (e.g. treated as an AND). See the documentation for the submitFeatureFlags operation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456\n   *\n   * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteFeatureFlagsByProperty<T = unknown>(\n    parameters: Parameters.DeleteFeatureFlagsByProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteFeatureFlagsByProperty<T = unknown>(\n    parameters: Parameters.DeleteFeatureFlagsByProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/featureflags/0.1/bulkByProperties',\n      method: 'DELETE',\n      params: {\n        _updateSequenceId: parameters.updateSequenceId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve the currently stored Feature Flag data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getFeatureFlagById<T = Models.GetFeatureFlagById>(\n    parameters: Parameters.GetFeatureFlagById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve the currently stored Feature Flag data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getFeatureFlagById<T = Models.GetFeatureFlagById>(\n    parameters: Parameters.GetFeatureFlagById,\n    callback?: never,\n  ): Promise<T>;\n  async getFeatureFlagById<T = Models.GetFeatureFlagById>(\n    parameters: Parameters.GetFeatureFlagById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/featureflags/0.1/flag/${parameters.featureFlagId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Delete the Feature Flag data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteFeatureFlagById<T = unknown>(\n    parameters: Parameters.DeleteFeatureFlagById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Delete the Feature Flag data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The getFeatureFlagById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraFeatureFlagInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteFeatureFlagById<T = unknown>(parameters: Parameters.DeleteFeatureFlagById, callback?: never): Promise<T>;\n  async deleteFeatureFlagById<T = unknown>(\n    parameters: Parameters.DeleteFeatureFlagById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/featureflags/0.1/flag/${parameters.featureFlagId}`,\n      method: 'DELETE',\n      params: {\n        _updateSequenceId: parameters.updateSequenceId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Issue {\n  constructor(private client: Client) {}\n\n  /**\n   * Moves (ranks) issues before or after a given issue. At most 50 issues may be ranked at once.\n   *\n   * This operation may fail for some issues, although this will be rare. In that case the 207 status code is returned\n   * for the whole response and detailed information regarding each issue is available in the response body.\n   *\n   * If rankCustomFieldId is not defined, the default rank field will be used.\n   */\n  async rankIssues<T = void>(parameters: Parameters.RankIssues, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves (ranks) issues before or after a given issue. At most 50 issues may be ranked at once.\n   *\n   * This operation may fail for some issues, although this will be rare. In that case the 207 status code is returned\n   * for the whole response and detailed information regarding each issue is available in the response body.\n   *\n   * If rankCustomFieldId is not defined, the default rank field will be used.\n   */\n  async rankIssues<T = void>(parameters: Parameters.RankIssues, callback?: never): Promise<T>;\n  async rankIssues<T = void>(parameters: Parameters.RankIssues, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/agile/1.0/issue/rank',\n      method: 'PUT',\n      data: {\n        issues: parameters.issues,\n        rankAfterIssue: parameters.rankAfterIssue,\n        rankBeforeIssue: parameters.rankBeforeIssue,\n        rankCustomFieldId: parameters.rankCustomFieldId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a single issue, for a given issue ID or issue key. Issues returned from this resource include Agile fields,\n   * like sprint, closedSprints, flagged, and epic.\n   */\n  async getIssue<T = Models.Issue>(parameters: Parameters.GetIssue, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a single issue, for a given issue ID or issue key. Issues returned from this resource include Agile fields,\n   * like sprint, closedSprints, flagged, and epic.\n   */\n  async getIssue<T = Models.Issue>(parameters: Parameters.GetIssue, callback?: never): Promise<T>;\n  async getIssue<T = Models.Issue>(parameters: Parameters.GetIssue, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/issue/${parameters.issueIdOrKey}`,\n      method: 'GET',\n      params: {\n        fields: parameters.fields,\n        expand: parameters.expand,\n        updateHistory: parameters.updateHistory,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the estimation of the issue and a fieldId of the field that is used for it. `boardId` param is required.\n   * This param determines which field will be updated on a issue.\n   *\n   * Original time internally stores and returns the estimation as a number of seconds.\n   *\n   * The field used for estimation on the given board can be obtained from [board configuration\n   * resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta\n   * resource](#api-rest-api-3-issue-getEditIssueMeta) or [field resource](#api-rest-api-3-field-get).\n   */\n  async getIssueEstimationForBoard<T = unknown>(\n    parameters: Parameters.GetIssueEstimationForBoard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the estimation of the issue and a fieldId of the field that is used for it. `boardId` param is required.\n   * This param determines which field will be updated on a issue.\n   *\n   * Original time internally stores and returns the estimation as a number of seconds.\n   *\n   * The field used for estimation on the given board can be obtained from [board configuration\n   * resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta\n   * resource](#api-rest-api-3-issue-getEditIssueMeta) or [field resource](#api-rest-api-3-field-get).\n   */\n  async getIssueEstimationForBoard<T = unknown>(\n    parameters: Parameters.GetIssueEstimationForBoard,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueEstimationForBoard<T = unknown>(\n    parameters: Parameters.GetIssueEstimationForBoard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/issue/${parameters.issueIdOrKey}/estimation`,\n      method: 'GET',\n      params: {\n        boardId: parameters.boardId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the estimation of the issue. boardId param is required. This param determines which field will be updated\n   * on an issue.\n   *\n   * Note that this resource changes the estimation field of the issue regardless of appearance the field on the screen.\n   *\n   * Original time tracking estimation field accepts estimation in formats like \"1w\", \"2d\", \"3h\", \"20m\" or number which\n   * represent number of minutes. However, internally the field stores and returns the estimation as a number of\n   * seconds.\n   *\n   * The field used for estimation on the given board can be obtained from [board configuration\n   * resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta\n   * resource](#api-rest-api-3-issue-issueIdOrKey-editmeta-get) or [field resource](#api-rest-api-3-field-get).\n   */\n  async estimateIssueForBoard<T = unknown>(\n    parameters: Parameters.EstimateIssueForBoard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the estimation of the issue. boardId param is required. This param determines which field will be updated\n   * on an issue.\n   *\n   * Note that this resource changes the estimation field of the issue regardless of appearance the field on the screen.\n   *\n   * Original time tracking estimation field accepts estimation in formats like \"1w\", \"2d\", \"3h\", \"20m\" or number which\n   * represent number of minutes. However, internally the field stores and returns the estimation as a number of\n   * seconds.\n   *\n   * The field used for estimation on the given board can be obtained from [board configuration\n   * resource](#agile/1.0/board-getConfiguration). More information about the field are returned by [edit meta\n   * resource](#api-rest-api-3-issue-issueIdOrKey-editmeta-get) or [field resource](#api-rest-api-3-field-get).\n   */\n  async estimateIssueForBoard<T = unknown>(parameters: Parameters.EstimateIssueForBoard, callback?: never): Promise<T>;\n  async estimateIssueForBoard<T = unknown>(\n    parameters: Parameters.EstimateIssueForBoard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/issue/${parameters.issueIdOrKey}/estimation`,\n      method: 'PUT',\n      params: {\n        boardId: parameters.boardId,\n      },\n      data: {\n        value: parameters.value,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Operations {\n  constructor(private client: Client) {}\n\n  /**\n   * Insert Operations Workspace IDs to establish a relationship between them and the Jira site the app is installed in.\n   * If a relationship between the Workspace ID and Jira already exists then the workspace ID will be ignored and Jira\n   * will process the rest of the entries.\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitOperationsWorkspaces<T = Models.SubmitOperationsWorkspaces>(\n    parameters: Parameters.SubmitOperationsWorkspaces,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Insert Operations Workspace IDs to establish a relationship between them and the Jira site the app is installed in.\n   * If a relationship between the Workspace ID and Jira already exists then the workspace ID will be ignored and Jira\n   * will process the rest of the entries.\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitOperationsWorkspaces<T = Models.SubmitOperationsWorkspaces>(\n    parameters: Parameters.SubmitOperationsWorkspaces,\n    callback?: never,\n  ): Promise<T>;\n  async submitOperationsWorkspaces<T = Models.SubmitOperationsWorkspaces>(\n    parameters: Parameters.SubmitOperationsWorkspaces,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/operations/1.0/linkedWorkspaces/bulk',\n      method: 'POST',\n      data: {\n        workspaceIds: parameters.workspaceIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk delete all Operations Workspaces that match the given request.\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   *\n   * E.g. DELETE /bulk?workspaceIds=111-222-333,444-555-666\n   */\n  async deleteWorkspaces<T = void>(parameters: Parameters.DeleteWorkspaces, callback: Callback<T>): Promise<void>;\n  /**\n   * Bulk delete all Operations Workspaces that match the given request.\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   *\n   * E.g. DELETE /bulk?workspaceIds=111-222-333,444-555-666\n   */\n  async deleteWorkspaces<T = void>(parameters: Parameters.DeleteWorkspaces, callback?: never): Promise<T>;\n  async deleteWorkspaces<T = void>(parameters: Parameters.DeleteWorkspaces, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/operations/1.0/linkedWorkspaces/bulk',\n      method: 'DELETE',\n      params: {\n        workspaceIds: parameters.workspaceIds.join(','),\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve the either all Operations Workspace IDs associated with the Jira site or a specific Operations Workspace\n   * ID for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * E.g. GET /workspace?workspaceId=111-222-333\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getWorkspaces<T = Models.GetWorkspaces>(\n    parameters: Parameters.GetWorkspaces,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve the either all Operations Workspace IDs associated with the Jira site or a specific Operations Workspace\n   * ID for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * E.g. GET /workspace?workspaceId=111-222-333\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getWorkspaces<T = Models.GetWorkspaces>(parameters: Parameters.GetWorkspaces, callback?: never): Promise<T>;\n  async getWorkspaces<T = Models.GetWorkspaces>(\n    parameters: Parameters.GetWorkspaces,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/operations/1.0/linkedWorkspaces',\n      method: 'GET',\n      params: {\n        workspaceId: parameters.workspaceId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Update / insert Incident or Review data.\n   *\n   * Incidents and reviews are identified by their ID, and existing Incident and Review data for the same ID will be\n   * replaced if it exists and the updateSequenceNumber of existing data is less than the incoming data.\n   *\n   * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * getIncidentById or getReviewById operation can be used to confirm that data has been stored successfully (if\n   * needed).\n   *\n   * In the case of multiple Incidents and Reviews being submitted in one request, each is validated individually prior\n   * to submission. Details of which entities failed submission (if any) are available in the response object.\n   *\n   * A maximum of 1000 incidents can be submitted in one request.\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitEntity<T = Models.SubmitEntity>(\n    parameters: Parameters.SubmitEntity,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update / insert Incident or Review data.\n   *\n   * Incidents and reviews are identified by their ID, and existing Incident and Review data for the same ID will be\n   * replaced if it exists and the updateSequenceNumber of existing data is less than the incoming data.\n   *\n   * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * getIncidentById or getReviewById operation can be used to confirm that data has been stored successfully (if\n   * needed).\n   *\n   * In the case of multiple Incidents and Reviews being submitted in one request, each is validated individually prior\n   * to submission. Details of which entities failed submission (if any) are available in the response object.\n   *\n   * A maximum of 1000 incidents can be submitted in one request.\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitEntity<T = Models.SubmitEntity>(parameters: Parameters.SubmitEntity, callback?: never): Promise<T>;\n  async submitEntity<T = Models.SubmitEntity>(\n    parameters: Parameters.SubmitEntity,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/operations/1.0/bulk',\n      method: 'POST',\n      data: parameters,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk delete all Entries that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. If more than one Property is\n   * provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). See the documentation\n   * for the submitEntity operation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456\n   *\n   * Deletion is performed asynchronously. The getIncidentById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteEntityByProperty<T = unknown>(\n    parameters: Parameters.DeleteEntityByProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk delete all Entries that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. If more than one Property is\n   * provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). See the documentation\n   * for the submitEntity operation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456\n   *\n   * Deletion is performed asynchronously. The getIncidentById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteEntityByProperty<T = unknown>(\n    parameters: Parameters.DeleteEntityByProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteEntityByProperty<T = unknown>(\n    parameters: Parameters.DeleteEntityByProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/operations/1.0/bulkByProperties',\n      method: 'DELETE',\n      params: parameters,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve the currently stored Incident data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getIncidentById<T = Models.GetIncidentById>(\n    parameters: Parameters.GetIncidentById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve the currently stored Incident data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getIncidentById<T = Models.GetIncidentById>(\n    parameters: Parameters.GetIncidentById,\n    callback?: never,\n  ): Promise<T>;\n  async getIncidentById<T = Models.GetIncidentById>(\n    parameters: Parameters.GetIncidentById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/operations/1.0/incidents/${parameters.incidentId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Delete the Incident data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The getIncidentById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteIncidentById<T = void>(parameters: Parameters.DeleteIncidentById, callback: Callback<T>): Promise<void>;\n  /**\n   * Delete the Incident data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The getIncidentById operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteIncidentById<T = void>(parameters: Parameters.DeleteIncidentById, callback?: never): Promise<T>;\n  async deleteIncidentById<T = void>(\n    parameters: Parameters.DeleteIncidentById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/operations/1.0/incidents/${parameters.incidentId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve the currently stored Review data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getReviewById<T = Models.GetReviewById>(\n    parameters: Parameters.GetReviewById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve the currently stored Review data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getReviewById<T = Models.GetReviewById>(parameters: Parameters.GetReviewById, callback?: never): Promise<T>;\n  async getReviewById<T = Models.GetReviewById>(\n    parameters: Parameters.GetReviewById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/operations/1.0/post-incident-reviews/${parameters.reviewId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Delete the Review data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The getReviewById operation can be used to confirm that data has been deleted\n   * successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteReviewById<T = void>(parameters: Parameters.DeleteReviewById, callback: Callback<T>): Promise<void>;\n  /**\n   * Delete the Review data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The getReviewById operation can be used to confirm that data has been deleted\n   * successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraOperationsInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteReviewById<T = void>(parameters: Parameters.DeleteReviewById, callback?: never): Promise<T>;\n  async deleteReviewById<T = void>(parameters: Parameters.DeleteReviewById, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/operations/1.0/post-incident-reviews/${parameters.reviewId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class RemoteLinks {\n  constructor(private client: Client) {}\n\n  /**\n   * Update / insert Remote Link data.\n   *\n   * Remote Links are identified by their ID, existing Remote Link data for the same ID will be replaced if it exists\n   * and the updateSequenceId of existing data is less than the incoming data.\n   *\n   * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * `getRemoteLinkById` operation can be used to confirm that data has been stored successfully (if needed).\n   *\n   * In the case of multiple Remote Links being submitted in one request, each is validated individually prior to\n   * submission. Details of which Remote LInk failed submission (if any) are available in the response object.\n   *\n   * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitRemoteLinks<T = Models.SubmitRemoteLinks>(\n    parameters: Parameters.SubmitRemoteLinks,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update / insert Remote Link data.\n   *\n   * Remote Links are identified by their ID, existing Remote Link data for the same ID will be replaced if it exists\n   * and the updateSequenceId of existing data is less than the incoming data.\n   *\n   * Submissions are performed asynchronously. Submitted data will eventually be available in Jira; most updates are\n   * available within a short period of time, but may take some time during peak load and/or maintenance times. The\n   * `getRemoteLinkById` operation can be used to confirm that data has been stored successfully (if needed).\n   *\n   * In the case of multiple Remote Links being submitted in one request, each is validated individually prior to\n   * submission. Details of which Remote LInk failed submission (if any) are available in the response object.\n   *\n   * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitRemoteLinks<T = Models.SubmitRemoteLinks>(\n    parameters: Parameters.SubmitRemoteLinks,\n    callback?: never,\n  ): Promise<T>;\n  async submitRemoteLinks<T = Models.SubmitRemoteLinks>(\n    parameters: Parameters.SubmitRemoteLinks,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/remotelinks/1.0/bulk',\n      method: 'POST',\n      data: {\n        properties: parameters.properties,\n        remoteLinks: parameters.remoteLinks,\n        providerMetadata: parameters.providerMetadata,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk delete all Remote Links data that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. Optional param\n   * `_updateSequenceNumber` is no longer supported. If more than one Property is provided, data will be deleted that\n   * matches ALL of the Properties (e.g. treated as an AND).\n   *\n   * See the documentation for the `submitRemoteLinks` operation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345\n   *\n   * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteRemoteLinksByProperty<T = unknown>(\n    parameters: Parameters.DeleteRemoteLinksByProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk delete all Remote Links data that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. Optional param\n   * `_updateSequenceNumber` is no longer supported. If more than one Property is provided, data will be deleted that\n   * matches ALL of the Properties (e.g. treated as an AND).\n   *\n   * See the documentation for the `submitRemoteLinks` operation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&repoId=repo-345\n   *\n   * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteRemoteLinksByProperty<T = unknown>(\n    parameters: Parameters.DeleteRemoteLinksByProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteRemoteLinksByProperty<T = unknown>(\n    parameters: Parameters.DeleteRemoteLinksByProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/remotelinks/1.0/bulkByProperties',\n      method: 'DELETE',\n      params: {\n        _updateSequenceNumber: parameters.updateSequenceNumber,\n        params: parameters.params,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve the currently stored Remote Link data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'READ' scope for Connect apps.\n   */\n  async getRemoteLinkById<T = Models.GetRemoteLinkById>(\n    parameters: Parameters.GetRemoteLinkById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve the currently stored Remote Link data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'READ' scope for Connect apps.\n   */\n  async getRemoteLinkById<T = Models.GetRemoteLinkById>(\n    parameters: Parameters.GetRemoteLinkById,\n    callback?: never,\n  ): Promise<T>;\n  async getRemoteLinkById<T = Models.GetRemoteLinkById>(\n    parameters: Parameters.GetRemoteLinkById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/remotelinks/1.0/remotelink/${parameters.remoteLinkId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Delete the Remote Link data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteRemoteLinkById<T = unknown>(\n    parameters: Parameters.DeleteRemoteLinkById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Delete the Remote Link data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The `getRemoteLinkById` operation can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraRemoteLinkInfoProvider` module, and on-premise integrations, can access this\n   * resource. This resource requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteRemoteLinkById<T = unknown>(parameters: Parameters.DeleteRemoteLinkById, callback?: never): Promise<T>;\n  async deleteRemoteLinkById<T = unknown>(\n    parameters: Parameters.DeleteRemoteLinkById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/remotelinks/1.0/remotelink/${parameters.remoteLinkId}`,\n      method: 'DELETE',\n      params: {\n        _updateSequenceNumber: parameters.updateSequenceNumber,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class SecurityInformation {\n  constructor(private client: Client) {}\n\n  /**\n   * Insert Security Workspace IDs to establish a relationship between them and the Jira site the app is installed on.\n   * If a relationship between the workspace ID and Jira already exists then the workspace ID will be ignored and Jira\n   * will process the rest of the entries.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitWorkspaces<T = void>(parameters: Parameters.SubmitWorkspaces, callback: Callback<T>): Promise<void>;\n  /**\n   * Insert Security Workspace IDs to establish a relationship between them and the Jira site the app is installed on.\n   * If a relationship between the workspace ID and Jira already exists then the workspace ID will be ignored and Jira\n   * will process the rest of the entries.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitWorkspaces<T = void>(parameters: Parameters.SubmitWorkspaces, callback?: never): Promise<T>;\n  async submitWorkspaces<T = void>(parameters: Parameters.SubmitWorkspaces, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/security/1.0/linkedWorkspaces/bulk',\n      method: 'POST',\n      data: {\n        workspaceIds: parameters.workspaceIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk delete all linked Security Workspaces that match the given request.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   *\n   * E.g. DELETE /bulk?workspaceIds=111-222-333,444-555-666\n   */\n  async deleteLinkedWorkspaces<T = void>(\n    parameters: Parameters.DeleteLinkedWorkspaces,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk delete all linked Security Workspaces that match the given request.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   *\n   * E.g. DELETE /bulk?workspaceIds=111-222-333,444-555-666\n   */\n  async deleteLinkedWorkspaces<T = void>(parameters: Parameters.DeleteLinkedWorkspaces, callback?: never): Promise<T>;\n  async deleteLinkedWorkspaces<T = void>(\n    parameters: Parameters.DeleteLinkedWorkspaces,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/security/1.0/linkedWorkspaces/bulk',\n      method: 'DELETE',\n      params: {\n        workspaceIds: parameters.workspaceIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve all Security Workspaces linked with the Jira site.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getLinkedWorkspaces<T = Models.GetLinkedWorkspaces>(callback: Callback<T>): Promise<void>;\n  /**\n   * Retrieve all Security Workspaces linked with the Jira site.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getLinkedWorkspaces<T = Models.GetLinkedWorkspaces>(callback?: never): Promise<T>;\n  async getLinkedWorkspaces<T = Models.GetLinkedWorkspaces>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/security/1.0/linkedWorkspaces',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve a specific Security Workspace linked to the Jira site for the given workspace ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getLinkedWorkspaceById<T = Models.GetLinkedWorkspaceById>(\n    parameters: Parameters.GetLinkedWorkspaceById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve a specific Security Workspace linked to the Jira site for the given workspace ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getLinkedWorkspaceById<T = Models.GetLinkedWorkspaceById>(\n    parameters: Parameters.GetLinkedWorkspaceById,\n    callback?: never,\n  ): Promise<T>;\n  async getLinkedWorkspaceById<T = Models.GetLinkedWorkspaceById>(\n    parameters: Parameters.GetLinkedWorkspaceById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/security/1.0/linkedWorkspaces/${parameters.workspaceId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Update / Insert Vulnerability data.\n   *\n   * Vulnerabilities are identified by their ID, any existing Vulnerability data with the same ID will be replaced if it\n   * exists and the updateSequenceNumber of the existing data is less than the incoming data.\n   *\n   * Submissions are performed asynchronously. Most updates are available within a short period of time but may take\n   * some time during peak load and/or maintenance times. The GET vulnerability endpoint can be used to confirm that\n   * data has been stored successfully (if needed).\n   *\n   * In the case of multiple Vulnerabilities being submitted in one request, each is validated individually prior to\n   * submission. Details of Vulnerabilities that failed submission (if any) are available in the response object.\n   *\n   * A maximum of 1000 vulnerabilities can be submitted in one request.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitVulnerabilities<T = Models.SubmitVulnerabilities>(\n    parameters: Parameters.SubmitVulnerabilities,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update / Insert Vulnerability data.\n   *\n   * Vulnerabilities are identified by their ID, any existing Vulnerability data with the same ID will be replaced if it\n   * exists and the updateSequenceNumber of the existing data is less than the incoming data.\n   *\n   * Submissions are performed asynchronously. Most updates are available within a short period of time but may take\n   * some time during peak load and/or maintenance times. The GET vulnerability endpoint can be used to confirm that\n   * data has been stored successfully (if needed).\n   *\n   * In the case of multiple Vulnerabilities being submitted in one request, each is validated individually prior to\n   * submission. Details of Vulnerabilities that failed submission (if any) are available in the response object.\n   *\n   * A maximum of 1000 vulnerabilities can be submitted in one request.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'WRITE' scope for Connect apps.\n   */\n  async submitVulnerabilities<T = Models.SubmitVulnerabilities>(\n    parameters: Parameters.SubmitVulnerabilities,\n    callback?: never,\n  ): Promise<T>;\n  async submitVulnerabilities<T = Models.SubmitVulnerabilities>(\n    parameters: Parameters.SubmitVulnerabilities,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/security/1.0/bulk',\n      method: 'POST',\n      data: {\n        operationType: parameters.operationType,\n        properties: parameters.properties,\n        vulnerabilities: parameters.vulnerabilities,\n        providerMetadata: parameters.providerMetadata,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk delete all Vulnerabilities that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. If more than one Property is\n   * provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). Read the POST bulk\n   * endpoint documentation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456\n   *\n   * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteVulnerabilitiesByProperty<T = void>(\n    parameters: Parameters.DeleteVulnerabilitiesByProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk delete all Vulnerabilities that match the given request.\n   *\n   * One or more query params must be supplied to specify Properties to delete by. If more than one Property is\n   * provided, data will be deleted that matches ALL of the Properties (e.g. treated as an AND). Read the POST bulk\n   * endpoint documentation for more details.\n   *\n   * E.g. DELETE /bulkByProperties?accountId=account-123&createdBy=user-456\n   *\n   * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteVulnerabilitiesByProperty<T = void>(\n    parameters: Parameters.DeleteVulnerabilitiesByProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteVulnerabilitiesByProperty<T = void>(\n    parameters: Parameters.DeleteVulnerabilitiesByProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/security/1.0/bulkByProperties',\n      method: 'DELETE',\n      params: parameters,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Retrieve the currently stored Vulnerability data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getVulnerabilityById<T = Models.GetVulnerabilityById>(\n    parameters: Parameters.GetVulnerabilityById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Retrieve the currently stored Vulnerability data for the given ID.\n   *\n   * The result will be what is currently stored, ignoring any pending updates or deletes.\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'READ' scope for Connect apps.\n   */\n  async getVulnerabilityById<T = Models.GetVulnerabilityById>(\n    parameters: Parameters.GetVulnerabilityById,\n    callback?: never,\n  ): Promise<T>;\n  async getVulnerabilityById<T = Models.GetVulnerabilityById>(\n    parameters: Parameters.GetVulnerabilityById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/security/1.0/vulnerability/${parameters.vulnerabilityId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Delete the Vulnerability data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteVulnerabilityById<T = void>(\n    parameters: Parameters.DeleteVulnerabilityById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Delete the Vulnerability data currently stored for the given ID.\n   *\n   * Deletion is performed asynchronously. The GET vulnerability endpoint can be used to confirm that data has been\n   * deleted successfully (if needed).\n   *\n   * Only Connect apps that define the `jiraSecurityInfoProvider` module can access this resource. This resource\n   * requires the 'DELETE' scope for Connect apps.\n   */\n  async deleteVulnerabilityById<T = void>(parameters: Parameters.DeleteVulnerabilityById, callback?: never): Promise<T>;\n  async deleteVulnerabilityById<T = void>(\n    parameters: Parameters.DeleteVulnerabilityById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/security/1.0/vulnerability/${parameters.vulnerabilityId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Sprint {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a future sprint. Sprint name and origin board id are required. Start date, end date, and goal are optional.\n   *\n   * Note that the sprint name is trimmed. Also, when starting sprints from the UI, the \"endDate\" set through this call\n   * is ignored and instead the last sprint's duration is used to fill the form.\n   */\n  async createSprint<T = Models.Sprint>(parameters: Parameters.CreateSprint, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a future sprint. Sprint name and origin board id are required. Start date, end date, and goal are optional.\n   *\n   * Note that the sprint name is trimmed. Also, when starting sprints from the UI, the \"endDate\" set through this call\n   * is ignored and instead the last sprint's duration is used to fill the form.\n   */\n  async createSprint<T = Models.Sprint>(parameters: Parameters.CreateSprint, callback?: never): Promise<T>;\n  async createSprint<T = Models.Sprint>(\n    parameters: Parameters.CreateSprint,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/agile/1.0/sprint',\n      method: 'POST',\n      data: {\n        endDate: parameters.endDate,\n        goal: parameters.goal,\n        name: parameters.name,\n        originBoardId: parameters.originBoardId,\n        startDate: parameters.startDate,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the sprint for a given sprint ID. The sprint will only be returned if the user can view the board that the\n   * sprint was created on, or view at least one of the issues in the sprint.\n   */\n  async getSprint<T = Models.Sprint>(parameters: Parameters.GetSprint, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the sprint for a given sprint ID. The sprint will only be returned if the user can view the board that the\n   * sprint was created on, or view at least one of the issues in the sprint.\n   */\n  async getSprint<T = Models.Sprint>(parameters: Parameters.GetSprint, callback?: never): Promise<T>;\n  async getSprint<T = Models.Sprint>(parameters: Parameters.GetSprint, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Performs a partial update of a sprint. A partial update means that fields not present in the request JSON will not\n   * be updated.\n   *\n   * Notes:\n   *\n   * - For closed sprints, only the name and goal can be updated; changes to other fields will be ignored.\n   * - A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and\n   *   have a startDate and endDate set.\n   * - A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active'\n   *   state. This sets the completeDate to the time of the request.\n   * - Other changes to state are not allowed.\n   * - The completeDate field cannot be updated manually.\n   */\n  async partiallyUpdateSprint<T = Models.Sprint>(\n    parameters: Parameters.PartiallyUpdateSprint,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Performs a partial update of a sprint. A partial update means that fields not present in the request JSON will not\n   * be updated.\n   *\n   * Notes:\n   *\n   * - For closed sprints, only the name and goal can be updated; changes to other fields will be ignored.\n   * - A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and\n   *   have a startDate and endDate set.\n   * - A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active'\n   *   state. This sets the completeDate to the time of the request.\n   * - Other changes to state are not allowed.\n   * - The completeDate field cannot be updated manually.\n   */\n  async partiallyUpdateSprint<T = Models.Sprint>(\n    parameters: Parameters.PartiallyUpdateSprint,\n    callback?: never,\n  ): Promise<T>;\n  async partiallyUpdateSprint<T = Models.Sprint>(\n    parameters: Parameters.PartiallyUpdateSprint,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}`,\n      method: 'POST',\n      data: {\n        completeDate: parameters.completeDate,\n        createdDate: parameters.createdDate,\n        endDate: parameters.endDate,\n        goal: parameters.goal,\n        id: parameters.id,\n        name: parameters.name,\n        originBoardId: parameters.originBoardId,\n        self: parameters.self,\n        startDate: parameters.startDate,\n        state: parameters.state,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Performs a full update of a sprint. A full update means that the result will be exactly the same as the request\n   * body. Any fields not present in the request JSON will be set to null.\n   *\n   * Notes:\n   *\n   * - For closed sprints, only the name and goal can be updated; changes to other fields will be ignored.\n   * - A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and\n   *   have a startDate and endDate set.\n   * - A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active'\n   *   state. This sets the completeDate to the time of the request.\n   * - Other changes to state are not allowed.\n   * - The completeDate field cannot be updated manually.\n   */\n  async updateSprint<T = Models.Sprint>(parameters: Parameters.UpdateSprint, callback: Callback<T>): Promise<void>;\n  /**\n   * Performs a full update of a sprint. A full update means that the result will be exactly the same as the request\n   * body. Any fields not present in the request JSON will be set to null.\n   *\n   * Notes:\n   *\n   * - For closed sprints, only the name and goal can be updated; changes to other fields will be ignored.\n   * - A sprint can be started by updating the state to 'active'. This requires the sprint to be in the 'future' state and\n   *   have a startDate and endDate set.\n   * - A sprint can be completed by updating the state to 'closed'. This action requires the sprint to be in the 'active'\n   *   state. This sets the completeDate to the time of the request.\n   * - Other changes to state are not allowed.\n   * - The completeDate field cannot be updated manually.\n   */\n  async updateSprint<T = Models.Sprint>(parameters: Parameters.UpdateSprint, callback?: never): Promise<T>;\n  async updateSprint<T = Models.Sprint>(\n    parameters: Parameters.UpdateSprint,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}`,\n      method: 'PUT',\n      data: {\n        completeDate: parameters.completeDate,\n        createdDate: parameters.createdDate,\n        endDate: parameters.endDate,\n        goal: parameters.goal,\n        id: parameters.id,\n        name: parameters.name,\n        originBoardId: parameters.originBoardId,\n        self: parameters.self,\n        startDate: parameters.startDate,\n        state: parameters.state,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Deletes a sprint. Once a sprint is deleted, all open issues in the sprint will be moved to the backlog. */\n  async deleteSprint<T = void>(parameters: Parameters.DeleteSprint, callback: Callback<T>): Promise<void>;\n  /** Deletes a sprint. Once a sprint is deleted, all open issues in the sprint will be moved to the backlog. */\n  async deleteSprint<T = void>(parameters: Parameters.DeleteSprint, callback?: never): Promise<T>;\n  async deleteSprint<T = void>(parameters: Parameters.DeleteSprint, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all issues in a sprint, for a given sprint ID. This only includes issues that the user has permission to\n   * view. By default, the returned issues are ordered by rank.\n   */\n  async getIssuesForSprint<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesForSprint,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all issues in a sprint, for a given sprint ID. This only includes issues that the user has permission to\n   * view. By default, the returned issues are ordered by rank.\n   */\n  async getIssuesForSprint<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesForSprint,\n    callback?: never,\n  ): Promise<T>;\n  async getIssuesForSprint<T = Models.SearchResults>(\n    parameters: Parameters.GetIssuesForSprint,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}/issue`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        jql: parameters.jql,\n        validateQuery: parameters.validateQuery,\n        fields: parameters.fields,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves issues to a sprint, for a given sprint ID. Issues can only be moved to open or active sprints. The maximum\n   * number of issues that can be moved in one operation is 50.\n   */\n  async moveIssuesToSprintAndRank<T = void>(\n    parameters: Parameters.MoveIssuesToSprintAndRank,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Moves issues to a sprint, for a given sprint ID. Issues can only be moved to open or active sprints. The maximum\n   * number of issues that can be moved in one operation is 50.\n   */\n  async moveIssuesToSprintAndRank<T = void>(\n    parameters: Parameters.MoveIssuesToSprintAndRank,\n    callback?: never,\n  ): Promise<T>;\n  async moveIssuesToSprintAndRank<T = void>(\n    parameters: Parameters.MoveIssuesToSprintAndRank,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}/issue`,\n      method: 'POST',\n      data: {\n        issues: parameters.issues,\n        rankAfterIssue: parameters.rankAfterIssue,\n        rankBeforeIssue: parameters.rankBeforeIssue,\n        rankCustomFieldId: parameters.rankCustomFieldId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the keys of all properties for the sprint identified by the id. The user who retrieves the property keys is\n   * required to have permissions to view the sprint.\n   */\n  async getPropertiesKeys<T = unknown>(parameters: Parameters.GetPropertiesKeys, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the keys of all properties for the sprint identified by the id. The user who retrieves the property keys is\n   * required to have permissions to view the sprint.\n   */\n  async getPropertiesKeys<T = unknown>(parameters: Parameters.GetPropertiesKeys, callback?: never): Promise<T>;\n  async getPropertiesKeys<T = unknown>(\n    parameters: Parameters.GetPropertiesKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of the property with a given key from the sprint identified by the provided id. The user who\n   * retrieves the property is required to have permissions to view the sprint.\n   */\n  async getProperty<T = unknown>(parameters: Parameters.GetProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the value of the property with a given key from the sprint identified by the provided id. The user who\n   * retrieves the property is required to have permissions to view the sprint.\n   */\n  async getProperty<T = unknown>(parameters: Parameters.GetProperty, callback?: never): Promise<T>;\n  async getProperty<T = unknown>(parameters: Parameters.GetProperty, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of the specified sprint's property.\n   *\n   * You can use this resource to store a custom data against the sprint identified by the id. The user who stores the\n   * data is required to have permissions to modify the sprint.\n   */\n  async setProperty<T = unknown>(parameters: Parameters.SetProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the value of the specified sprint's property.\n   *\n   * You can use this resource to store a custom data against the sprint identified by the id. The user who stores the\n   * data is required to have permissions to modify the sprint.\n   */\n  async setProperty<T = unknown>(parameters: Parameters.SetProperty, callback?: never): Promise<T>;\n  async setProperty<T = unknown>(parameters: Parameters.SetProperty, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes the property from the sprint identified by the id. Ths user removing the property is required to have\n   * permissions to modify the sprint.\n   */\n  async deleteProperty<T = void>(parameters: Parameters.DeleteProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Removes the property from the sprint identified by the id. Ths user removing the property is required to have\n   * permissions to modify the sprint.\n   */\n  async deleteProperty<T = void>(parameters: Parameters.DeleteProperty, callback?: never): Promise<T>;\n  async deleteProperty<T = void>(parameters: Parameters.DeleteProperty, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Swap the position of the sprint with the second sprint. */\n  async swapSprint<T = void>(parameters: Parameters.SwapSprint, callback: Callback<T>): Promise<void>;\n  /** Swap the position of the sprint with the second sprint. */\n  async swapSprint<T = void>(parameters: Parameters.SwapSprint, callback?: never): Promise<T>;\n  async swapSprint<T = void>(parameters: Parameters.SwapSprint, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/agile/1.0/sprint/${parameters.sprintId}/swap`,\n      method: 'POST',\n      data: {\n        sprintToSwapWith: parameters.sprintToSwapWith,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","export * from './avatarUrls';\nexport * from './board';\nexport * from './createBoard';\nexport * from './epic';\nexport * from './existsByProperties';\nexport * from './fields';\nexport * from './fixVersion';\nexport * from './getAllBoards';\nexport * from './getAllQuickFilters';\nexport * from './getBoard';\nexport * from './getBoardByFilterId';\nexport * from './getBuildByKey';\nexport * from './getComponentById';\nexport * from './getConfiguration';\nexport * from './getDeploymentByKey';\nexport * from './getDeploymentGatingStatusByKey';\nexport * from './getFeatureFlagById';\nexport * from './getFeaturesForBoard';\nexport * from './getIncidentById';\nexport * from './getLinkedWorkspaceById';\nexport * from './getLinkedWorkspaces';\nexport * from './getQuickFilter';\nexport * from './getRemoteLinkById';\nexport * from './getReportsForBoard';\nexport * from './getRepository';\nexport * from './getReviewById';\nexport * from './getVulnerabilityById';\nexport * from './getWorkspaces';\nexport * from './group';\nexport * from './issue';\nexport * from './issueTransition';\nexport * from './issueType';\nexport * from './jsonType';\nexport * from './linkGroup';\nexport * from './operations';\nexport * from './scope';\nexport * from './progress';\nexport * from './project';\nexport * from './projects';\nexport * from './searchResults';\nexport * from './sprint';\nexport * from './status';\nexport * from './statusCategory';\nexport * from './storeDevelopmentInformation';\nexport * from './submitBuilds';\nexport * from './submitComponents';\nexport * from './submitDeployments';\nexport * from './submitEntity';\nexport * from './submitFeatureFlags';\nexport * from './submitOperationsWorkspaces';\nexport * from './submitRemoteLinks';\nexport * from './submitVulnerabilities';\nexport * from './toggleFeatures';\nexport * from './user';\nexport * from './version';\n","export * from './createBoard';\nexport * from './createSprint';\nexport * from './deleteBoard';\nexport * from './deleteBoardProperty';\nexport * from './deleteBuildByKey';\nexport * from './deleteBuildsByProperty';\nexport * from './deleteByProperties';\nexport * from './deleteDeploymentByKey';\nexport * from './deleteDeploymentsByProperty';\nexport * from './deleteEntity';\nexport * from './deleteFeatureFlagById';\nexport * from './deleteFeatureFlagsByProperty';\nexport * from './deleteLinkedWorkspaces';\nexport * from './deleteProperty';\nexport * from './deleteRemoteLinkById';\nexport * from './deleteRemoteLinksByProperty';\nexport * from './deleteRepository';\nexport * from './deleteSprint';\nexport * from './deleteVulnerabilitiesByProperty';\nexport * from './deleteVulnerabilityById';\nexport * from './estimateIssueForBoard';\nexport * from './existsByProperties';\nexport * from './getAllBoards';\nexport * from './getAllQuickFilters';\nexport * from './getAllSprints';\nexport * from './getAllVersions';\nexport * from './getBoard';\nexport * from './getBoardByFilterId';\nexport * from './getBoardIssuesForEpic';\nexport * from './getBoardIssuesForSprint';\nexport * from './getBoardProperty';\nexport * from './getBoardPropertyKeys';\nexport * from './getBuildByKey';\nexport * from './getConfiguration';\nexport * from './getDeploymentByKey';\nexport * from './getDeploymentGatingStatusByKey';\nexport * from './getEpic';\nexport * from './getEpics';\nexport * from './getFeatureFlagById';\nexport * from './getFeaturesForBoard';\nexport * from './getIssue';\nexport * from './getIssueEstimationForBoard';\nexport * from './getIssuesForBacklog';\nexport * from './getIssuesForBoard';\nexport * from './getIssuesForEpic';\nexport * from './getIssuesForSprint';\nexport * from './getIssuesWithoutEpic';\nexport * from './getIssuesWithoutEpicForBoard';\nexport * from './getLinkedWorkspaceById';\nexport * from './getProjects';\nexport * from './getProjectsFull';\nexport * from './getPropertiesKeys';\nexport * from './getProperty';\nexport * from './getQuickFilter';\nexport * from './getRemoteLinkById';\nexport * from './getReportsForBoard';\nexport * from './getRepository';\nexport * from './getSprint';\nexport * from './getVulnerabilityById';\nexport * from './moveIssuesToBacklog';\nexport * from './moveIssuesToBacklogForBoard';\nexport * from './moveIssuesToBoard';\nexport * from './moveIssuesToEpic';\nexport * from './moveIssuesToSprintAndRank';\nexport * from './partiallyUpdateEpic';\nexport * from './partiallyUpdateSprint';\nexport * from './rankEpics';\nexport * from './rankIssues';\nexport * from './removeIssuesFromEpic';\nexport * from './setBoardProperty';\nexport * from './setProperty';\nexport * from './storeDevelopmentInformation';\nexport * from './submitBuilds';\nexport * from './submitDeployments';\nexport * from './submitFeatureFlags';\nexport * from './submitRemoteLinks';\nexport * from './submitVulnerabilities';\nexport * from './submitWorkspaces';\nexport * from './swapSprint';\nexport * from './toggleFeatures';\nexport * from './updateSprint';\nexport * from './getIncidentById';\nexport * from './deleteIncidentById';\nexport * from './deleteReviewById';\nexport * from './getReviewById';\nexport * from './deleteEntityByProperty';\nexport * from './submitEntity';\nexport * from './getWorkspaces';\nexport * from './deleteWorkspaces';\nexport * from './submitOperationsWorkspaces';\nexport * from './submitComponents';\nexport * from './deleteComponentById';\nexport * from './deleteComponentsByProperty';\nexport * from './getComponentById';\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type { AxiosInstance, AxiosResponse } from 'axios';\nimport axios from 'axios';\nimport type { Callback } from '../callback';\nimport type { Client } from './client';\nimport type { Config, JiraError } from '../config';\nimport { ConfigSchema } from '../config';\nimport { getAuthenticationToken } from '../services/authenticationService';\nimport type { RequestConfig } from '../requestConfig';\nimport { HttpException, isObject } from './httpException';\nimport { ZodError } from 'zod';\n\nconst STRICT_GDPR_FLAG = 'x-atlassian-force-account-id';\nconst ATLASSIAN_TOKEN_CHECK_FLAG = 'X-Atlassian-Token';\nconst ATLASSIAN_TOKEN_CHECK_NOCHECK_VALUE = 'no-check';\n\nexport class BaseClient implements Client {\n  private instance: AxiosInstance;\n\n  constructor(protected readonly config: Config) {\n    try {\n      this.config = ConfigSchema.parse(config);\n    } catch (e) {\n      if (e instanceof ZodError && e.errors[0].message === 'Invalid url') {\n        throw new Error(\n          'Couldn\\'t parse the host URL. Perhaps you forgot to add \\'http://\\' or \\'https://\\' at the beginning of the URL?',\n        );\n      }\n\n      throw e;\n    }\n\n    this.instance = axios.create({\n      paramsSerializer: this.paramSerializer.bind(this),\n      ...config.baseRequestConfig,\n      baseURL: config.host,\n      headers: this.removeUndefinedProperties({\n        [STRICT_GDPR_FLAG]: config.strictGDPR,\n        [ATLASSIAN_TOKEN_CHECK_FLAG]: config.noCheckAtlassianToken ? ATLASSIAN_TOKEN_CHECK_NOCHECK_VALUE : undefined,\n        ...config.baseRequestConfig?.headers,\n      }),\n    });\n  }\n\n  protected paramSerializer(parameters: Record<string, any>): string {\n    const parts: string[] = [];\n\n    Object.entries(parameters).forEach(([key, value]) => {\n      if (value === null || typeof value === 'undefined') {\n        return;\n      }\n\n      if (Array.isArray(value)) {\n        value = value.join(',');\n      }\n\n      if (value instanceof Date) {\n        value = value.toISOString();\n      } else if (value !== null && typeof value === 'object') {\n        value = JSON.stringify(value);\n      } else if (value instanceof Function) {\n        const part = value();\n\n        return part && parts.push(part);\n      }\n\n      parts.push(`${this.encode(key)}=${this.encode(value)}`);\n    });\n\n    return parts.join('&');\n  }\n\n  protected encode(value: string) {\n    return encodeURIComponent(value)\n      .replace(/%3A/gi, ':')\n      .replace(/%24/g, '$')\n      .replace(/%2C/gi, ',')\n      .replace(/%20/g, '+')\n      .replace(/%5B/gi, '[')\n      .replace(/%5D/gi, ']');\n  }\n\n  protected removeUndefinedProperties(obj: Record<string, any>): Record<string, any> {\n    return Object.entries(obj)\n      .filter(([, value]) => typeof value !== 'undefined')\n      .reduce((accumulator, [key, value]) => ({ ...accumulator, [key]: value }), {});\n  }\n\n  async sendRequest<T>(requestConfig: RequestConfig, callback: never): Promise<T>;\n  async sendRequest<T>(requestConfig: RequestConfig, callback: Callback<T>): Promise<void>;\n  async sendRequest<T>(requestConfig: RequestConfig, callback: Callback<T> | never): Promise<void | T> {\n    try {\n      const response = await this.sendRequestFullResponse<T>(requestConfig);\n\n      return this.handleSuccessResponse(response.data, callback);\n    } catch (e: unknown) {\n      return this.handleFailedResponse(e, callback);\n    }\n  }\n\n  async sendRequestFullResponse<T>(requestConfig: RequestConfig): Promise<AxiosResponse<T>> {\n    const modifiedRequestConfig = {\n      ...requestConfig,\n      headers: this.removeUndefinedProperties({\n        Authorization: await getAuthenticationToken(this.config.authentication),\n        ...requestConfig.headers,\n      }),\n    };\n\n    return this.instance.request<T>(modifiedRequestConfig);\n  }\n\n  handleSuccessResponse<T>(response: any, callback?: Callback<T> | never): T | void {\n    const callbackResponseHandler = callback && ((data: T): void => callback(null, data));\n    const defaultResponseHandler = (data: T): T => data;\n\n    const responseHandler = callbackResponseHandler ?? defaultResponseHandler;\n\n    this.config.middlewares?.onResponse?.(response.data);\n\n    return responseHandler(response);\n  }\n\n  handleFailedResponse<T>(e: unknown, callback?: Callback<T> | never): void {\n    const err = this.buildErrorHandlingResponse(e);\n\n    const callbackErrorHandler = callback && ((error: JiraError) => callback(error));\n    const defaultErrorHandler = (error: JiraError) => {\n      throw error;\n    };\n\n    const errorHandler = callbackErrorHandler ?? defaultErrorHandler;\n\n    this.config.middlewares?.onError?.(err);\n\n    return errorHandler(err);\n  }\n\n  private buildErrorHandlingResponse(e: unknown): JiraError {\n    if (axios.isAxiosError(e) && e.response) {\n      return new HttpException(\n        {\n          code: e.code,\n          message: e.message,\n          data: e.response.data,\n          status: e.response.status,\n          statusText: e.response.statusText,\n        },\n        e.response.status,\n        { cause: e },\n      );\n    }\n\n    if (axios.isAxiosError(e)) {\n      return e;\n    }\n\n    if (isObject(e) && isObject((e as Record<string, any>).response)) {\n      return new HttpException((e as Record<string, any>).response);\n    }\n\n    if (e instanceof Error) {\n      return new HttpException(e);\n    }\n\n    return new HttpException('Unknown error occurred.', 500, { cause: e });\n  }\n}\n","import { z } from 'zod';\nimport type { AxiosError } from 'axios';\nimport type { HttpException } from './clients';\n\n// Authentication schemas\n// const JWTSchema = z.object({\n//   issuer: z.string(),\n//   secret: z.string(),\n//   expiryTimeSeconds: z.number().optional()\n// });\n\nexport const BasicAuthSchema = z\n  .object({\n    email: z.string(),\n    apiToken: z.string(),\n  })\n  .strict();\n\nexport type BasicAuth = z.infer<typeof BasicAuthSchema>;\n\nexport const OAuth2Schema = z\n  .object({\n    accessToken: z.string(),\n  })\n  .strict();\n\nexport type OAuth2 = z.infer<typeof OAuth2Schema>;\n\n// Middlewares schemas\nexport const MiddlewaresSchema = z\n  .object({\n    onError: z.function().args(z.any()).returns(z.void()).optional(),\n    onResponse: z.function().args(z.any()).returns(z.void()).optional(),\n  })\n  .strict();\n\nexport type Middlewares = z.infer<typeof MiddlewaresSchema>;\n\nexport const ConfigSchema = z\n  .object({\n    host: z.string().url(),\n    strictGDPR: z.boolean().optional(),\n    /** Adds `'X-Atlassian-Token': 'no-check'` to each request header */\n    noCheckAtlassianToken: z.boolean().optional(),\n    baseRequestConfig: z.any().optional(),\n    authentication: z.union([z.object({ basic: BasicAuthSchema }), z.object({ oauth2: OAuth2Schema })]).optional(),\n    middlewares: MiddlewaresSchema.optional(),\n  })\n  .strict();\n\nexport type Config = z.infer<typeof ConfigSchema>;\n\nexport type JiraError = AxiosError | HttpException;\n","/** @copyright The code was taken from the portal http://www.webtoolkit.info/javascript-base64.html */\n\nconst base64Sequence = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n\nconst utf8Encode = (value: string) => {\n  value = value.replace(/\\r\\n/g, '\\n');\n\n  let utftext = '';\n\n  for (let n = 0; n < value.length; n++) {\n    const c = value.charCodeAt(n);\n\n    if (c < 128) {\n      utftext += String.fromCharCode(c);\n    } else if (c > 127 && c < 2048) {\n      utftext += String.fromCharCode((c >> 6) | 192);\n\n      utftext += String.fromCharCode((c & 63) | 128);\n    } else {\n      utftext += String.fromCharCode((c >> 12) | 224);\n\n      utftext += String.fromCharCode(((c >> 6) & 63) | 128);\n\n      utftext += String.fromCharCode((c & 63) | 128);\n    }\n  }\n\n  return utftext;\n};\n\nexport const encode = (input: string) => {\n  let output = '';\n  let chr1;\n  let chr2;\n  let chr3;\n  let enc1;\n  let enc2;\n  let enc3;\n  let enc4;\n  let i = 0;\n\n  input = utf8Encode(input);\n\n  while (i < input.length) {\n    chr1 = input.charCodeAt(i++);\n    chr2 = input.charCodeAt(i++);\n    chr3 = input.charCodeAt(i++);\n\n    enc1 = chr1 >> 2;\n    enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n    enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n    enc4 = chr3 & 63;\n\n    if (isNaN(chr2)) {\n      enc3 = enc4 = 64;\n    } else if (isNaN(chr3)) {\n      enc4 = 64;\n    }\n\n    output += `${base64Sequence.charAt(enc1)}${base64Sequence.charAt(enc2)}${base64Sequence.charAt(\n      enc3,\n    )}${base64Sequence.charAt(enc4)}`;\n  }\n\n  return output;\n};\n","import { encode } from '../base64Encoder';\nimport type { BasicAuth } from '../../../config';\n\nexport function createBasicAuthenticationToken(authenticationData: BasicAuth) {\n  const login = authenticationData.email;\n  const secret = authenticationData.apiToken;\n\n  const token = encode(`${login}:${secret}`);\n\n  return `Basic ${token}`;\n}\n","import type { OAuth2 } from '../../../config';\n\nexport function createOAuth2AuthenticationToken(authenticationData: OAuth2) {\n  return `Bearer ${authenticationData.accessToken}`;\n}\n","import type { Config } from '../../config';\nimport { createBasicAuthenticationToken, createOAuth2AuthenticationToken } from './authentications';\n\nexport async function getAuthenticationToken(\n  authentication: Config['authentication'] | undefined,\n): Promise<string | undefined> {\n  if (!authentication) {\n    return undefined;\n  }\n\n  if ('basic' in authentication) {\n    return createBasicAuthenticationToken(authentication.basic);\n  }\n\n  return createOAuth2AuthenticationToken(authentication.oauth2);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nexport const isUndefined = (obj: any): obj is undefined => typeof obj === 'undefined';\n\nexport const isNil = (val: any): val is null | undefined => isUndefined(val) || val === null;\n\nexport const isObject = (fn: any): fn is object => !isNil(fn) && typeof fn === 'object';\n\nexport const isString = (val: any): val is string => typeof val === 'string';\n\nexport const isNumber = (val: any): val is number => typeof val === 'number';\n\nexport interface HttpExceptionOptions {\n  /** Original cause of the error */\n  cause?: unknown;\n  description?: string;\n}\n\nexport const DEFAULT_EXCEPTION_STATUS = 500;\nexport const DEFAULT_EXCEPTION_MESSAGE = 'Something went wrong';\nexport const DEFAULT_EXCEPTION_CODE = 'INTERNAL_SERVER_ERROR';\nexport const DEFAULT_EXCEPTION_STATUS_TEXT = 'Internal server error';\n\n/** Defines the base HTTP exception, which is handled by the default Exceptions Handler. */\nexport class HttpException extends Error {\n  /**\n   * Instantiate a plain HTTP Exception.\n   *\n   * @example\n   *   throw new HttpException('message', HttpStatus.BAD_REQUEST);\n   *   throw new HttpException('custom message', HttpStatus.BAD_REQUEST, {\n   *     cause: new Error('Cause Error'),\n   *   });\n   *\n   * @param response String, object describing the error condition or the error cause.\n   * @param status HTTP response status code.\n   * @param options An object used to add an error cause. Configures error chaining support\n   * @usageNotes\n   * The constructor arguments define the response and the HTTP response status code.\n   * - The `response` argument (required) defines the JSON response body. alternatively, it can also be\n   *  an error object that is used to define an error [cause](https://nodejs.org/en/blog/release/v16.9.0/#error-cause).\n   * - The `status` argument (optional) defines the HTTP Status Code.\n   * - The `options` argument (optional) defines additional error options. Currently, it supports the `cause` attribute,\n   *  and can be used as an alternative way to specify the error cause: `const error = new HttpException('description', 400, { cause: new Error() });`\n   *\n   * By default, the JSON response body contains two properties:\n   * - `statusCode`: the Http Status Code.\n   * - `message`: a short description of the HTTP error by default; override this\n   * by supplying a string in the `response` parameter.\n   *\n   * The `status` argument is required, and should be a valid HTTP status code.\n   * Best practice is to use the `HttpStatus` enum imported from `nestjs/common`.\n   * @see https://nodejs.org/en/blog/release/v16.9.0/#error-cause\n   * @see https://github.com/microsoft/TypeScript/issues/45167\n   */\n  constructor(\n    public readonly response: string | Record<string, any>,\n    status?: number,\n    options?: HttpExceptionOptions,\n  ) {\n    super();\n\n    this.name = this.initName();\n    this.cause = this.initCause(response, options);\n    this.code = this.initCode(response);\n    this.message = this.initMessage(response);\n    this.status = this.initStatus(response, status);\n    this.statusText = this.initStatusText(response, this.status);\n  }\n\n  public readonly cause?: unknown;\n\n  public readonly code?: string;\n\n  public readonly status: number;\n\n  public readonly statusText?: string;\n\n  protected initMessage(response: string | Record<string, any>) {\n    if (isString(response)) {\n      return response;\n    }\n\n    if (isObject(response) && isString((response as Record<string, any>).message)) {\n      return (response as Record<string, any>).message;\n    }\n\n    // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n    if (this.constructor) {\n      return this.constructor.name.match(/[A-Z][a-z]+|[0-9]+/g)?.join(' ') ?? 'Error';\n    }\n\n    return DEFAULT_EXCEPTION_MESSAGE;\n  }\n\n  protected initCause(response: string | Record<string, any>, options?: HttpExceptionOptions): unknown {\n    if (options?.cause) {\n      return options.cause;\n    }\n\n    if (isObject(response) && isObject((response as Record<string, any>).cause)) {\n      return (response as Record<string, any>).cause;\n    }\n\n    return undefined;\n  }\n\n  protected initCode(response: string | Record<string, any>): string {\n    if (isObject(response) && isString((response as Record<string, any>).code)) {\n      return (response as Record<string, any>).code;\n    }\n\n    return DEFAULT_EXCEPTION_CODE;\n  }\n\n  protected initName(): string {\n    return this.constructor.name;\n  }\n\n  protected initStatus(response: string | Record<string, any>, status?: number): number {\n    if (status) {\n      return status;\n    }\n\n    if (isObject(response) && isNumber((response as Record<string, any>).status)) {\n      return (response as Record<string, any>).status;\n    }\n\n    if (isObject(response) && isNumber((response as Record<string, any>).statusCode)) {\n      return (response as Record<string, any>).statusCode;\n    }\n\n    return DEFAULT_EXCEPTION_STATUS;\n  }\n\n  protected initStatusText(response: string | Record<string, any>, status?: number): string | undefined {\n    if (isObject(response) && isString((response as Record<string, any>).statusText)) {\n      return (response as Record<string, any>).statusText;\n    }\n\n    return status ? undefined : DEFAULT_EXCEPTION_STATUS_TEXT;\n  }\n}\n","import { BaseClient } from '../../clients/baseClient';\nimport { Backlog } from '../backlog';\nimport { Board } from '../board';\nimport { Builds } from '../builds';\nimport { Deployments } from '../deployments';\nimport { DevelopmentInformation } from '../developmentInformation';\nimport { DevopsComponents } from '../devopsComponents';\nimport { Epic } from '../epic';\nimport { FeatureFlags } from '../featureFlags';\nimport { Issue } from '../issue';\nimport { Operations } from '../operations';\nimport { RemoteLinks } from '../remoteLinks';\nimport { SecurityInformation } from '../securityInformation';\nimport { Sprint } from '../sprint';\n\nexport class AgileClient extends BaseClient {\n  backlog = new Backlog(this);\n  board = new Board(this);\n  builds = new Builds(this);\n  deployments = new Deployments(this);\n  developmentInformation = new DevelopmentInformation(this);\n  devopsComponents = new DevopsComponents(this);\n  epic = new Epic(this);\n  featureFlags = new FeatureFlags(this);\n  issue = new Issue(this);\n  operations = new Operations(this);\n  remoteLinks = new RemoteLinks(this);\n  securityInformation = new SecurityInformation(this);\n  sprint = new Sprint(this);\n}\n","export * from './announcementBanner';\nexport * from './appDataPolicies';\nexport * from './appMigration';\nexport * from './appProperties';\nexport * from './applicationRoles';\nexport * from './auditRecords';\nexport * from './avatars';\nexport * from './classificationLevels';\nexport * from './dashboards';\nexport * from './dynamicModules';\nexport * from './filterSharing';\nexport * from './filters';\nexport * from './groupAndUserPicker';\nexport * from './groups';\nexport * from './issueAttachments';\nexport * from './issueCommentProperties';\nexport * from './issueComments';\nexport * from './issueCustomFieldAssociations';\nexport * from './issueCustomFieldConfigurationApps';\nexport * from './issueCustomFieldContexts';\nexport * from './issueCustomFieldOptions';\nexport * from './issueCustomFieldOptionsApps';\nexport * from './issueCustomFieldValuesApps';\nexport * from './issueFieldConfigurations';\nexport * from './issueFields';\nexport * from './issueLinkTypes';\nexport * from './issueLinks';\nexport * from './issueNavigatorSettings';\nexport * from './issueNotificationSchemes';\nexport * from './issuePriorities';\nexport * from './issueProperties';\nexport * from './issueRemoteLinks';\nexport * from './issueResolutions';\nexport * from './issueSearch';\nexport * from './issueSecurityLevel';\nexport * from './issueSecuritySchemes';\nexport * from './issueTypeProperties';\nexport * from './issueTypeSchemes';\nexport * from './issueTypeScreenSchemes';\nexport * from './issueTypes';\nexport * from './issueVotes';\nexport * from './issueWatchers';\nexport * from './issueWorklogProperties';\nexport * from './issueWorklogs';\nexport * from './issues';\nexport * from './jiraExpressions';\nexport * from './jiraSettings';\nexport * from './jQL';\nexport * from './jqlFunctionsApps';\nexport * from './labels';\nexport * from './licenseMetrics';\nexport * from './myself';\nexport * from './permissionSchemes';\nexport * from './permissions';\nexport * from './plans';\nexport * from './prioritySchemes';\nexport * from './projectAvatars';\nexport * from './projectCategories';\nexport * from './projectClassificationLevels';\nexport * from './projectComponents';\nexport * from './projectEmail';\nexport * from './projectFeatures';\nexport * from './projectKeyAndNameValidation';\nexport * from './projectPermissionSchemes';\nexport * from './projectProperties';\nexport * from './projectRoleActors';\nexport * from './projectRoles';\nexport * from './projectTemplates';\nexport * from './projectTypes';\nexport * from './projectVersions';\nexport * from './projects';\nexport * from './screenSchemes';\nexport * from './screenTabFields';\nexport * from './screenTabs';\nexport * from './screens';\nexport * from './serverInfo';\nexport * from './serviceRegistry';\nexport * from './status';\nexport * from './tasks';\nexport * from './teamsInPlan';\nexport * from './timeTracking';\nexport * from './uIModificationsApps';\nexport * from './userProperties';\nexport * from './userSearch';\nexport * from './userNavProperties';\nexport * from './users';\nexport * from './webhooks';\nexport * from './workflowSchemeDrafts';\nexport * from './workflowSchemeProjectAssociations';\nexport * from './workflowSchemes';\nexport * from './workflowStatusCategories';\nexport * from './workflowStatuses';\nexport * from './workflowTransitionProperties';\nexport * from './workflowTransitionRules';\nexport * from './workflows';\n\nexport * from './client';\nexport * as Version2Models from './models';\nexport * as Version2Parameters from './parameters';\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class AnnouncementBanner {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the current announcement banner configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getBanner<T = Models.AnnouncementBannerConfiguration>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the current announcement banner configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getBanner<T = Models.AnnouncementBannerConfiguration>(callback?: never): Promise<T>;\n  async getBanner<T = Models.AnnouncementBannerConfiguration>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/announcementBanner',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the announcement banner configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setBanner<T = void>(parameters: Parameters.SetBanner, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates the announcement banner configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setBanner<T = void>(parameters: Parameters.SetBanner, callback?: never): Promise<T>;\n  async setBanner<T = void>(parameters: Parameters.SetBanner, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/announcementBanner',\n      method: 'PUT',\n      data: {\n        isDismissible: parameters.isDismissible,\n        isEnabled: parameters.isEnabled,\n        message: parameters.message,\n        visibility: parameters.visibility,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class AppDataPolicies {\n  constructor(private client: Client) {}\n\n  /** Returns data policy for the workspace. */\n  async getPolicy<T = Models.WorkspaceDataPolicy>(callback: Callback<T>): Promise<void>;\n  /** Returns data policy for the workspace. */\n  async getPolicy<T = Models.WorkspaceDataPolicy>(callback?: never): Promise<T>;\n  async getPolicy<T = Models.WorkspaceDataPolicy>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/data-policy',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns data policies for the projects specified in the request. */\n  async getPolicies<T = Models.ProjectDataPolicies>(\n    parameters: Parameters.GetPolicies | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns data policies for the projects specified in the request. */\n  async getPolicies<T = Models.ProjectDataPolicies>(parameters?: Parameters.GetPolicies, callback?: never): Promise<T>;\n  async getPolicies<T = Models.ProjectDataPolicies>(\n    parameters?: Parameters.GetPolicies,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/data-policy/project',\n      method: 'GET',\n      params: {\n        ids: parameters?.ids,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class AppMigration {\n  constructor(private client: Client) {}\n\n  /**\n   * Updates the value of a custom field added by Connect apps on one or more issues. The values of up to 200 custom\n   * fields can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can make this request\n   */\n  async updateIssueFields<T = unknown>(parameters: Parameters.UpdateIssueFields, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates the value of a custom field added by Connect apps on one or more issues. The values of up to 200 custom\n   * fields can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can make this request\n   */\n  async updateIssueFields<T = unknown>(parameters: Parameters.UpdateIssueFields, callback?: never): Promise<T>;\n  async updateIssueFields<T = unknown>(\n    parameters: Parameters.UpdateIssueFields,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/migration/field',\n      method: 'PUT',\n      headers: {\n        'Atlassian-Account-Id': parameters.accountId,\n        'Atlassian-Transfer-Id': parameters.transferId,\n      },\n      data: {\n        updateValueList: parameters.updateValueList,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the values of multiple entity properties for an object, up to 50 updates per request. This operation is for\n   * use by Connect apps during app migration.\n   */\n  async updateEntityPropertiesValue<T = unknown>(\n    parameters: Parameters.UpdateEntityPropertiesValue,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the values of multiple entity properties for an object, up to 50 updates per request. This operation is for\n   * use by Connect apps during app migration.\n   */\n  async updateEntityPropertiesValue<T = unknown>(\n    parameters: Parameters.UpdateEntityPropertiesValue,\n    callback?: never,\n  ): Promise<T>;\n  async updateEntityPropertiesValue<T = unknown>(\n    parameters: Parameters.UpdateEntityPropertiesValue,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/atlassian-connect/1/migration/properties/${parameters.entityType}`,\n      method: 'PUT',\n      headers: {\n        'Atlassian-Account-Id': parameters.accountId,\n        'Atlassian-Transfer-Id': parameters.transferId,\n        'Content-Type': 'application/json',\n      },\n      data: parameters.entities,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns configurations for workflow transition rules migrated from server to cloud and owned by the calling Connect\n   * app.\n   */\n  async workflowRuleSearch<T = Models.WorkflowRulesSearchDetails>(\n    parameters: Parameters.WorkflowRuleSearch,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns configurations for workflow transition rules migrated from server to cloud and owned by the calling Connect\n   * app.\n   */\n  async workflowRuleSearch<T = Models.WorkflowRulesSearchDetails>(\n    parameters: Parameters.WorkflowRuleSearch,\n    callback?: never,\n  ): Promise<T>;\n  async workflowRuleSearch<T = Models.WorkflowRulesSearchDetails>(\n    parameters: Parameters.WorkflowRuleSearch,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/migration/workflow/rule/search',\n      method: 'POST',\n      headers: {\n        'Atlassian-Transfer-Id': parameters.transferId,\n      },\n      data: {\n        expand: parameters.expand,\n        ruleIds: parameters.ruleIds,\n        workflowEntityId: parameters.workflowEntityId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class AppProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Gets all the properties of an app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async getAddonProperties<T = Models.PropertyKeys>(\n    parameters: Parameters.GetAddonProperties | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets all the properties of an app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async getAddonProperties<T = Models.PropertyKeys>(\n    parameters: Parameters.GetAddonProperties | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAddonProperties<T = Models.PropertyKeys>(\n    parameters: Parameters.GetAddonProperties | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const addonKey = typeof parameters === 'string' ? parameters : parameters.addonKey;\n\n    const config: RequestConfig = {\n      url: `/rest/atlassian-connect/1/addons/${addonKey}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the key and value of an app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async getAddonProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetAddonProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the key and value of an app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async getAddonProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetAddonProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getAddonProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetAddonProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/atlassian-connect/1/addons/${parameters.addonKey}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of an app's property. Use this resource to store custom data for your app.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async putAddonProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAddonProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of an app's property. Use this resource to store custom data for your app.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async putAddonProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAddonProperty,\n    callback?: never,\n  ): Promise<T>;\n  async putAddonProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAddonProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/atlassian-connect/1/addons/${parameters.addonKey}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async deleteAddonProperty<T = void>(parameters: Parameters.DeleteAddonProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async deleteAddonProperty<T = void>(parameters: Parameters.DeleteAddonProperty, callback?: never): Promise<T>;\n  async deleteAddonProperty<T = void>(\n    parameters: Parameters.DeleteAddonProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/atlassian-connect/1/addons/${parameters.addonKey}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a Forge app's property. These values can be retrieved in [Jira\n   * expressions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) through the `app` [context\n   * variable](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables). They are also\n   * available in [entity property display\n   * conditions](/platform/forge/manifest-reference/display-conditions/entity-property-conditions/).\n   *\n   * For other use cases, use the [Storage\n   * API](https://developer.atlassian.com/platform/forge/runtime-reference/storage-api/).\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Forge apps can make this request.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async putAppProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAppProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of a Forge app's property. These values can be retrieved in [Jira\n   * expressions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) through the `app` [context\n   * variable](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables). They are also\n   * available in [entity property display\n   * conditions](/platform/forge/manifest-reference/display-conditions/entity-property-conditions/).\n   *\n   * For other use cases, use the [Storage\n   * API](https://developer.atlassian.com/platform/forge/runtime-reference/storage-api/).\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Forge apps can make this request.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async putAppProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAppProperty,\n    callback?: never,\n  ): Promise<T>;\n  async putAppProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAppProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/forge/1/app/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a Forge app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Forge apps can make this request.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async deleteAppProperty<T = void>(parameters: Parameters.DeleteAppProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a Forge app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Forge apps can make this request.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async deleteAppProperty<T = void>(parameters: Parameters.DeleteAppProperty, callback?: never): Promise<T>;\n  async deleteAppProperty<T = void>(\n    parameters: Parameters.DeleteAppProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/forge/1/app/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ApplicationRoles {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all application roles. In Jira, application roles are managed using the [Application access\n   * configuration](https://confluence.atlassian.com/x/3YxjL) page.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllApplicationRoles<T = Models.ApplicationRole[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all application roles. In Jira, application roles are managed using the [Application access\n   * configuration](https://confluence.atlassian.com/x/3YxjL) page.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllApplicationRoles<T = Models.ApplicationRole[]>(callback?: never): Promise<T>;\n  async getAllApplicationRoles<T = Models.ApplicationRole[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/applicationrole',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an application role.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApplicationRole<T = Models.ApplicationRole>(\n    parameters: Parameters.GetApplicationRole | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an application role.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApplicationRole<T = Models.ApplicationRole>(\n    parameters: Parameters.GetApplicationRole | string,\n    callback?: never,\n  ): Promise<T>;\n  async getApplicationRole<T = Models.ApplicationRole>(\n    parameters: Parameters.GetApplicationRole | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const key = typeof parameters === 'string' ? parameters : parameters.key;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/applicationrole/${key}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class AuditRecords {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of audit records. The list can be filtered to include items:\n   *\n   * - Where each item in `filter` has at least one match in any of these fields:\n   *\n   *   - `summary`\n   *   - `category`\n   *   - `eventSource`\n   *   - `objectItem.name` If the object is a user, account ID is available to filter.\n   *   - `objectItem.parentName`\n   *   - `objectItem.typeName`\n   *   - `changedValues.changedFrom`\n   *   - `changedValues.changedTo`\n   *   - `remoteAddress`\n   *\n   *   For example, if `filter` contains _man ed_, an audit record containing `summary\": \"User added to group\"` and\n   *   `\"category\": \"group management\"` is returned.\n   * - Created on or after a date and time.\n   * - Created on or before a date and time.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAuditRecords<T = Models.AuditRecords>(\n    parameters: Parameters.GetAuditRecords | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of audit records. The list can be filtered to include items:\n   *\n   * - Where each item in `filter` has at least one match in any of these fields:\n   *\n   *   - `summary`\n   *   - `category`\n   *   - `eventSource`\n   *   - `objectItem.name` If the object is a user, account ID is available to filter.\n   *   - `objectItem.parentName`\n   *   - `objectItem.typeName`\n   *   - `changedValues.changedFrom`\n   *   - `changedValues.changedTo`\n   *   - `remoteAddress`\n   *\n   *   For example, if `filter` contains _man ed_, an audit record containing `summary\": \"User added to group\"` and\n   *   `\"category\": \"group management\"` is returned.\n   * - Created on or after a date and time.\n   * - Created on or before a date and time.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAuditRecords<T = Models.AuditRecords>(parameters?: Parameters.GetAuditRecords, callback?: never): Promise<T>;\n  async getAuditRecords<T = Models.AuditRecords>(\n    parameters?: Parameters.GetAuditRecords,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/auditing/record',\n      method: 'GET',\n      params: {\n        offset: parameters?.offset,\n        limit: parameters?.limit,\n        filter: parameters?.filter,\n        from: parameters?.from,\n        to: parameters?.to,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Avatars {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of system avatar details by owner type, where the owner types are issue type, project, user or\n   * priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllSystemAvatars<T = Models.SystemAvatars>(\n    parameters: Parameters.GetAllSystemAvatars | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of system avatar details by owner type, where the owner types are issue type, project, user or\n   * priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllSystemAvatars<T = Models.SystemAvatars>(\n    parameters: Parameters.GetAllSystemAvatars | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllSystemAvatars<T = Models.SystemAvatars>(\n    parameters: Parameters.GetAllSystemAvatars | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const type = typeof parameters === 'string' ? parameters : parameters.type;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/avatar/${type}/system`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the system and custom avatars for a project, issue type or priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For system avatars, none.\n   * - For priority avatars, none.\n   */\n  async getAvatars<T = Models.Avatars>(parameters: Parameters.GetAvatars, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the system and custom avatars for a project, issue type or priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For system avatars, none.\n   * - For priority avatars, none.\n   */\n  async getAvatars<T = Models.Avatars>(parameters: Parameters.GetAvatars, callback?: never): Promise<T>;\n  async getAvatars<T = Models.Avatars>(parameters: Parameters.GetAvatars, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/universal_avatar/type/${parameters.type}/owner/${parameters.entityId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Loads a custom avatar for a project, issue type or priority.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar use:\n   *\n   * - [Update issue\n   *   type](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-types/#api-rest-api-2-issuetype-id-put)\n   *   to set it as the issue type's displayed avatar.\n   * - [Set project\n   *   avatar](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-project-avatars/#api-rest-api-2-project-projectidorkey-avatar-put)\n   *   to set it as the project's displayed avatar.\n   * - [Update\n   *   priority](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-priorities/#api-rest-api-2-priority-id-put)\n   *   to set it as the priority's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async storeAvatar<T = Models.Avatar>(parameters: Parameters.StoreAvatar, callback: Callback<T>): Promise<void>;\n  /**\n   * Loads a custom avatar for a project, issue type or priority.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar use:\n   *\n   * - [Update issue\n   *   type](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-types/#api-rest-api-2-issuetype-id-put)\n   *   to set it as the issue type's displayed avatar.\n   * - [Set project\n   *   avatar](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-project-avatars/#api-rest-api-2-project-projectidorkey-avatar-put)\n   *   to set it as the project's displayed avatar.\n   * - [Update\n   *   priority](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-priorities/#api-rest-api-2-priority-id-put)\n   *   to set it as the priority's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async storeAvatar<T = Models.Avatar>(parameters: Parameters.StoreAvatar, callback?: never): Promise<T>;\n  async storeAvatar<T = Models.Avatar>(parameters: Parameters.StoreAvatar, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/universal_avatar/type/${parameters.type}/owner/${parameters.entityId}`,\n      method: 'POST',\n      headers: {\n        'X-Atlassian-Token': 'no-check',\n        'Content-Type': parameters.mimeType,\n      },\n      params: {\n        x: parameters.x,\n        y: parameters.y,\n        size: parameters.size ?? 0,\n      },\n      data: parameters.avatar,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an avatar from a project, issue type or priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteAvatar<T = void>(parameters: Parameters.DeleteAvatar, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an avatar from a project, issue type or priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteAvatar<T = void>(parameters: Parameters.DeleteAvatar, callback?: never): Promise<T>;\n  async deleteAvatar<T = void>(parameters: Parameters.DeleteAvatar, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/universal_avatar/type/${parameters.type}/owner/${parameters.owningObjectId}/avatar/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the default project, issue type or priority avatar image.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAvatarImageByType<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByType | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the default project, issue type or priority avatar image.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAvatarImageByType<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByType | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAvatarImageByType<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByType | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const type = typeof parameters === 'string' ? parameters : parameters.type;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/universal_avatar/view/type/${type}`,\n      method: 'GET',\n      responseType: 'arraybuffer',\n      params: {\n        size: typeof parameters !== 'string' ? parameters.size : undefined,\n        format: typeof parameters !== 'string' ? parameters.format : undefined,\n      },\n    };\n\n    const {\n      data: avatar,\n      headers: { 'content-type': contentTypeWithEncoding },\n    } = await this.client.sendRequestFullResponse<T>(config);\n\n    const contentType = contentTypeWithEncoding.split(';')[0].trim();\n\n    return this.client.handleSuccessResponse({ contentType, avatar }, callback);\n  }\n\n  /**\n   * Returns a project, issue type or priority avatar image by ID.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - For system avatars, none.\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For priority avatars, none.\n   */\n  async getAvatarImageByID<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByID,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a project, issue type or priority avatar image by ID.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - For system avatars, none.\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For priority avatars, none.\n   */\n  async getAvatarImageByID<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByID,\n    callback?: never,\n  ): Promise<T>;\n  async getAvatarImageByID<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByID,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/universal_avatar/view/type/${parameters.type}/avatar/${parameters.id}`,\n      method: 'GET',\n      responseType: 'arraybuffer',\n      params: {\n        size: parameters.size,\n        format: parameters.format,\n      },\n    };\n\n    const {\n      data: avatar,\n      headers: { 'content-type': contentTypeWithEncoding },\n    } = await this.client.sendRequestFullResponse<T>(config);\n\n    const contentType = contentTypeWithEncoding.split(';')[0].trim();\n\n    return this.client.handleSuccessResponse({ contentType, avatar }, callback);\n  }\n\n  /**\n   * Returns the avatar image for a project, issue type or priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - For system avatars, none.\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For priority avatars, none.\n   */\n  async getAvatarImageByOwner<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByOwner,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the avatar image for a project, issue type or priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - For system avatars, none.\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For priority avatars, none.\n   */\n  async getAvatarImageByOwner<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByOwner,\n    callback?: never,\n  ): Promise<T>;\n  async getAvatarImageByOwner<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByOwner,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/universal_avatar/view/type/${parameters.type}/owner/${parameters.entityId}`,\n      method: 'GET',\n      responseType: 'arraybuffer',\n      params: {\n        size: parameters.size,\n        format: parameters.format,\n      },\n    };\n\n    const {\n      data: avatar,\n      headers: { 'content-type': contentTypeWithEncoding },\n    } = await this.client.sendRequestFullResponse<T>(config);\n\n    const contentType = contentTypeWithEncoding.split(';')[0].trim();\n\n    return this.client.handleSuccessResponse({ contentType, avatar }, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ClassificationLevels {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all classification levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllUserDataClassificationLevels<T = Models.DataClassificationLevels>(\n    parameters: Parameters.GetAllUserDataClassificationLevels | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all classification levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllUserDataClassificationLevels<T = Models.DataClassificationLevels>(\n    parameters?: Parameters.GetAllUserDataClassificationLevels,\n    callback?: never,\n  ): Promise<T>;\n  async getAllUserDataClassificationLevels<T = Models.DataClassificationLevels>(\n    parameters?: Parameters.GetAllUserDataClassificationLevels,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/classification-levels',\n      method: 'GET',\n      params: {\n        status: parameters?.status,\n        orderBy: parameters?.orderBy,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","export function paramSerializer(key: string, values?: string | string[] | number | number[]) {\n  if (typeof values === 'string' || typeof values === 'number') {\n    return `${key}=${values}`;\n  }\n\n  if (!values?.length) {\n    return undefined;\n  }\n\n  return () => values.map(value => `${key}=${value}`).join('&');\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\nimport { paramSerializer } from '../paramSerializer';\n\nexport class Dashboards {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of dashboards owned by or shared with the user. The list may be filtered to include only favorite or\n   * owned dashboards.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllDashboards<T = Models.PageOfDashboards>(\n    parameters: Parameters.GetAllDashboards | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of dashboards owned by or shared with the user. The list may be filtered to include only favorite or\n   * owned dashboards.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllDashboards<T = Models.PageOfDashboards>(\n    parameters?: Parameters.GetAllDashboards,\n    callback?: never,\n  ): Promise<T>;\n  async getAllDashboards<T = Models.PageOfDashboards>(\n    parameters?: Parameters.GetAllDashboards,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/dashboard',\n      method: 'GET',\n      params: {\n        filter: parameters?.filter,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async createDashboard<T = Models.Dashboard>(\n    parameters: Parameters.CreateDashboard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async createDashboard<T = Models.Dashboard>(parameters: Parameters.CreateDashboard, callback?: never): Promise<T>;\n  async createDashboard<T = Models.Dashboard>(\n    parameters: Parameters.CreateDashboard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/dashboard',\n      method: 'POST',\n      params: {\n        extendAdminPermissions: parameters.extendAdminPermissions,\n      },\n      data: {\n        description: parameters.description,\n        editPermissions: parameters.editPermissions,\n        name: parameters.name,\n        sharePermissions: parameters.sharePermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk edit dashboards. Maximum number of dashboards to be edited at the same time is 100.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None\n   *\n   * The dashboards to be updated must be owned by the user, or the user must be an administrator.\n   */\n  async bulkEditDashboards<T = Models.BulkEditShareableEntity>(\n    parameters: Parameters.BulkEditDashboards,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk edit dashboards. Maximum number of dashboards to be edited at the same time is 100.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None\n   *\n   * The dashboards to be updated must be owned by the user, or the user must be an administrator.\n   */\n  async bulkEditDashboards<T = Models.BulkEditShareableEntity>(\n    parameters: Parameters.BulkEditDashboards,\n    callback?: never,\n  ): Promise<T>;\n  async bulkEditDashboards<T = Models.BulkEditShareableEntity>(\n    parameters: Parameters.BulkEditDashboards,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/dashboard/bulk/edit',\n      method: 'PUT',\n      data: {\n        action: parameters.action,\n        changeOwnerDetails: parameters.changeOwnerDetails,\n        entityIds: parameters.entityIds,\n        extendAdminPermissions: parameters.extendAdminPermissions,\n        permissionDetails: parameters.permissionDetails,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets a list of all available gadgets that can be added to all dashboards.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllAvailableDashboardGadgets<T = Models.AvailableDashboardGadgetsResponse>(\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets a list of all available gadgets that can be added to all dashboards.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllAvailableDashboardGadgets<T = Models.AvailableDashboardGadgetsResponse>(callback?: never): Promise<T>;\n  async getAllAvailableDashboardGadgets<T = Models.AvailableDashboardGadgetsResponse>(\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/dashboard/gadgets',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * dashboards. This operation is similar to [Get dashboards](#api-rest-api-2-dashboard-get) except that the results\n   * can be refined to include dashboards that have specific attributes. For example, dashboards with a particular name.\n   * When multiple attributes are specified only filters matching all attributes are returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * following dashboards that match the query parameters are returned:\n   *\n   * - Dashboards owned by the user. Not returned for anonymous users.\n   * - Dashboards shared with a group that the user is a member of. Not returned for anonymous users.\n   * - Dashboards shared with a private project that the user can browse. Not returned for anonymous users.\n   * - Dashboards shared with a public project.\n   * - Dashboards shared with the public.\n   */\n  async getDashboardsPaginated<T = Models.PageDashboard>(\n    parameters: Parameters.GetDashboardsPaginated | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * dashboards. This operation is similar to [Get dashboards](#api-rest-api-2-dashboard-get) except that the results\n   * can be refined to include dashboards that have specific attributes. For example, dashboards with a particular name.\n   * When multiple attributes are specified only filters matching all attributes are returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * following dashboards that match the query parameters are returned:\n   *\n   * - Dashboards owned by the user. Not returned for anonymous users.\n   * - Dashboards shared with a group that the user is a member of. Not returned for anonymous users.\n   * - Dashboards shared with a private project that the user can browse. Not returned for anonymous users.\n   * - Dashboards shared with a public project.\n   * - Dashboards shared with the public.\n   */\n  async getDashboardsPaginated<T = Models.PageDashboard>(\n    parameters?: Parameters.GetDashboardsPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getDashboardsPaginated<T = Models.PageDashboard>(\n    parameters?: Parameters.GetDashboardsPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/dashboard/search',\n      method: 'GET',\n      params: {\n        dashboardName: parameters?.dashboardName,\n        accountId: parameters?.accountId,\n        groupname: parameters?.groupname,\n        groupId: parameters?.groupId,\n        projectId: parameters?.projectId,\n        orderBy: parameters?.orderBy,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        status: parameters?.status,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of dashboard gadgets on a dashboard.\n   *\n   * This operation returns:\n   *\n   * - Gadgets from a list of IDs, when `id` is set.\n   * - Gadgets with a module key, when `moduleKey` is set.\n   * - Gadgets from a list of URIs, when `uri` is set.\n   * - All gadgets, when no other parameters are set.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllGadgets<T = Models.DashboardGadgetResponse>(\n    parameters: Parameters.GetAllGadgets | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of dashboard gadgets on a dashboard.\n   *\n   * This operation returns:\n   *\n   * - Gadgets from a list of IDs, when `id` is set.\n   * - Gadgets with a module key, when `moduleKey` is set.\n   * - Gadgets from a list of URIs, when `uri` is set.\n   * - All gadgets, when no other parameters are set.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllGadgets<T = Models.DashboardGadgetResponse>(\n    parameters: Parameters.GetAllGadgets | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllGadgets<T = Models.DashboardGadgetResponse>(\n    parameters: Parameters.GetAllGadgets | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const dashboardId = typeof parameters === 'string' ? parameters : parameters.dashboardId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${dashboardId}/gadget`,\n      method: 'GET',\n      params: {\n        moduleKey: typeof parameters !== 'string' && paramSerializer('moduleKey', parameters.moduleKey),\n        uri: typeof parameters !== 'string' && parameters.uri,\n        gadgetId: typeof parameters !== 'string' && paramSerializer('gadgetId', parameters.gadgetId),\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a gadget to a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async addGadget<T = Models.DashboardGadget>(parameters: Parameters.AddGadget, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds a gadget to a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async addGadget<T = Models.DashboardGadget>(parameters: Parameters.AddGadget, callback?: never): Promise<T>;\n  async addGadget<T = Models.DashboardGadget>(\n    parameters: Parameters.AddGadget,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${parameters.dashboardId}/gadget`,\n      method: 'POST',\n      data: {\n        color: parameters.color,\n        ignoreUriAndModuleKeyValidation: parameters.ignoreUriAndModuleKeyValidation,\n        moduleKey: parameters.moduleKey,\n        position: parameters.position,\n        title: parameters.title,\n        uri: parameters.uri,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the title, position, and color of the gadget on a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async updateGadget<T = void>(parameters: Parameters.UpdateGadget, callback: Callback<T>): Promise<void>;\n  /**\n   * Changes the title, position, and color of the gadget on a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async updateGadget<T = void>(parameters: Parameters.UpdateGadget, callback?: never): Promise<T>;\n  async updateGadget<T = void>(parameters: Parameters.UpdateGadget, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${parameters.dashboardId}/gadget/${parameters.gadgetId}`,\n      method: 'PUT',\n      data: {\n        color: parameters.color,\n        position: parameters.position,\n        title: parameters.title,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a dashboard gadget from a dashboard.\n   *\n   * When a gadget is removed from a dashboard, other gadgets in the same column are moved up to fill the emptied\n   * position.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async removeGadget<T = void>(parameters: Parameters.RemoveGadget, callback: Callback<T>): Promise<void>;\n  /**\n   * Removes a dashboard gadget from a dashboard.\n   *\n   * When a gadget is removed from a dashboard, other gadgets in the same column are moved up to fill the emptied\n   * position.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async removeGadget<T = void>(parameters: Parameters.RemoveGadget, callback?: never): Promise<T>;\n  async removeGadget<T = void>(parameters: Parameters.RemoveGadget, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${parameters.dashboardId}/gadget/${parameters.gadgetId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the keys of all properties for a dashboard item.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   * The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when\n   * Jira’s anonymous access is permitted.\n   */\n  async getDashboardItemPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetDashboardItemPropertyKeys,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all properties for a dashboard item.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   * The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when\n   * Jira’s anonymous access is permitted.\n   */\n  async getDashboardItemPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetDashboardItemPropertyKeys,\n    callback?: never,\n  ): Promise<T>;\n  async getDashboardItemPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetDashboardItemPropertyKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${parameters.dashboardId}/items/${parameters.itemId}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the key and value of a dashboard item property.\n   *\n   * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed\n   * to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding\n   * and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ).\n   *\n   * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires\n   * whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this\n   * resource to store the item's content or configuration details. For more information on working with dashboard\n   * items, see [ Building a dashboard item for a JIRA Connect\n   * add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/)\n   * and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/)\n   * documentation.\n   *\n   * There is no resource to set or get dashboard items.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   * The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when\n   * Jira’s anonymous access is permitted.\n   */\n  async getDashboardItemProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetDashboardItemProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the key and value of a dashboard item property.\n   *\n   * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed\n   * to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding\n   * and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ).\n   *\n   * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires\n   * whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this\n   * resource to store the item's content or configuration details. For more information on working with dashboard\n   * items, see [ Building a dashboard item for a JIRA Connect\n   * add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/)\n   * and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/)\n   * documentation.\n   *\n   * There is no resource to set or get dashboard items.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   * The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when\n   * Jira’s anonymous access is permitted.\n   */\n  async getDashboardItemProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetDashboardItemProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getDashboardItemProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetDashboardItemProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${parameters.dashboardId}/items/${parameters.itemId}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a dashboard item property. Use this resource in apps to store custom data against a dashboard\n   * item.\n   *\n   * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed\n   * to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding\n   * and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ).\n   *\n   * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires\n   * whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this\n   * resource to store the item's content or configuration details. For more information on working with dashboard\n   * items, see [ Building a dashboard item for a JIRA Connect\n   * add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/)\n   * and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/)\n   * documentation.\n   *\n   * There is no resource to set or get dashboard items.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * user must be the owner of the dashboard. Note, users with the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   */\n  async setDashboardItemProperty<T = unknown>(\n    parameters: Parameters.SetDashboardItemProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of a dashboard item property. Use this resource in apps to store custom data against a dashboard\n   * item.\n   *\n   * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed\n   * to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding\n   * and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ).\n   *\n   * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires\n   * whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this\n   * resource to store the item's content or configuration details. For more information on working with dashboard\n   * items, see [ Building a dashboard item for a JIRA Connect\n   * add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/)\n   * and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/)\n   * documentation.\n   *\n   * There is no resource to set or get dashboard items.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * user must be the owner of the dashboard. Note, users with the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   */\n  async setDashboardItemProperty<T = unknown>(\n    parameters: Parameters.SetDashboardItemProperty,\n    callback?: never,\n  ): Promise<T>;\n  async setDashboardItemProperty<T = unknown>(\n    parameters: Parameters.SetDashboardItemProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${parameters.dashboardId}/items/${parameters.itemId}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a dashboard item property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * user must be the owner of the dashboard. Note, users with the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   */\n  async deleteDashboardItemProperty<T = void>(\n    parameters: Parameters.DeleteDashboardItemProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a dashboard item property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * user must be the owner of the dashboard. Note, users with the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   */\n  async deleteDashboardItemProperty<T = void>(\n    parameters: Parameters.DeleteDashboardItemProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteDashboardItemProperty<T = void>(\n    parameters: Parameters.DeleteDashboardItemProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${parameters.dashboardId}/items/${parameters.itemId}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a dashboard.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   *\n   * However, to get a dashboard, the dashboard must be shared with the user or the user must own it. Note, users with\n   * the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the\n   * System dashboard. The System dashboard is considered to be shared with all other users.\n   */\n  async getDashboard<T = Models.Dashboard>(\n    parameters: Parameters.GetDashboard | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a dashboard.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   *\n   * However, to get a dashboard, the dashboard must be shared with the user or the user must own it. Note, users with\n   * the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the\n   * System dashboard. The System dashboard is considered to be shared with all other users.\n   */\n  async getDashboard<T = Models.Dashboard>(parameters: Parameters.GetDashboard | string, callback?: never): Promise<T>;\n  async getDashboard<T = Models.Dashboard>(\n    parameters: Parameters.GetDashboard | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a dashboard, replacing all the dashboard details with those provided.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None\n   *\n   * The dashboard to be updated must be owned by the user.\n   */\n  async updateDashboard<T = Models.Dashboard>(\n    parameters: Parameters.UpdateDashboard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a dashboard, replacing all the dashboard details with those provided.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None\n   *\n   * The dashboard to be updated must be owned by the user.\n   */\n  async updateDashboard<T = Models.Dashboard>(parameters: Parameters.UpdateDashboard, callback?: never): Promise<T>;\n  async updateDashboard<T = Models.Dashboard>(\n    parameters: Parameters.UpdateDashboard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${parameters.id}`,\n      method: 'PUT',\n      params: {\n        extendAdminPermissions: parameters.extendAdminPermissions,\n      },\n      data: {\n        description: parameters.description,\n        editPermissions: parameters.editPermissions,\n        name: parameters.name,\n        sharePermissions: parameters.sharePermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None\n   *\n   * The dashboard to be deleted must be owned by the user.\n   */\n  async deleteDashboard<T = void>(\n    parameters: Parameters.DeleteDashboard | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None\n   *\n   * The dashboard to be deleted must be owned by the user.\n   */\n  async deleteDashboard<T = void>(parameters: Parameters.DeleteDashboard | string, callback?: never): Promise<T>;\n  async deleteDashboard<T = void>(\n    parameters: Parameters.DeleteDashboard | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Copies a dashboard. Any values provided in the `dashboard` parameter replace those in the copied dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None\n   *\n   * The dashboard to be copied must be owned by or shared with the user.\n   */\n  async copyDashboard<T = Models.Dashboard>(parameters: Parameters.CopyDashboard, callback: Callback<T>): Promise<void>;\n  /**\n   * Copies a dashboard. Any values provided in the `dashboard` parameter replace those in the copied dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None\n   *\n   * The dashboard to be copied must be owned by or shared with the user.\n   */\n  async copyDashboard<T = Models.Dashboard>(parameters: Parameters.CopyDashboard, callback?: never): Promise<T>;\n  async copyDashboard<T = Models.Dashboard>(\n    parameters: Parameters.CopyDashboard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/dashboard/${parameters.id}/copy`,\n      method: 'POST',\n      params: {\n        extendAdminPermissions: parameters.extendAdminPermissions,\n      },\n      data: {\n        description: parameters.description,\n        editPermissions: parameters.editPermissions,\n        name: parameters.name,\n        sharePermissions: parameters.sharePermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class DynamicModules {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all modules registered dynamically by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async getModules<T = Models.ConnectModules>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all modules registered dynamically by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async getModules<T = Models.ConnectModules>(callback?: never): Promise<T>;\n  async getModules<T = Models.ConnectModules>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/app/module/dynamic',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Registers a list of modules.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async registerModules<T = unknown>(\n    parameters: Parameters.RegisterModules | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Registers a list of modules.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async registerModules<T = unknown>(parameters?: Parameters.RegisterModules, callback?: never): Promise<T>;\n  async registerModules<T = unknown>(\n    parameters?: Parameters.RegisterModules,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/app/module/dynamic',\n      method: 'POST',\n      data: {\n        modules: parameters?.modules,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Remove all or a list of modules registered by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async removeModules<T = void>(parameters: Parameters.RemoveModules | undefined, callback: Callback<T>): Promise<void>;\n  /**\n   * Remove all or a list of modules registered by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async removeModules<T = void>(parameters?: Parameters.RemoveModules, callback?: never): Promise<T>;\n  async removeModules<T = void>(parameters?: Parameters.RemoveModules, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/app/module/dynamic',\n      method: 'DELETE',\n      params: {\n        moduleKey: parameters?.moduleKey,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class FilterSharing {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the default sharing settings for new filters and dashboards for a user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getDefaultShareScope<T = Models.DefaultShareScope>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the default sharing settings for new filters and dashboards for a user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getDefaultShareScope<T = Models.DefaultShareScope>(callback?: never): Promise<T>;\n  async getDefaultShareScope<T = Models.DefaultShareScope>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/filter/defaultShareScope',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the default sharing for new filters and dashboards for a user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async setDefaultShareScope<T = Models.DefaultShareScope>(\n    parameters: Parameters.SetDefaultShareScope | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the default sharing for new filters and dashboards for a user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async setDefaultShareScope<T = Models.DefaultShareScope>(\n    parameters: Parameters.SetDefaultShareScope | string,\n    callback?: never,\n  ): Promise<T>;\n  async setDefaultShareScope<T = Models.DefaultShareScope>(\n    parameters: Parameters.SetDefaultShareScope | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const scope = typeof parameters === 'string' ? parameters : parameters.scope;\n\n    const config: RequestConfig = {\n      url: '/rest/api/2/filter/defaultShareScope',\n      method: 'PUT',\n      data: {\n        scope,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the share permissions for a filter. A filter can be shared with groups, projects, all logged-in users, or\n   * the public. Sharing with all logged-in users or the public is known as a global share permission.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, share permissions are only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getSharePermissions<T = Models.SharePermission[]>(\n    parameters: Parameters.GetSharePermissions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the share permissions for a filter. A filter can be shared with groups, projects, all logged-in users, or\n   * the public. Sharing with all logged-in users or the public is known as a global share permission.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, share permissions are only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getSharePermissions<T = Models.SharePermission[]>(\n    parameters: Parameters.GetSharePermissions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getSharePermissions<T = Models.SharePermission[]>(\n    parameters: Parameters.GetSharePermissions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${id}/permission`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Add a share permissions to a filter. If you add a global share permission (one for all logged-in users or the\n   * public) it will overwrite all share permissions for the filter.\n   *\n   * Be aware that this operation uses different objects for updating share permissions compared to [Update\n   * filter](#api-rest-api-2-filter-id-put).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Share\n   * dashboards and filters_ [global permission](https://confluence.atlassian.com/x/x4dKLg) and the user must own the\n   * filter.\n   */\n  async addSharePermission<T = Models.SharePermission[]>(\n    parameters: Parameters.AddSharePermission,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Add a share permissions to a filter. If you add a global share permission (one for all logged-in users or the\n   * public) it will overwrite all share permissions for the filter.\n   *\n   * Be aware that this operation uses different objects for updating share permissions compared to [Update\n   * filter](#api-rest-api-2-filter-id-put).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Share\n   * dashboards and filters_ [global permission](https://confluence.atlassian.com/x/x4dKLg) and the user must own the\n   * filter.\n   */\n  async addSharePermission<T = Models.SharePermission[]>(\n    parameters: Parameters.AddSharePermission,\n    callback?: never,\n  ): Promise<T>;\n  async addSharePermission<T = Models.SharePermission[]>(\n    parameters: Parameters.AddSharePermission,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${parameters.id}/permission`,\n      method: 'POST',\n      data: {\n        type: parameters.type,\n        projectId: parameters.projectId,\n        groupname: parameters.groupname,\n        projectRoleId: parameters.projectRoleId,\n        accountId: parameters.accountId,\n        rights: parameters.rights,\n        groupId: parameters.groupId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a share permission for a filter. A filter can be shared with groups, projects, all logged-in users, or the\n   * public. Sharing with all logged-in users or the public is known as a global share permission.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, a share permission is only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getSharePermission<T = Models.SharePermission>(\n    parameters: Parameters.GetSharePermission,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a share permission for a filter. A filter can be shared with groups, projects, all logged-in users, or the\n   * public. Sharing with all logged-in users or the public is known as a global share permission.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, a share permission is only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getSharePermission<T = Models.SharePermission>(\n    parameters: Parameters.GetSharePermission,\n    callback?: never,\n  ): Promise<T>;\n  async getSharePermission<T = Models.SharePermission>(\n    parameters: Parameters.GetSharePermission,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${parameters.id}/permission/${parameters.permissionId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a share permission from a filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira and the user must own the filter.\n   */\n  async deleteSharePermission<T = void>(\n    parameters: Parameters.DeleteSharePermission,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a share permission from a filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira and the user must own the filter.\n   */\n  async deleteSharePermission<T = void>(parameters: Parameters.DeleteSharePermission, callback?: never): Promise<T>;\n  async deleteSharePermission<T = void>(\n    parameters: Parameters.DeleteSharePermission,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${parameters.id}/permission/${parameters.permissionId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Filters {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a filter. The filter is shared according to the [default share scope](#api-rest-api-2-filter-post). The\n   * filter is not selected as a favorite.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async createFilter<T = Models.Filter>(parameters: Parameters.CreateFilter, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a filter. The filter is shared according to the [default share scope](#api-rest-api-2-filter-post). The\n   * filter is not selected as a favorite.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async createFilter<T = Models.Filter>(parameters: Parameters.CreateFilter, callback?: never): Promise<T>;\n  async createFilter<T = Models.Filter>(\n    parameters: Parameters.CreateFilter,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/filter',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n        overrideSharePermissions: parameters.overrideSharePermissions,\n      },\n      data: {\n        approximateLastUsed: parameters.approximateLastUsed,\n        description: parameters.description,\n        editPermissions: parameters.editPermissions,\n        favourite: parameters.favourite,\n        favouritedCount: parameters.favouritedCount,\n        id: parameters.id,\n        jql: parameters.jql,\n        name: parameters.name,\n        owner: parameters.owner,\n        searchUrl: parameters.searchUrl,\n        self: parameters.self,\n        sharePermissions: parameters.sharePermissions,\n        sharedUsers: parameters.sharedUsers,\n        subscriptions: parameters.subscriptions,\n        viewUrl: parameters.viewUrl,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the visible favorite filters of the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** A\n   * favorite filter is only visible to the user where the filter is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   *\n   * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by\n   * this operation.\n   */\n  async getFavouriteFilters<T = Models.Filter[]>(\n    parameters: Parameters.GetFavouriteFilters | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the visible favorite filters of the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** A\n   * favorite filter is only visible to the user where the filter is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   *\n   * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by\n   * this operation.\n   */\n  async getFavouriteFilters<T = Models.Filter[]>(\n    parameters?: Parameters.GetFavouriteFilters,\n    callback?: never,\n  ): Promise<T>;\n  async getFavouriteFilters<T = Models.Filter[]>(\n    parameters?: Parameters.GetFavouriteFilters,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/filter/favourite',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the filters owned by the user. If `includeFavourites` is `true`, the user's visible favorite filters are\n   * also returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, a favorite filters is only visible to the user where the filter is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   *\n   * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by\n   * this operation.\n   */\n  async getMyFilters<T = Models.Filter[]>(\n    parameters: Parameters.GetMyFilters | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the filters owned by the user. If `includeFavourites` is `true`, the user's visible favorite filters are\n   * also returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, a favorite filters is only visible to the user where the filter is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   *\n   * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by\n   * this operation.\n   */\n  async getMyFilters<T = Models.Filter[]>(parameters?: Parameters.GetMyFilters, callback?: never): Promise<T>;\n  async getMyFilters<T = Models.Filter[]>(\n    parameters?: Parameters.GetMyFilters,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/filter/my',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n        includeFavourites: parameters?.includeFavourites,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * filters. Use this operation to get:\n   *\n   * - Specific filters, by defining `id` only.\n   * - Filters that match all of the specified attributes. For example, all filters for a user with a particular word in\n   *   their name. When multiple attributes are specified only filters matching all attributes are returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, only the following filters that match the query parameters are returned:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getFiltersPaginated<T = Models.PageFilterDetails>(\n    parameters: Parameters.GetFiltersPaginated | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * filters. Use this operation to get:\n   *\n   * - Specific filters, by defining `id` only.\n   * - Filters that match all of the specified attributes. For example, all filters for a user with a particular word in\n   *   their name. When multiple attributes are specified only filters matching all attributes are returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, only the following filters that match the query parameters are returned:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getFiltersPaginated<T = Models.PageFilterDetails>(\n    parameters?: Parameters.GetFiltersPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getFiltersPaginated<T = Models.PageFilterDetails>(\n    parameters?: Parameters.GetFiltersPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/filter/search',\n      method: 'GET',\n      params: {\n        filterName: parameters?.filterName,\n        accountId: parameters?.accountId,\n        groupname: parameters?.groupname,\n        groupId: parameters?.groupId,\n        projectId: parameters?.projectId,\n        id: parameters?.id,\n        orderBy: parameters?.orderBy,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        expand: parameters?.expand,\n        overrideSharePermissions: parameters?.overrideSharePermissions,\n        isSubstringMatch: parameters?.isSubstringMatch,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a filter.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, the filter is only returned where it is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   */\n  async getFilter<T = Models.Filter>(parameters: Parameters.GetFilter | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a filter.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, the filter is only returned where it is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   */\n  async getFilter<T = Models.Filter>(parameters: Parameters.GetFilter | string, callback?: never): Promise<T>;\n  async getFilter<T = Models.Filter>(\n    parameters: Parameters.GetFilter | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${id}`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n        overrideSharePermissions: typeof parameters !== 'string' && parameters.overrideSharePermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a filter. Use this operation to update a filter's name, description, JQL, or sharing.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however the user must own the filter.\n   */\n  async updateFilter<T = Models.Filter>(parameters: Parameters.UpdateFilter, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a filter. Use this operation to update a filter's name, description, JQL, or sharing.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however the user must own the filter.\n   */\n  async updateFilter<T = Models.Filter>(parameters: Parameters.UpdateFilter, callback?: never): Promise<T>;\n  async updateFilter<T = Models.Filter>(\n    parameters: Parameters.UpdateFilter,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${parameters.id}`,\n      method: 'PUT',\n      params: {\n        expand: parameters.expand,\n        overrideSharePermissions: parameters.overrideSharePermissions,\n      },\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        jql: parameters.jql,\n        favourite: parameters.favourite,\n        sharePermissions: parameters.sharePermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Delete a filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however filters can only be deleted by the creator of the filter or a user with\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFilter<T = void>(parameters: Parameters.DeleteFilter | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Delete a filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however filters can only be deleted by the creator of the filter or a user with\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFilter<T = void>(parameters: Parameters.DeleteFilter | string, callback?: never): Promise<T>;\n  async deleteFilter<T = void>(\n    parameters: Parameters.DeleteFilter | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the columns configured for a filter. The column configuration is used when the filter's results are viewed\n   * in _List View_ with the _Columns_ set to _Filter_.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, column details are only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getColumns<T = Models.ColumnItem[]>(\n    parameters: Parameters.GetColumns | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the columns configured for a filter. The column configuration is used when the filter's results are viewed\n   * in _List View_ with the _Columns_ set to _Filter_.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, column details are only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getColumns<T = Models.ColumnItem[]>(parameters: Parameters.GetColumns | string, callback?: never): Promise<T>;\n  async getColumns<T = Models.ColumnItem[]>(\n    parameters: Parameters.GetColumns | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${id}/columns`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the columns for a filter. Only navigable fields can be set as columns. Use [Get\n   * fields](#api-rest-api-2-field-get) to get the list fields in Jira. A navigable field has `navigable` set to\n   * `true`.\n   *\n   * The parameters for this resource are expressed as HTML form data. For example, in curl:\n   *\n   * `curl -X PUT -d columns=summary -d columns=description\n   * https://your-domain.atlassian.net/rest/api/2/filter/10000/columns`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, columns are only set for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async setColumns<T = unknown>(parameters: Parameters.SetColumns, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the columns for a filter. Only navigable fields can be set as columns. Use [Get\n   * fields](#api-rest-api-2-field-get) to get the list fields in Jira. A navigable field has `navigable` set to\n   * `true`.\n   *\n   * The parameters for this resource are expressed as HTML form data. For example, in curl:\n   *\n   * `curl -X PUT -d columns=summary -d columns=description\n   * https://your-domain.atlassian.net/rest/api/2/filter/10000/columns`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, columns are only set for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async setColumns<T = unknown>(parameters: Parameters.SetColumns, callback?: never): Promise<T>;\n  async setColumns<T = unknown>(parameters: Parameters.SetColumns, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${parameters.id}/columns`,\n      method: 'PUT',\n      data: parameters.columns,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Reset the user's column configuration for the filter to the default.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, columns are only reset for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async resetColumns<T = void>(parameters: Parameters.ResetColumns | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Reset the user's column configuration for the filter to the default.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, columns are only reset for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async resetColumns<T = void>(parameters: Parameters.ResetColumns | string, callback?: never): Promise<T>;\n  async resetColumns<T = void>(\n    parameters: Parameters.ResetColumns | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${id}/columns`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Add a filter as a favorite for the user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, the user can only favorite:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async setFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.SetFavouriteForFilter | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Add a filter as a favorite for the user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, the user can only favorite:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async setFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.SetFavouriteForFilter | string,\n    callback?: never,\n  ): Promise<T>;\n  async setFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.SetFavouriteForFilter | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${id}/favourite`,\n      method: 'PUT',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a filter as a favorite for the user. Note that this operation only removes filters visible to the user from\n   * the user's favorites list. For example, if the user favorites a public filter that is subsequently made private\n   * (and is therefore no longer visible on their favorites list) they cannot remove it from their favorites list.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async deleteFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.DeleteFavouriteForFilter | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a filter as a favorite for the user. Note that this operation only removes filters visible to the user from\n   * the user's favorites list. For example, if the user favorites a public filter that is subsequently made private\n   * (and is therefore no longer visible on their favorites list) they cannot remove it from their favorites list.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async deleteFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.DeleteFavouriteForFilter | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.DeleteFavouriteForFilter | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${id}/favourite`,\n      method: 'DELETE',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the owner of the filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira. However, the user must own the filter or have the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async changeFilterOwner<T = void>(parameters: Parameters.ChangeFilterOwner, callback: Callback<T>): Promise<void>;\n  /**\n   * Changes the owner of the filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira. However, the user must own the filter or have the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async changeFilterOwner<T = void>(parameters: Parameters.ChangeFilterOwner, callback?: never): Promise<T>;\n  async changeFilterOwner<T = void>(\n    parameters: Parameters.ChangeFilterOwner,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/filter/${parameters.id}/owner`,\n      method: 'PUT',\n      data: {\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class GroupAndUserPicker {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of users and groups matching a string. The string is used:\n   *\n   * - For users, to find a case-insensitive match with display name and e-mail address. Note that if a user has hidden\n   *   their email address in their user profile, partial matches of the email address will not find the user. An exact\n   *   match is required.\n   * - For groups, to find a case-sensitive match with group name.\n   *\n   * For example, if the string _tin_ is used, records with the display name _Tina_, email address\n   * _sarah@tinplatetraining.com_, and the group _accounting_ would be returned.\n   *\n   * Optionally, the search can be refined to:\n   *\n   * - The projects and issue types associated with a custom field, such as a user picker. The search can then be further\n   *   refined to return only users and groups that have permission to view specific:\n   *\n   *   - Projects.\n   *   - Issue types.\n   *\n   *   If multiple projects or issue types are specified, they must be a subset of those enabled for the custom field or\n   *   no results are returned. For example, if a field is enabled for projects A, B, and C then the search could be\n   *   limited to projects B and C. However, if the search is limited to projects B and D, nothing is returned.\n   * - Not return Connect app users and groups.\n   * - Return groups that have a case-insensitive match with the query.\n   *\n   * The primary use case for this resource is to populate a picker field suggestion list with users or groups. To this\n   * end, the returned object includes an `html` field for each list. This field highlights the matched query term in\n   * the item name with the HTML strong tag. Also, each list is wrapped in a response object that contains a header for\n   * use in a picker, specifically _Showing X of Y matching groups_.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async findUsersAndGroups<T = Models.FoundUsersAndGroups>(\n    parameters: Parameters.FindUsersAndGroups,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users and groups matching a string. The string is used:\n   *\n   * - For users, to find a case-insensitive match with display name and e-mail address. Note that if a user has hidden\n   *   their email address in their user profile, partial matches of the email address will not find the user. An exact\n   *   match is required.\n   * - For groups, to find a case-sensitive match with group name.\n   *\n   * For example, if the string _tin_ is used, records with the display name _Tina_, email address\n   * _sarah@tinplatetraining.com_, and the group _accounting_ would be returned.\n   *\n   * Optionally, the search can be refined to:\n   *\n   * - The projects and issue types associated with a custom field, such as a user picker. The search can then be further\n   *   refined to return only users and groups that have permission to view specific:\n   *\n   *   - Projects.\n   *   - Issue types.\n   *\n   *   If multiple projects or issue types are specified, they must be a subset of those enabled for the custom field or\n   *   no results are returned. For example, if a field is enabled for projects A, B, and C then the search could be\n   *   limited to projects B and C. However, if the search is limited to projects B and D, nothing is returned.\n   * - Not return Connect app users and groups.\n   * - Return groups that have a case-insensitive match with the query.\n   *\n   * The primary use case for this resource is to populate a picker field suggestion list with users or groups. To this\n   * end, the returned object includes an `html` field for each list. This field highlights the matched query term in\n   * the item name with the HTML strong tag. Also, each list is wrapped in a response object that contains a header for\n   * use in a picker, specifically _Showing X of Y matching groups_.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async findUsersAndGroups<T = Models.FoundUsersAndGroups>(\n    parameters: Parameters.FindUsersAndGroups,\n    callback?: never,\n  ): Promise<T>;\n  async findUsersAndGroups<T = Models.FoundUsersAndGroups>(\n    parameters: Parameters.FindUsersAndGroups,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/groupuserpicker',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        maxResults: parameters.maxResults,\n        showAvatar: parameters.showAvatar,\n        fieldId: parameters.fieldId,\n        projectId: parameters.projectId,\n        issueTypeId: parameters.issueTypeId,\n        avatarSize: parameters.avatarSize,\n        caseInsensitive: parameters.caseInsensitive,\n        excludeConnectAddons: parameters.excludeConnectAddons,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Groups {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async createGroup<T = Models.Group>(parameters: Parameters.CreateGroup, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async createGroup<T = Models.Group>(parameters: Parameters.CreateGroup, callback?: never): Promise<T>;\n  async createGroup<T = Models.Group>(parameters: Parameters.CreateGroup, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/group',\n      method: 'POST',\n      data: parameters,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ strategic [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeGroup<T = string>(parameters: Parameters.RemoveGroup, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ strategic [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeGroup<T = string>(parameters: Parameters.RemoveGroup, callback?: never): Promise<T>;\n  async removeGroup<T = string>(parameters: Parameters.RemoveGroup, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/group',\n      method: 'DELETE',\n      params: {\n        groupname: parameters.groupname,\n        groupId: parameters.groupId,\n        swapGroup: parameters.swapGroup,\n        swapGroupId: parameters.swapGroupId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * groups.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async bulkGetGroups<T = Models.PageGroupDetails>(\n    parameters: Parameters.BulkGetGroups | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * groups.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async bulkGetGroups<T = Models.PageGroupDetails>(parameters?: Parameters.BulkGetGroups, callback?: never): Promise<T>;\n  async bulkGetGroups<T = Models.PageGroupDetails>(\n    parameters?: Parameters.BulkGetGroups,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/group/bulk',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        groupId: parameters?.groupId,\n        groupName: parameters?.groupName,\n        accessType: parameters?.accessType,\n        applicationKey: parameters?.applicationKey,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * users in a group.\n   *\n   * Note that users are ordered by username, however the username is not returned in the results due to privacy\n   * reasons.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Browse users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUsersFromGroup<T = Models.PageUserDetails>(\n    parameters: Parameters.GetUsersFromGroup,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * users in a group.\n   *\n   * Note that users are ordered by username, however the username is not returned in the results due to privacy\n   * reasons.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Browse users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUsersFromGroup<T = Models.PageUserDetails>(\n    parameters: Parameters.GetUsersFromGroup,\n    callback?: never,\n  ): Promise<T>;\n  async getUsersFromGroup<T = Models.PageUserDetails>(\n    parameters: Parameters.GetUsersFromGroup,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/group/member',\n      method: 'GET',\n      params: {\n        groupname: parameters.groupname,\n        groupId: parameters.groupId,\n        includeInactiveUsers: parameters.includeInactiveUsers,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a user to a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async addUserToGroup<T = Models.Group>(parameters: Parameters.AddUserToGroup, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds a user to a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async addUserToGroup<T = Models.Group>(parameters: Parameters.AddUserToGroup, callback?: never): Promise<T>;\n  async addUserToGroup<T = Models.Group>(\n    parameters: Parameters.AddUserToGroup,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/group/user',\n      method: 'POST',\n      params: {\n        groupname: parameters.groupName,\n        groupId: parameters.groupId,\n      },\n      data: {\n        accountId: parameters.accountId,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a user from a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeUserFromGroup<T = unknown>(\n    parameters: Parameters.RemoveUserFromGroup,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a user from a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeUserFromGroup<T = unknown>(parameters: Parameters.RemoveUserFromGroup, callback?: never): Promise<T>;\n  async removeUserFromGroup<T = unknown>(\n    parameters: Parameters.RemoveUserFromGroup,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/group/user',\n      method: 'DELETE',\n      params: {\n        groupname: parameters.groupname,\n        groupId: parameters.groupId,\n        username: parameters.username,\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of groups whose names contain a query string. A list of group names can be provided to exclude\n   * groups from the results.\n   *\n   * The primary use case for this resource is to populate a group picker suggestions list. To this end, the returned\n   * object includes the `html` field where the matched query term is highlighted in the group name with the HTML strong\n   * tag. Also, the groups list is wrapped in a response object that contains a header for use in the picker,\n   * specifically _Showing X of Y matching groups_.\n   *\n   * The list returns with the groups sorted. If no groups match the list criteria, an empty list is returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg). Anonymous calls and calls by users\n   * without the required permission return an empty list.\n   *\n   * _Browse users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Without this permission,\n   * calls where query is not an exact match to an existing group will return an empty list.\n   */\n  async findGroups<T = Models.FoundGroups>(\n    parameters: Parameters.FindGroups | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of groups whose names contain a query string. A list of group names can be provided to exclude\n   * groups from the results.\n   *\n   * The primary use case for this resource is to populate a group picker suggestions list. To this end, the returned\n   * object includes the `html` field where the matched query term is highlighted in the group name with the HTML strong\n   * tag. Also, the groups list is wrapped in a response object that contains a header for use in the picker,\n   * specifically _Showing X of Y matching groups_.\n   *\n   * The list returns with the groups sorted. If no groups match the list criteria, an empty list is returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg). Anonymous calls and calls by users\n   * without the required permission return an empty list.\n   *\n   * _Browse users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Without this permission,\n   * calls where query is not an exact match to an existing group will return an empty list.\n   */\n  async findGroups<T = Models.FoundGroups>(parameters?: Parameters.FindGroups, callback?: never): Promise<T>;\n  async findGroups<T = Models.FoundGroups>(\n    parameters?: Parameters.FindGroups,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/groups/picker',\n      method: 'GET',\n      params: {\n        query: parameters?.query,\n        exclude: parameters?.exclude,\n        excludeId: parameters?.excludeId,\n        maxResults: parameters?.maxResults,\n        caseInsensitive: parameters?.caseInsensitive,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type { Mime } from 'mime';\nimport mime from 'mime';\nimport type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueAttachments {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the contents of an attachment. A `Range` header can be set to define a range of bytes within the attachment\n   * to download. See the [HTTP Range header standard](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range)\n   * for details.\n   *\n   * To return a thumbnail of the attachment, use [Get attachment\n   * thumbnail](#api-rest-api-2-attachment-thumbnail-id-get).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachmentContent<T = Buffer>(\n    parameters: Parameters.GetAttachmentContent | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the contents of an attachment. A `Range` header can be set to define a range of bytes within the attachment\n   * to download. See the [HTTP Range header standard](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range)\n   * for details.\n   *\n   * To return a thumbnail of the attachment, use [Get attachment\n   * thumbnail](#api-rest-api-2-attachment-thumbnail-id-get).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachmentContent<T = Buffer>(\n    parameters: Parameters.GetAttachmentContent | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAttachmentContent<T = Buffer>(\n    parameters: Parameters.GetAttachmentContent | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/attachment/content/${id}`,\n      method: 'GET',\n      params: {\n        redirect: typeof parameters !== 'string' && parameters.redirect,\n      },\n      responseType: 'arraybuffer',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the attachment settings, that is, whether attachments are enabled and the maximum attachment size allowed.\n   *\n   * Note that there are also [project permissions](https://confluence.atlassian.com/x/yodKLg) that restrict whether\n   * users can create and delete attachments.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAttachmentMeta<T = Models.AttachmentSettings>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the attachment settings, that is, whether attachments are enabled and the maximum attachment size allowed.\n   *\n   * Note that there are also [project permissions](https://confluence.atlassian.com/x/yodKLg) that restrict whether\n   * users can create and delete attachments.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAttachmentMeta<T = Models.AttachmentSettings>(callback?: never): Promise<T>;\n  async getAttachmentMeta<T = Models.AttachmentSettings>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/attachment/meta',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the thumbnail of an attachment.\n   *\n   * To return the attachment contents, use [Get attachment content](#api-rest-api-2-attachment-content-id-get).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachmentThumbnail<T = Buffer>(\n    parameters: Parameters.GetAttachmentThumbnail | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the thumbnail of an attachment.\n   *\n   * To return the attachment contents, use [Get attachment content](#api-rest-api-2-attachment-content-id-get).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachmentThumbnail<T = Buffer>(\n    parameters: Parameters.GetAttachmentThumbnail | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAttachmentThumbnail<T = Buffer>(\n    parameters: Parameters.GetAttachmentThumbnail | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/attachment/thumbnail/${id}`,\n      method: 'GET',\n      params: {\n        redirect: typeof parameters !== 'string' && parameters.redirect,\n        fallbackToDefault: typeof parameters !== 'string' && parameters.fallbackToDefault,\n        width: typeof parameters !== 'string' && parameters.width,\n        height: typeof parameters !== 'string' && parameters.height,\n      },\n      responseType: 'arraybuffer',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the metadata for an attachment. Note that the attachment itself is not returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachment<T = Models.AttachmentMetadata>(\n    parameters: Parameters.GetAttachment | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the metadata for an attachment. Note that the attachment itself is not returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachment<T = Models.AttachmentMetadata>(\n    parameters: Parameters.GetAttachment | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAttachment<T = Models.AttachmentMetadata>(\n    parameters: Parameters.GetAttachment | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/attachment/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an attachment from an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** For the\n   * project holding the issue containing the attachment:\n   *\n   * - _Delete own attachments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment\n   *   created by the calling user.\n   * - _Delete all attachments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment\n   *   created by any user.\n   */\n  async removeAttachment<T = void>(\n    parameters: Parameters.RemoveAttachment | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an attachment from an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** For the\n   * project holding the issue containing the attachment:\n   *\n   * - _Delete own attachments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment\n   *   created by the calling user.\n   * - _Delete all attachments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment\n   *   created by any user.\n   */\n  async removeAttachment<T = void>(parameters: Parameters.RemoveAttachment | string, callback?: never): Promise<T>;\n  async removeAttachment<T = void>(\n    parameters: Parameters.RemoveAttachment | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/attachment/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the metadata for the contents of an attachment, if it is an archive, and metadata for the attachment\n   * itself. For example, if the attachment is a ZIP archive, then information about the files in the archive is\n   * returned and metadata for the ZIP archive. Currently, only the ZIP archive format is supported.\n   *\n   * Use this operation to retrieve data that is presented to the user, as this operation returns the metadata for the\n   * attachment itself, such as the attachment's ID and name. Otherwise, use [ Get contents metadata for an expanded\n   * attachment](#api-rest-api-2-attachment-id-expand-raw-get), which only returns the metadata for the attachment's\n   * contents.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async expandAttachmentForHumans<T = Models.AttachmentArchiveMetadataReadable>(\n    parameters: Parameters.ExpandAttachmentForHumans | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the metadata for the contents of an attachment, if it is an archive, and metadata for the attachment\n   * itself. For example, if the attachment is a ZIP archive, then information about the files in the archive is\n   * returned and metadata for the ZIP archive. Currently, only the ZIP archive format is supported.\n   *\n   * Use this operation to retrieve data that is presented to the user, as this operation returns the metadata for the\n   * attachment itself, such as the attachment's ID and name. Otherwise, use [ Get contents metadata for an expanded\n   * attachment](#api-rest-api-2-attachment-id-expand-raw-get), which only returns the metadata for the attachment's\n   * contents.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async expandAttachmentForHumans<T = Models.AttachmentArchiveMetadataReadable>(\n    parameters: Parameters.ExpandAttachmentForHumans | string,\n    callback?: never,\n  ): Promise<T>;\n  async expandAttachmentForHumans<T = Models.AttachmentArchiveMetadataReadable>(\n    parameters: Parameters.ExpandAttachmentForHumans | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/attachment/${id}/expand/human`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the metadata for the contents of an attachment, if it is an archive. For example, if the attachment is a\n   * ZIP archive, then information about the files in the archive is returned. Currently, only the ZIP archive format is\n   * supported.\n   *\n   * Use this operation if you are processing the data without presenting it to the user, as this operation only returns\n   * the metadata for the contents of the attachment. Otherwise, to retrieve data to present to the user, use [ Get all\n   * metadata for an expanded attachment](#api-rest-api-2-attachment-id-expand-human-get) which also returns the\n   * metadata for the attachment itself, such as the attachment's ID and name.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async expandAttachmentForMachines<T = Models.AttachmentArchiveImpl>(\n    parameters: Parameters.ExpandAttachmentForMachines | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the metadata for the contents of an attachment, if it is an archive. For example, if the attachment is a\n   * ZIP archive, then information about the files in the archive is returned. Currently, only the ZIP archive format is\n   * supported.\n   *\n   * Use this operation if you are processing the data without presenting it to the user, as this operation only returns\n   * the metadata for the contents of the attachment. Otherwise, to retrieve data to present to the user, use [ Get all\n   * metadata for an expanded attachment](#api-rest-api-2-attachment-id-expand-human-get) which also returns the\n   * metadata for the attachment itself, such as the attachment's ID and name.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async expandAttachmentForMachines<T = Models.AttachmentArchiveImpl>(\n    parameters: Parameters.ExpandAttachmentForMachines | string,\n    callback?: never,\n  ): Promise<T>;\n  async expandAttachmentForMachines<T = Models.AttachmentArchiveImpl>(\n    parameters: Parameters.ExpandAttachmentForMachines | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/attachment/${id}/expand/raw`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds one or more attachments to an issue. Attachments are posted as multipart/form-data ([RFC\n   * 1867](https://www.ietf.org/rfc/rfc1867.txt)).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ and _Create attachments_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addAttachment<T = Models.Attachment[]>(\n    parameters: Parameters.AddAttachment,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds one or more attachments to an issue. Attachments are posted as multipart/form-data ([RFC\n   * 1867](https://www.ietf.org/rfc/rfc1867.txt)).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ and _Create attachments_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addAttachment<T = Models.Attachment[]>(parameters: Parameters.AddAttachment, callback?: never): Promise<T>;\n  async addAttachment<T = Models.Attachment[]>(\n    parameters: Parameters.AddAttachment,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const formData = new FormData();\n    const attachments = Array.isArray(parameters.attachment) ? parameters.attachment : [parameters.attachment];\n\n    // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n    let Readable: typeof import('stream').Readable | undefined;\n\n    if (typeof window === 'undefined') {\n      const { Readable: NodeReadable } = await import('stream');\n\n      Readable = NodeReadable;\n    }\n\n    for await (const attachment of attachments) {\n      const file = await this._convertToFile(attachment, mime, Readable);\n\n      if (!(file instanceof File || file instanceof Blob)) {\n        throw new Error(`Unsupported file type for attachment: ${typeof file}`);\n      }\n\n      formData.append('file', file, attachment.filename);\n    }\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/attachments`,\n      method: 'POST',\n      headers: {\n        'X-Atlassian-Token': 'no-check',\n        'Content-Type': 'multipart/form-data',\n      },\n      data: formData,\n      maxBodyLength: Infinity,\n      maxContentLength: Infinity,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  private async _convertToFile(\n    attachment: Parameters.Attachment,\n    mime: Mime,\n    // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n    Readable?: typeof import('stream').Readable,\n  ): Promise<File | Blob> {\n    const mimeType = attachment.mimeType ?? (mime.getType(attachment.filename) || undefined);\n\n    if (attachment.file instanceof Blob || attachment.file instanceof File) {\n      return attachment.file;\n    }\n\n    if (typeof attachment.file === 'string') {\n      return new File([attachment.file], attachment.filename, { type: mimeType });\n    }\n\n    if (Readable && attachment.file instanceof Readable) {\n      return this._streamToBlob(attachment.file, attachment.filename, mimeType);\n    }\n\n    if (attachment.file instanceof ReadableStream) {\n      return this._streamToBlob(attachment.file, attachment.filename, mimeType);\n    }\n\n    if (ArrayBuffer.isView(attachment.file) || attachment.file instanceof ArrayBuffer) {\n      return new File([attachment.file], attachment.filename, { type: mimeType });\n    }\n\n    throw new Error('Unsupported attachment file type.');\n  }\n\n  private async _streamToBlob(\n    // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n    stream: import('stream').Readable | ReadableStream,\n    filename: string,\n    mimeType?: string,\n  ): Promise<File> {\n    if (typeof window === 'undefined' && stream instanceof (await import('stream')).Readable) {\n      return new Promise((resolve, reject) => {\n        const chunks: Uint8Array[] = [];\n\n        stream.on('data', chunk => chunks.push(chunk));\n        stream.on('end', () => {\n          const blob = new Blob(chunks, { type: mimeType });\n\n          resolve(new File([blob], filename, { type: mimeType }));\n        });\n        stream.on('error', reject);\n      });\n    }\n\n    if (stream instanceof ReadableStream) {\n      const reader = stream.getReader();\n      const chunks: Uint8Array[] = [];\n\n      let done = false;\n\n      while (!done) {\n        const { value, done: streamDone } = await reader.read();\n\n        if (value) chunks.push(value);\n        done = streamDone;\n      }\n\n      const blob = new Blob(chunks, { type: mimeType });\n\n      return new File([blob], filename, { type: mimeType });\n    }\n\n    throw new Error('Unsupported stream type.');\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCommentProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the keys of all the properties of a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetCommentPropertyKeys | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all the properties of a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetCommentPropertyKeys | string,\n    callback?: never,\n  ): Promise<T>;\n  async getCommentPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetCommentPropertyKeys | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const commentId = typeof parameters === 'string' ? parameters : parameters.commentId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/comment/${commentId}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of a comment property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetCommentProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a comment property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetCommentProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getCommentProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetCommentProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/comment/${parameters.commentId}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates or updates the value of a property for a comment. Use this resource to store custom data against a comment.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Edit All Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value\n   *   of a property on any comment.\n   * - _Edit Own Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value\n   *   of a property on a comment created by the user.\n   *\n   * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or\n   * group.\n   */\n  async setCommentProperty<T = unknown>(\n    parameters: Parameters.SetCommentProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates or updates the value of a property for a comment. Use this resource to store custom data against a comment.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Edit All Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value\n   *   of a property on any comment.\n   * - _Edit Own Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value\n   *   of a property on a comment created by the user.\n   *\n   * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or\n   * group.\n   */\n  async setCommentProperty<T = unknown>(parameters: Parameters.SetCommentProperty, callback?: never): Promise<T>;\n  async setCommentProperty<T = unknown>(\n    parameters: Parameters.SetCommentProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/comment/${parameters.commentId}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.property,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a comment property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Edit All Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from any\n   *   comment.\n   * - _Edit Own Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from a\n   *   comment created by the user.\n   *\n   * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or\n   * group.\n   */\n  async deleteCommentProperty<T = void>(\n    parameters: Parameters.DeleteCommentProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a comment property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Edit All Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from any\n   *   comment.\n   * - _Edit Own Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from a\n   *   comment created by the user.\n   *\n   * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or\n   * group.\n   */\n  async deleteCommentProperty<T = void>(parameters: Parameters.DeleteCommentProperty, callback?: never): Promise<T>;\n  async deleteCommentProperty<T = void>(\n    parameters: Parameters.DeleteCommentProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/comment/${parameters.commentId}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueComments {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * comments specified by a list of comment IDs.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Comments are returned where the user:\n   *\n   * - Has _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   *   the comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentsByIds<T = Models.PageComment>(\n    parameters: Parameters.GetCommentsByIds,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * comments specified by a list of comment IDs.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Comments are returned where the user:\n   *\n   * - Has _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   *   the comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentsByIds<T = Models.PageComment>(parameters: Parameters.GetCommentsByIds, callback?: never): Promise<T>;\n  async getCommentsByIds<T = Models.PageComment>(\n    parameters: Parameters.GetCommentsByIds,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/comment/list',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        ids: parameters.ids,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all comments for an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Comments are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is role visibility is\n   *   restricted to.\n   */\n  async getComments<T = Models.PageOfComments>(\n    parameters: Parameters.GetComments | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all comments for an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Comments are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is role visibility is\n   *   restricted to.\n   */\n  async getComments<T = Models.PageOfComments>(\n    parameters: Parameters.GetComments | string,\n    callback?: never,\n  ): Promise<T>;\n  async getComments<T = Models.PageOfComments>(\n    parameters: Parameters.GetComments | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/comment`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        orderBy: typeof parameters !== 'string' && parameters.orderBy,\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a comment to an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Add comments_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addComment<T = Models.Comment>(parameters: Parameters.AddComment, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds a comment to an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Add comments_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addComment<T = Models.Comment>(parameters: Parameters.AddComment, callback?: never): Promise<T>;\n  async addComment<T = Models.Comment>(parameters: Parameters.AddComment, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/comment`,\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        author: parameters.author,\n        body: parameters.comment,\n        created: parameters.created,\n        id: parameters.id,\n        jsdAuthorCanSeeRequest: parameters.jsdAuthorCanSeeRequest,\n        jsdPublic: parameters.jsdPublic,\n        properties: parameters.properties,\n        renderedBody: parameters.renderedBody,\n        self: parameters.self,\n        updateAuthor: parameters.updateAuthor,\n        updated: parameters.updated,\n        visibility: parameters.visibility,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   */\n  async getComment<T = Models.Comment>(parameters: Parameters.GetComment, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   */\n  async getComment<T = Models.Comment>(parameters: Parameters.GetComment, callback?: never): Promise<T>;\n  async getComment<T = Models.Comment>(parameters: Parameters.GetComment, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/comment/${parameters.id}`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue\n   *   containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all comments_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any comment or _Edit\n   *   own comments_ to update comment created by the user.\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   *\n   * **WARNING:** Child comments inherit visibility from their parent comment. Attempting to update a child comment's\n   * visibility will result in a 400 (Bad Request) error.\n   */\n  async updateComment<T = Models.Comment>(parameters: Parameters.UpdateComment, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue\n   *   containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all comments_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any comment or _Edit\n   *   own comments_ to update comment created by the user.\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   *\n   * **WARNING:** Child comments inherit visibility from their parent comment. Attempting to update a child comment's\n   * visibility will result in a 400 (Bad Request) error.\n   */\n  async updateComment<T = Models.Comment>(parameters: Parameters.UpdateComment, callback?: never): Promise<T>;\n  async updateComment<T = Models.Comment>(\n    parameters: Parameters.UpdateComment,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/comment/${parameters.id}`,\n      method: 'PUT',\n      params: {\n        notifyUsers: parameters.notifyUsers,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n        expand: parameters.expand,\n      },\n      data: {\n        body: parameters.comment,\n        visibility: parameters.visibility,\n        properties: parameters.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue\n   *   containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all comments_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any comment or\n   *   _Delete own comments_ to delete comment created by the user,\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   */\n  async deleteComment<T = void>(parameters: Parameters.DeleteComment, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue\n   *   containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all comments_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any comment or\n   *   _Delete own comments_ to delete comment created by the user,\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   */\n  async deleteComment<T = void>(parameters: Parameters.DeleteComment, callback?: never): Promise<T>;\n  async deleteComment<T = void>(parameters: Parameters.DeleteComment, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/comment/${parameters.id}`,\n      method: 'DELETE',\n      params: {\n        parentId: parameters.parentId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldAssociations {\n  constructor(private client: Client) {}\n\n  /**\n   * Associates fields with projects.\n   *\n   * Fields will be associated with each issue type on the requested projects.\n   *\n   * Fields will be associated with all projects that share the same field configuration which the provided projects are\n   * using. This means that while the field will be associated with the requested projects, it will also be associated\n   * with any other projects that share the same field configuration.\n   *\n   * If a success response is returned it means that the field association has been created in any applicable contexts\n   * where it wasn't already present.\n   *\n   * Up to 50 fields and up to 100 projects can be associated in a single request. If more fields or projects are\n   * provided a 400 response will be returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createAssociations<T = void>(\n    parameters: Parameters.CreateAssociations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Associates fields with projects.\n   *\n   * Fields will be associated with each issue type on the requested projects.\n   *\n   * Fields will be associated with all projects that share the same field configuration which the provided projects are\n   * using. This means that while the field will be associated with the requested projects, it will also be associated\n   * with any other projects that share the same field configuration.\n   *\n   * If a success response is returned it means that the field association has been created in any applicable contexts\n   * where it wasn't already present.\n   *\n   * Up to 50 fields and up to 100 projects can be associated in a single request. If more fields or projects are\n   * provided a 400 response will be returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createAssociations<T = void>(parameters?: Parameters.CreateAssociations, callback?: never): Promise<T>;\n  async createAssociations<T = void>(\n    parameters?: Parameters.CreateAssociations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/field/association',\n      method: 'PUT',\n      data: {\n        associationContexts: parameters?.associationContexts,\n        fields: parameters?.fields,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Unassociates a set of fields with a project and issue type context.\n   *\n   * Fields will be unassociated with all projects/issue types that share the same field configuration which the\n   * provided project and issue types are using. This means that while the field will be unassociated with the provided\n   * project and issue types, it will also be unassociated with any other projects and issue types that share the same\n   * field configuration.\n   *\n   * If a success response is returned it means that the field association has been removed in any applicable contexts\n   * where it was present.\n   *\n   * Up to 50 fields and up to 100 projects and issue types can be unassociated in a single request. If more fields or\n   * projects are provided a 400 response will be returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeAssociations<T = void>(\n    parameters: Parameters.RemoveAssociations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Unassociates a set of fields with a project and issue type context.\n   *\n   * Fields will be unassociated with all projects/issue types that share the same field configuration which the\n   * provided project and issue types are using. This means that while the field will be unassociated with the provided\n   * project and issue types, it will also be unassociated with any other projects and issue types that share the same\n   * field configuration.\n   *\n   * If a success response is returned it means that the field association has been removed in any applicable contexts\n   * where it was present.\n   *\n   * Up to 50 fields and up to 100 projects and issue types can be unassociated in a single request. If more fields or\n   * projects are provided a 400 response will be returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeAssociations<T = void>(parameters?: Parameters.RemoveAssociations, callback?: never): Promise<T>;\n  async removeAssociations<T = void>(\n    parameters?: Parameters.RemoveAssociations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/field/association',\n      method: 'DELETE',\n      data: {\n        associationContexts: parameters?.associationContexts,\n        fields: parameters?.fields,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldConfigurationApps {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * configurations for list of custom fields of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * The result can be filtered by one of these criteria:\n   *\n   * - `id`.\n   * - `fieldContextId`.\n   * - `issueId`.\n   * - `projectKeyOrId` and `issueTypeId`.\n   *\n   * Otherwise, all configurations for the provided list of custom fields are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that provided the custom field type.\n   */\n  async getCustomFieldsConfigurations<T = Models.PageBulkContextualConfiguration>(\n    parameters: Parameters.GetCustomFieldsConfigurations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * configurations for list of custom fields of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * The result can be filtered by one of these criteria:\n   *\n   * - `id`.\n   * - `fieldContextId`.\n   * - `issueId`.\n   * - `projectKeyOrId` and `issueTypeId`.\n   *\n   * Otherwise, all configurations for the provided list of custom fields are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that provided the custom field type.\n   */\n  async getCustomFieldsConfigurations<T = Models.PageBulkContextualConfiguration>(\n    parameters?: Parameters.GetCustomFieldsConfigurations,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomFieldsConfigurations<T = Models.PageBulkContextualConfiguration>(\n    parameters?: Parameters.GetCustomFieldsConfigurations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/app/field/context/configuration/list',\n      method: 'POST',\n      params: {\n        id: parameters?.id,\n        fieldContextId: parameters?.fieldContextId,\n        issueId: parameters?.issueId,\n        projectKeyOrId: parameters?.projectKeyOrId,\n        issueTypeId: parameters?.issueTypeId,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n      data: {\n        fieldIdsOrKeys: parameters?.fieldIdsOrKeys,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * configurations for a custom field of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * The result can be filtered by one of these criteria:\n   *\n   * - `id`.\n   * - `fieldContextId`.\n   * - `issueId`.\n   * - `projectKeyOrId` and `issueTypeId`.\n   *\n   * Otherwise, all configurations are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that provided the custom field type.\n   */\n  async getCustomFieldConfiguration<T = Models.PageContextualConfiguration>(\n    parameters: Parameters.GetCustomFieldConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * configurations for a custom field of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * The result can be filtered by one of these criteria:\n   *\n   * - `id`.\n   * - `fieldContextId`.\n   * - `issueId`.\n   * - `projectKeyOrId` and `issueTypeId`.\n   *\n   * Otherwise, all configurations are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that provided the custom field type.\n   */\n  async getCustomFieldConfiguration<T = Models.PageContextualConfiguration>(\n    parameters: Parameters.GetCustomFieldConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomFieldConfiguration<T = Models.PageContextualConfiguration>(\n    parameters: Parameters.GetCustomFieldConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/app/field/${parameters.fieldIdOrKey}/context/configuration`,\n      method: 'GET',\n      params: {\n        id: parameters.id,\n        fieldContextId: parameters.fieldContextId,\n        issueId: parameters.issueId,\n        projectKeyOrId: parameters.projectKeyOrId,\n        issueTypeId: parameters.issueTypeId,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Update the configuration for contexts of a custom field of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that created the custom field type.\n   */\n  async updateCustomFieldConfiguration<T = unknown>(\n    parameters: Parameters.UpdateCustomFieldConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update the configuration for contexts of a custom field of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that created the custom field type.\n   */\n  async updateCustomFieldConfiguration<T = unknown>(\n    parameters: Parameters.UpdateCustomFieldConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async updateCustomFieldConfiguration<T = unknown>(\n    parameters: Parameters.UpdateCustomFieldConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/app/field/${parameters.fieldIdOrKey}/context/configuration`,\n      method: 'PUT',\n      data: {\n        configurations: parameters.configurations,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldContexts {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of [\n   * contexts](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html) for a\n   * custom field. Contexts can be returned as follows:\n   *\n   * - With no other parameters set, all contexts.\n   * - By defining `id` only, all contexts from the list of IDs.\n   * - By defining `isAnyIssueType`, limit the list of contexts returned to either those that apply to all issue types\n   *   (true) or those that apply to only a subset of issue types (false)\n   * - By defining `isGlobalContext`, limit the list of contexts return to either those that apply to all projects (global\n   *   contexts) (true) or those that apply to only a subset of projects (false).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). _Edit Workflow_ [edit workflow\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Edit-Workflows)\n   */\n  async getContextsForField<T = Models.PageCustomFieldContext>(\n    parameters: Parameters.GetContextsForField | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of [\n   * contexts](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html) for a\n   * custom field. Contexts can be returned as follows:\n   *\n   * - With no other parameters set, all contexts.\n   * - By defining `id` only, all contexts from the list of IDs.\n   * - By defining `isAnyIssueType`, limit the list of contexts returned to either those that apply to all issue types\n   *   (true) or those that apply to only a subset of issue types (false)\n   * - By defining `isGlobalContext`, limit the list of contexts return to either those that apply to all projects (global\n   *   contexts) (true) or those that apply to only a subset of projects (false).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). _Edit Workflow_ [edit workflow\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Edit-Workflows)\n   */\n  async getContextsForField<T = Models.PageCustomFieldContext>(\n    parameters: Parameters.GetContextsForField | string,\n    callback?: never,\n  ): Promise<T>;\n  async getContextsForField<T = Models.PageCustomFieldContext>(\n    parameters: Parameters.GetContextsForField | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${fieldId}/context`,\n      method: 'GET',\n      params: {\n        isAnyIssueType: typeof parameters !== 'string' && parameters.isAnyIssueType,\n        isGlobalContext: typeof parameters !== 'string' && parameters.isGlobalContext,\n        contextId: typeof parameters !== 'string' && parameters.contextId,\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a custom field context.\n   *\n   * If `projectIds` is empty, a global context is created. A global context is one that applies to all project. If\n   * `issueTypeIds` is empty, the context applies to all issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomFieldContext<T = Models.CreateCustomFieldContext>(\n    parameters: Parameters.CreateCustomFieldContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a custom field context.\n   *\n   * If `projectIds` is empty, a global context is created. A global context is one that applies to all project. If\n   * `issueTypeIds` is empty, the context applies to all issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomFieldContext<T = Models.CreateCustomFieldContext>(\n    parameters: Parameters.CreateCustomFieldContext,\n    callback?: never,\n  ): Promise<T>;\n  async createCustomFieldContext<T = Models.CreateCustomFieldContext>(\n    parameters: Parameters.CreateCustomFieldContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context`,\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        id: parameters.id,\n        issueTypeIds: parameters.issueTypeIds,\n        name: parameters.name,\n        projectIds: parameters.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * defaults for a custom field. The results can be filtered by `contextId`, otherwise all values are returned. If no\n   * defaults are set for a context, nothing is returned.\\\n   * The returned object depends on type of the custom field:\n   *\n   * - `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields.\n   * - `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields.\n   * - `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio\n   *   buttons.\n   * - `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and\n   *   checkboxes.\n   * - `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists.\n   * - `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users.\n   * - `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists.\n   * - `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers.\n   * - `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group\n   *   pickers.\n   * - `CustomFieldContextDefaultValueURL` (type `url`) for URLs.\n   * - `CustomFieldContextDefaultValueProject` (type `project`) for project pickers.\n   * - `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers).\n   * - `CustomFieldContextDefaultValueLabels` (type `labels`) for labels.\n   * - `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields.\n   * - `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields.\n   * - `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields.\n   * - `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers.\n   * - `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers.\n   *\n   * Forge custom fields\n   * [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types)\n   * are also supported, returning:\n   *\n   * - `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields.\n   * - `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields.\n   * - `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields.\n   * - `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields.\n   * - `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields.\n   * - `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields.\n   * - `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultValues<T = Models.PageCustomFieldContextDefaultValue>(\n    parameters: Parameters.GetDefaultValues | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * defaults for a custom field. The results can be filtered by `contextId`, otherwise all values are returned. If no\n   * defaults are set for a context, nothing is returned.\\\n   * The returned object depends on type of the custom field:\n   *\n   * - `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields.\n   * - `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields.\n   * - `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio\n   *   buttons.\n   * - `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and\n   *   checkboxes.\n   * - `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists.\n   * - `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users.\n   * - `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists.\n   * - `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers.\n   * - `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group\n   *   pickers.\n   * - `CustomFieldContextDefaultValueURL` (type `url`) for URLs.\n   * - `CustomFieldContextDefaultValueProject` (type `project`) for project pickers.\n   * - `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers).\n   * - `CustomFieldContextDefaultValueLabels` (type `labels`) for labels.\n   * - `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields.\n   * - `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields.\n   * - `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields.\n   * - `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers.\n   * - `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers.\n   *\n   * Forge custom fields\n   * [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types)\n   * are also supported, returning:\n   *\n   * - `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields.\n   * - `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields.\n   * - `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields.\n   * - `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields.\n   * - `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields.\n   * - `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields.\n   * - `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultValues<T = Models.PageCustomFieldContextDefaultValue>(\n    parameters: Parameters.GetDefaultValues | string,\n    callback?: never,\n  ): Promise<T>;\n  async getDefaultValues<T = Models.PageCustomFieldContextDefaultValue>(\n    parameters: Parameters.GetDefaultValues | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${fieldId}/context/defaultValue`,\n      method: 'GET',\n      params: {\n        contextId: typeof parameters !== 'string' && parameters.contextId,\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets default for contexts of a custom field. Default are defined using these objects:\n   *\n   * - `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields.\n   * - `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields.\n   * - `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio\n   *   buttons.\n   * - `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and\n   *   checkboxes.\n   * - `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists.\n   * - `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users.\n   * - `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists.\n   * - `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers.\n   * - `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group\n   *   pickers.\n   * - `CustomFieldContextDefaultValueURL` (type `url`) for URLs.\n   * - `CustomFieldContextDefaultValueProject` (type `project`) for project pickers.\n   * - `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers).\n   * - `CustomFieldContextDefaultValueLabels` (type `labels`) for labels.\n   * - `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields.\n   * - `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields.\n   * - `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields.\n   * - `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers.\n   * - `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers.\n   *\n   * Forge custom fields\n   * [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types)\n   * are also supported, returning:\n   *\n   * - `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields.\n   * - `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields.\n   * - `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields.\n   * - `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields.\n   * - `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields.\n   * - `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields.\n   * - `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields.\n   *\n   * Only one type of default object can be included in a request. To remove a default for a context, set the default\n   * parameter to `null`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultValues<T = void>(parameters: Parameters.SetDefaultValues, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets default for contexts of a custom field. Default are defined using these objects:\n   *\n   * - `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields.\n   * - `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields.\n   * - `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio\n   *   buttons.\n   * - `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and\n   *   checkboxes.\n   * - `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists.\n   * - `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users.\n   * - `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists.\n   * - `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers.\n   * - `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group\n   *   pickers.\n   * - `CustomFieldContextDefaultValueURL` (type `url`) for URLs.\n   * - `CustomFieldContextDefaultValueProject` (type `project`) for project pickers.\n   * - `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers).\n   * - `CustomFieldContextDefaultValueLabels` (type `labels`) for labels.\n   * - `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields.\n   * - `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields.\n   * - `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields.\n   * - `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers.\n   * - `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers.\n   *\n   * Forge custom fields\n   * [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types)\n   * are also supported, returning:\n   *\n   * - `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields.\n   * - `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields.\n   * - `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields.\n   * - `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields.\n   * - `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields.\n   * - `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields.\n   * - `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields.\n   *\n   * Only one type of default object can be included in a request. To remove a default for a context, set the default\n   * parameter to `null`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultValues<T = void>(parameters: Parameters.SetDefaultValues, callback?: never): Promise<T>;\n  async setDefaultValues<T = void>(parameters: Parameters.SetDefaultValues, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/defaultValue`,\n      method: 'PUT',\n      data: {\n        defaultValues: parameters.defaultValues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * context to issue type mappings for a custom field. Mappings are returned for all contexts or a list of contexts.\n   * Mappings are ordered first by context ID and then by issue type ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeMappingsForContexts<T = Models.PageIssueTypeToContextMapping>(\n    parameters: Parameters.GetIssueTypeMappingsForContexts | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * context to issue type mappings for a custom field. Mappings are returned for all contexts or a list of contexts.\n   * Mappings are ordered first by context ID and then by issue type ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeMappingsForContexts<T = Models.PageIssueTypeToContextMapping>(\n    parameters: Parameters.GetIssueTypeMappingsForContexts | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeMappingsForContexts<T = Models.PageIssueTypeToContextMapping>(\n    parameters: Parameters.GetIssueTypeMappingsForContexts | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${fieldId}/context/issuetypemapping`,\n      method: 'GET',\n      params: {\n        contextId: typeof parameters !== 'string' && parameters.contextId,\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * project and issue type mappings and, for each mapping, the ID of a [custom field\n   * context](https://confluence.atlassian.com/x/k44fOw) that applies to the project and issue type.\n   *\n   * If there is no custom field context assigned to the project then, if present, the custom field context that applies\n   * to all projects is returned if it also applies to the issue type or all issue types. If a custom field context is\n   * not found, the returned custom field context ID is `null`.\n   *\n   * Duplicate project and issue type mappings cannot be provided in the request.\n   *\n   * The order of the returned values is the same as provided in the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getCustomFieldContextsForProjectsAndIssueTypes<T = Models.PageContextForProjectAndIssueType>(\n    parameters: Parameters.GetCustomFieldContextsForProjectsAndIssueTypes,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * project and issue type mappings and, for each mapping, the ID of a [custom field\n   * context](https://confluence.atlassian.com/x/k44fOw) that applies to the project and issue type.\n   *\n   * If there is no custom field context assigned to the project then, if present, the custom field context that applies\n   * to all projects is returned if it also applies to the issue type or all issue types. If a custom field context is\n   * not found, the returned custom field context ID is `null`.\n   *\n   * Duplicate project and issue type mappings cannot be provided in the request.\n   *\n   * The order of the returned values is the same as provided in the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getCustomFieldContextsForProjectsAndIssueTypes<T = Models.PageContextForProjectAndIssueType>(\n    parameters: Parameters.GetCustomFieldContextsForProjectsAndIssueTypes,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomFieldContextsForProjectsAndIssueTypes<T = Models.PageContextForProjectAndIssueType>(\n    parameters: Parameters.GetCustomFieldContextsForProjectsAndIssueTypes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/mapping`,\n      method: 'POST',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n      data: {\n        mappings: parameters.mappings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * context to project mappings for a custom field. The result can be filtered by `contextId`. Otherwise, all mappings\n   * are returned. Invalid IDs are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectContextMapping<T = Models.PageCustomFieldContextProjectMapping>(\n    parameters: Parameters.GetProjectContextMapping | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * context to project mappings for a custom field. The result can be filtered by `contextId`. Otherwise, all mappings\n   * are returned. Invalid IDs are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectContextMapping<T = Models.PageCustomFieldContextProjectMapping>(\n    parameters: Parameters.GetProjectContextMapping | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectContextMapping<T = Models.PageCustomFieldContextProjectMapping>(\n    parameters: Parameters.GetProjectContextMapping | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${fieldId}/context/projectmapping`,\n      method: 'GET',\n      params: {\n        contextId: typeof parameters !== 'string' && parameters.contextId,\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a [ custom field\n   * context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomFieldContext<T = void>(\n    parameters: Parameters.UpdateCustomFieldContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a [ custom field\n   * context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomFieldContext<T = void>(\n    parameters: Parameters.UpdateCustomFieldContext,\n    callback?: never,\n  ): Promise<T>;\n  async updateCustomFieldContext<T = void>(\n    parameters: Parameters.UpdateCustomFieldContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a [custom field\n   * context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomFieldContext<T = void>(\n    parameters: Parameters.DeleteCustomFieldContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a [custom field\n   * context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomFieldContext<T = void>(\n    parameters: Parameters.DeleteCustomFieldContext,\n    callback?: never,\n  ): Promise<T>;\n  async deleteCustomFieldContext<T = void>(\n    parameters: Parameters.DeleteCustomFieldContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds issue types to a custom field context, appending the issue types to the issue types list.\n   *\n   * A custom field context without any issue types applies to all issue types. Adding issue types to such a custom\n   * field context would result in it applying to only the listed issue types.\n   *\n   * If any of the issue types exists in the custom field context, the operation fails and no issue types are added.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addIssueTypesToContext<T = void>(\n    parameters: Parameters.AddIssueTypesToContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds issue types to a custom field context, appending the issue types to the issue types list.\n   *\n   * A custom field context without any issue types applies to all issue types. Adding issue types to such a custom\n   * field context would result in it applying to only the listed issue types.\n   *\n   * If any of the issue types exists in the custom field context, the operation fails and no issue types are added.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addIssueTypesToContext<T = void>(parameters: Parameters.AddIssueTypesToContext, callback?: never): Promise<T>;\n  async addIssueTypesToContext<T = void>(\n    parameters: Parameters.AddIssueTypesToContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}/issuetype`,\n      method: 'PUT',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes issue types from a custom field context.\n   *\n   * A custom field context without any issue types applies to all issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypesFromContext<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes issue types from a custom field context.\n   *\n   * A custom field context without any issue types applies to all issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypesFromContext<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromContext,\n    callback?: never,\n  ): Promise<T>;\n  async removeIssueTypesFromContext<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}/issuetype/remove`,\n      method: 'POST',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns a custom field context to projects.\n   *\n   * If any project in the request is assigned to any context of the custom field, the operation fails.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignProjectsToCustomFieldContext<T = void>(\n    parameters: Parameters.AssignProjectsToCustomFieldContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns a custom field context to projects.\n   *\n   * If any project in the request is assigned to any context of the custom field, the operation fails.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignProjectsToCustomFieldContext<T = void>(\n    parameters: Parameters.AssignProjectsToCustomFieldContext,\n    callback?: never,\n  ): Promise<T>;\n  async assignProjectsToCustomFieldContext<T = void>(\n    parameters: Parameters.AssignProjectsToCustomFieldContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}/project`,\n      method: 'PUT',\n      data: {\n        projectIds: parameters.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a custom field context from projects.\n   *\n   * A custom field context without any projects applies to all projects. Removing all projects from a custom field\n   * context would result in it applying to all projects.\n   *\n   * If any project in the request is not assigned to the context, or the operation would result in two global contexts\n   * for the field, the operation fails.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeCustomFieldContextFromProjects<T = void>(\n    parameters: Parameters.RemoveCustomFieldContextFromProjects,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a custom field context from projects.\n   *\n   * A custom field context without any projects applies to all projects. Removing all projects from a custom field\n   * context would result in it applying to all projects.\n   *\n   * If any project in the request is not assigned to the context, or the operation would result in two global contexts\n   * for the field, the operation fails.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeCustomFieldContextFromProjects<T = void>(\n    parameters: Parameters.RemoveCustomFieldContextFromProjects,\n    callback?: never,\n  ): Promise<T>;\n  async removeCustomFieldContextFromProjects<T = void>(\n    parameters: Parameters.RemoveCustomFieldContextFromProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}/project/remove`,\n      method: 'POST',\n      data: {\n        projectIds: parameters.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldOptions {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a custom field option. For example, an option in a select list.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect apps.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * custom field option is returned as follows:\n   *\n   * - If the user has the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - If the user has the _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for at least\n   *   one project the custom field is used in, and the field is visible in at least one layout the user has permission\n   *   to view.\n   */\n  async getCustomFieldOption<T = Models.CustomFieldOption>(\n    parameters: Parameters.GetCustomFieldOption | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a custom field option. For example, an option in a select list.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect apps.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** The\n   * custom field option is returned as follows:\n   *\n   * - If the user has the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - If the user has the _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for at least\n   *   one project the custom field is used in, and the field is visible in at least one layout the user has permission\n   *   to view.\n   */\n  async getCustomFieldOption<T = Models.CustomFieldOption>(\n    parameters: Parameters.GetCustomFieldOption | string,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomFieldOption<T = Models.CustomFieldOption>(\n    parameters: Parameters.GetCustomFieldOption | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/customFieldOption/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * custom field option for a context. Options are returned first then cascading options, in the order they display in\n   * Jira.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). _Edit Workflow_ [edit workflow\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Edit-Workflows)\n   */\n  async getOptionsForContext<T = Models.PageCustomFieldContextOption>(\n    parameters: Parameters.GetOptionsForContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * custom field option for a context. Options are returned first then cascading options, in the order they display in\n   * Jira.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). _Edit Workflow_ [edit workflow\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Edit-Workflows)\n   */\n  async getOptionsForContext<T = Models.PageCustomFieldContextOption>(\n    parameters: Parameters.GetOptionsForContext,\n    callback?: never,\n  ): Promise<T>;\n  async getOptionsForContext<T = Models.PageCustomFieldContextOption>(\n    parameters: Parameters.GetOptionsForContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}/option`,\n      method: 'GET',\n      params: {\n        optionId: parameters.optionId,\n        onlyOptions: parameters.onlyOptions,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates options and, where the custom select field is of the type Select List (cascading), cascading options for a\n   * custom select field. The options are added to a context of the field.\n   *\n   * The maximum number of options that can be created per request is 1000 and each field can have a maximum of 10000\n   * options.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomFieldOption<T = Models.CustomFieldCreatedContextOptionsList>(\n    parameters: Parameters.CreateCustomFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates options and, where the custom select field is of the type Select List (cascading), cascading options for a\n   * custom select field. The options are added to a context of the field.\n   *\n   * The maximum number of options that can be created per request is 1000 and each field can have a maximum of 10000\n   * options.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomFieldOption<T = Models.CustomFieldCreatedContextOptionsList>(\n    parameters: Parameters.CreateCustomFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async createCustomFieldOption<T = Models.CustomFieldCreatedContextOptionsList>(\n    parameters: Parameters.CreateCustomFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}/option`,\n      method: 'POST',\n      data: {\n        options: parameters.options,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the options of a custom field.\n   *\n   * If any of the options are not found, no options are updated. Options where the values in the request match the\n   * current values aren't updated and aren't reported in the response.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomFieldOption<T = Models.CustomFieldUpdatedContextOptionsList>(\n    parameters: Parameters.UpdateCustomFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the options of a custom field.\n   *\n   * If any of the options are not found, no options are updated. Options where the values in the request match the\n   * current values aren't updated and aren't reported in the response.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomFieldOption<T = Models.CustomFieldUpdatedContextOptionsList>(\n    parameters: Parameters.UpdateCustomFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async updateCustomFieldOption<T = Models.CustomFieldUpdatedContextOptionsList>(\n    parameters: Parameters.UpdateCustomFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}/option`,\n      method: 'PUT',\n      data: {\n        options: parameters.options,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the order of custom field options or cascading options in a context.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async reorderCustomFieldOptions<T = void>(\n    parameters: Parameters.ReorderCustomFieldOptions,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Changes the order of custom field options or cascading options in a context.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async reorderCustomFieldOptions<T = void>(\n    parameters: Parameters.ReorderCustomFieldOptions,\n    callback?: never,\n  ): Promise<T>;\n  async reorderCustomFieldOptions<T = void>(\n    parameters: Parameters.ReorderCustomFieldOptions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}/option/move`,\n      method: 'PUT',\n      data: {\n        after: parameters.after,\n        customFieldOptionIds: parameters.customFieldOptionIds,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a custom field option.\n   *\n   * Options with cascading options cannot be deleted without deleting the cascading options first.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomFieldOption<T = void>(\n    parameters: Parameters.DeleteCustomFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a custom field option.\n   *\n   * Options with cascading options cannot be deleted without deleting the cascading options first.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomFieldOption<T = void>(parameters: Parameters.DeleteCustomFieldOption, callback?: never): Promise<T>;\n  async deleteCustomFieldOption<T = void>(\n    parameters: Parameters.DeleteCustomFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}/option/${parameters.optionId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Replaces the options of a custom field.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect or Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async replaceCustomFieldOption<T = unknown>(\n    parameters: Parameters.ReplaceCustomFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Replaces the options of a custom field.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect or Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async replaceCustomFieldOption<T = unknown>(\n    parameters: Parameters.ReplaceCustomFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async replaceCustomFieldOption<T = unknown>(\n    parameters: Parameters.ReplaceCustomFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}/context/${parameters.contextId}/option/${parameters.optionId}/issue`,\n      method: 'DELETE',\n      params: {\n        replaceWith: parameters.replaceWith,\n        jql: parameters.jql,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldOptionsApps {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * the options of a select list issue field. A select list issue field is a type of [issue\n   * field](https://developer.atlassian.com/cloud/jira/platform/modules/issue-field/) that enables a user to select a\n   * value from a list of options.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async getAllIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetAllIssueFieldOptions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * the options of a select list issue field. A select list issue field is a type of [issue\n   * field](https://developer.atlassian.com/cloud/jira/platform/modules/issue-field/) that enables a user to select a\n   * value from a list of options.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async getAllIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetAllIssueFieldOptions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetAllIssueFieldOptions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldKey = typeof parameters === 'string' ? parameters : parameters.fieldKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${fieldKey}/option`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an option for a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * Each field can have a maximum of 10000 options, and each option can have a maximum of 10000 scopes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async createIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.CreateIssueFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an option for a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * Each field can have a maximum of 10000 options, and each option can have a maximum of 10000 scopes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async createIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.CreateIssueFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.CreateIssueFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldKey}/option`,\n      method: 'POST',\n      data: {\n        config: parameters.config,\n        properties: parameters.properties,\n        value: parameters.value,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * options for a select list issue field that can be viewed and selected by the user.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getSelectableIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetSelectableIssueFieldOptions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * options for a select list issue field that can be viewed and selected by the user.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getSelectableIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetSelectableIssueFieldOptions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getSelectableIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetSelectableIssueFieldOptions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldKey = typeof parameters === 'string' ? parameters : parameters.fieldKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${fieldKey}/option/suggestions/edit`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        projectId: typeof parameters !== 'string' && parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * options for a select list issue field that can be viewed by the user.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getVisibleIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetVisibleIssueFieldOptions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * options for a select list issue field that can be viewed by the user.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getVisibleIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetVisibleIssueFieldOptions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getVisibleIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetVisibleIssueFieldOptions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldKey = typeof parameters === 'string' ? parameters : parameters.fieldKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${fieldKey}/option/suggestions/search`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        projectId: typeof parameters !== 'string' && parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an option from a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async getIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.GetIssueFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an option from a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async getIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.GetIssueFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.GetIssueFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldKey}/option/${parameters.optionId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates or creates an option for a select list issue field. This operation requires that the option ID is provided\n   * when creating an option, therefore, the option ID needs to be specified as a path and body parameter. The option ID\n   * provided in the path and body must be identical.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async updateIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.UpdateIssueFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates or creates an option for a select list issue field. This operation requires that the option ID is provided\n   * when creating an option, therefore, the option ID needs to be specified as a path and body parameter. The option ID\n   * provided in the path and body must be identical.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async updateIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.UpdateIssueFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async updateIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.UpdateIssueFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldKey}/option/${parameters.optionId}`,\n      method: 'PUT',\n      data: {\n        config: parameters.config,\n        id: parameters.id,\n        properties: parameters.properties,\n        value: parameters.value,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an option from a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async deleteIssueFieldOption<T = void>(\n    parameters: Parameters.DeleteIssueFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an option from a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async deleteIssueFieldOption<T = void>(parameters: Parameters.DeleteIssueFieldOption, callback?: never): Promise<T>;\n  async deleteIssueFieldOption<T = void>(\n    parameters: Parameters.DeleteIssueFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldKey}/option/${parameters.optionId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deselects an issue-field select-list option from all issues where it is selected. A different option can be\n   * selected to replace the deselected option. The update can also be limited to a smaller set of issues by using a JQL\n   * query.\n   *\n   * Connect and Forge app users with _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   * can override the screen security configuration using `overrideScreenSecurity` and `overrideEditableFlag`.\n   *\n   * This is an [asynchronous\n   * operation](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). The response\n   * object contains a link to the long-running task.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async replaceIssueFieldOption<T = Models.TaskProgressRemoveOptionFromIssuesResult>(\n    parameters: Parameters.ReplaceIssueFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deselects an issue-field select-list option from all issues where it is selected. A different option can be\n   * selected to replace the deselected option. The update can also be limited to a smaller set of issues by using a JQL\n   * query.\n   *\n   * Connect and Forge app users with _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   * can override the screen security configuration using `overrideScreenSecurity` and `overrideEditableFlag`.\n   *\n   * This is an [asynchronous\n   * operation](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). The response\n   * object contains a link to the long-running task.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async replaceIssueFieldOption<T = Models.TaskProgressRemoveOptionFromIssuesResult>(\n    parameters: Parameters.ReplaceIssueFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async replaceIssueFieldOption<T = Models.TaskProgressRemoveOptionFromIssuesResult>(\n    parameters: Parameters.ReplaceIssueFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldKey}/option/${parameters.optionId}/issue`,\n      method: 'DELETE',\n      params: {\n        replaceWith: parameters.replaceWith,\n        jql: parameters.jql,\n        overrideScreenSecurity: parameters.overrideScreenSecurity,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldValuesApps {\n  constructor(private client: Client) {}\n\n  /**\n   * Updates the value of one or more custom fields on one or more issues. Combinations of custom field and issue should\n   * be unique within the request.\n   *\n   * Apps can only perform this operation on [custom\n   * fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom\n   * field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/)\n   * declared in their own manifests.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * the app that owns the custom field or custom field type can update its values with this operation.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateMultipleCustomFieldValues<T = void>(\n    parameters: Parameters.UpdateMultipleCustomFieldValues,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the value of one or more custom fields on one or more issues. Combinations of custom field and issue should\n   * be unique within the request.\n   *\n   * Apps can only perform this operation on [custom\n   * fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom\n   * field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/)\n   * declared in their own manifests.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * the app that owns the custom field or custom field type can update its values with this operation.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateMultipleCustomFieldValues<T = void>(\n    parameters: Parameters.UpdateMultipleCustomFieldValues,\n    callback?: never,\n  ): Promise<T>;\n  async updateMultipleCustomFieldValues<T = void>(\n    parameters: Parameters.UpdateMultipleCustomFieldValues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/app/field/value',\n      method: 'POST',\n      params: {\n        generateChangelog: parameters.generateChangelog,\n      },\n      data: {\n        updates: parameters.updates,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the value of a custom field on one or more issues.\n   *\n   * Apps can only perform this operation on [custom\n   * fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom\n   * field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/)\n   * declared in their own manifests.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * the app that owns the custom field or custom field type can update its values with this operation.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateCustomFieldValue<T = void>(\n    parameters: Parameters.UpdateCustomFieldValue,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the value of a custom field on one or more issues.\n   *\n   * Apps can only perform this operation on [custom\n   * fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom\n   * field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/)\n   * declared in their own manifests.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * the app that owns the custom field or custom field type can update its values with this operation.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateCustomFieldValue<T = void>(parameters: Parameters.UpdateCustomFieldValue, callback?: never): Promise<T>;\n  async updateCustomFieldValue<T = void>(\n    parameters: Parameters.UpdateCustomFieldValue,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/app/field/${parameters.fieldIdOrKey}/value`,\n      method: 'PUT',\n      params: {\n        generateChangelog: parameters.generateChangelog,\n      },\n      data: {\n        updates: parameters.updates,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueFieldConfigurations {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of field\n   * configurations. The list can be for all field configurations or a subset determined by any combination of these\n   * criteria:\n   *\n   * - A list of field configuration item IDs.\n   * - Whether the field configuration is a default.\n   * - Whether the field configuration name or description contains a query string.\n   *\n   * Only field configurations used in company-managed (classic) projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllFieldConfigurations<T = Models.PageFieldConfiguration>(\n    parameters: Parameters.GetAllFieldConfigurations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of field\n   * configurations. The list can be for all field configurations or a subset determined by any combination of these\n   * criteria:\n   *\n   * - A list of field configuration item IDs.\n   * - Whether the field configuration is a default.\n   * - Whether the field configuration name or description contains a query string.\n   *\n   * Only field configurations used in company-managed (classic) projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllFieldConfigurations<T = Models.PageFieldConfiguration>(\n    parameters?: Parameters.GetAllFieldConfigurations,\n    callback?: never,\n  ): Promise<T>;\n  async getAllFieldConfigurations<T = Models.PageFieldConfiguration>(\n    parameters?: Parameters.GetAllFieldConfigurations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/fieldconfiguration',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        isDefault: parameters?.isDefault,\n        query: parameters?.query,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a field configuration. The field configuration is created with the same field properties as the default\n   * configuration, with all the fields being optional.\n   *\n   * This operation can only create configurations for use in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createFieldConfiguration<T = Models.FieldConfiguration>(\n    parameters: Parameters.CreateFieldConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a field configuration. The field configuration is created with the same field properties as the default\n   * configuration, with all the fields being optional.\n   *\n   * This operation can only create configurations for use in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createFieldConfiguration<T = Models.FieldConfiguration>(\n    parameters: Parameters.CreateFieldConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async createFieldConfiguration<T = Models.FieldConfiguration>(\n    parameters: Parameters.CreateFieldConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/fieldconfiguration',\n      method: 'POST',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a field configuration. The name and the description provided in the request override the existing values.\n   *\n   * This operation can only update configurations used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfiguration<T = void>(\n    parameters: Parameters.UpdateFieldConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a field configuration. The name and the description provided in the request override the existing values.\n   *\n   * This operation can only update configurations used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfiguration<T = void>(\n    parameters: Parameters.UpdateFieldConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async updateFieldConfiguration<T = void>(\n    parameters: Parameters.UpdateFieldConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/fieldconfiguration/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a field configuration.\n   *\n   * This operation can only delete configurations used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFieldConfiguration<T = void>(\n    parameters: Parameters.DeleteFieldConfiguration | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a field configuration.\n   *\n   * This operation can only delete configurations used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFieldConfiguration<T = void>(\n    parameters: Parameters.DeleteFieldConfiguration | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteFieldConfiguration<T = void>(\n    parameters: Parameters.DeleteFieldConfiguration | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/fieldconfiguration/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * fields for a configuration.\n   *\n   * Only the fields from configurations used in company-managed (classic) projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationItems<T = Models.PageFieldConfigurationItem>(\n    parameters: Parameters.GetFieldConfigurationItems | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * fields for a configuration.\n   *\n   * Only the fields from configurations used in company-managed (classic) projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationItems<T = Models.PageFieldConfigurationItem>(\n    parameters: Parameters.GetFieldConfigurationItems | string,\n    callback?: never,\n  ): Promise<T>;\n  async getFieldConfigurationItems<T = Models.PageFieldConfigurationItem>(\n    parameters: Parameters.GetFieldConfigurationItems | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/fieldconfiguration/${id}/fields`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates fields in a field configuration. The properties of the field configuration fields provided override the\n   * existing values.\n   *\n   * This operation can only update field configurations used in company-managed (classic) projects.\n   *\n   * The operation can set the renderer for text fields to the default text renderer (`text-renderer`) or wiki style\n   * renderer (`wiki-renderer`). However, the renderer cannot be updated for fields using the autocomplete renderer\n   * (`autocomplete-renderer`).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfigurationItems<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationItems,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates fields in a field configuration. The properties of the field configuration fields provided override the\n   * existing values.\n   *\n   * This operation can only update field configurations used in company-managed (classic) projects.\n   *\n   * The operation can set the renderer for text fields to the default text renderer (`text-renderer`) or wiki style\n   * renderer (`wiki-renderer`). However, the renderer cannot be updated for fields using the autocomplete renderer\n   * (`autocomplete-renderer`).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfigurationItems<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationItems,\n    callback?: never,\n  ): Promise<T>;\n  async updateFieldConfigurationItems<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationItems,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/fieldconfiguration/${parameters.id}/fields`,\n      method: 'PUT',\n      data: {\n        fieldConfigurationItems: parameters.fieldConfigurationItems,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of field\n   * configuration schemes.\n   *\n   * Only field configuration schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllFieldConfigurationSchemes<T = Models.PageFieldConfigurationScheme>(\n    parameters: Parameters.GetAllFieldConfigurationSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of field\n   * configuration schemes.\n   *\n   * Only field configuration schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllFieldConfigurationSchemes<T = Models.PageFieldConfigurationScheme>(\n    parameters?: Parameters.GetAllFieldConfigurationSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getAllFieldConfigurationSchemes<T = Models.PageFieldConfigurationScheme>(\n    parameters?: Parameters.GetAllFieldConfigurationSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/fieldconfigurationscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a field configuration scheme.\n   *\n   * This operation can only create field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createFieldConfigurationScheme<T = Models.FieldConfigurationScheme>(\n    parameters: Parameters.CreateFieldConfigurationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a field configuration scheme.\n   *\n   * This operation can only create field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createFieldConfigurationScheme<T = Models.FieldConfigurationScheme>(\n    parameters: Parameters.CreateFieldConfigurationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createFieldConfigurationScheme<T = Models.FieldConfigurationScheme>(\n    parameters: Parameters.CreateFieldConfigurationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/fieldconfigurationscheme',\n      method: 'POST',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of field\n   * configuration issue type items.\n   *\n   * Only items used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationSchemeMappings<T = Models.PageFieldConfigurationIssueTypeItem>(\n    parameters: Parameters.GetFieldConfigurationSchemeMappings | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of field\n   * configuration issue type items.\n   *\n   * Only items used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationSchemeMappings<T = Models.PageFieldConfigurationIssueTypeItem>(\n    parameters?: Parameters.GetFieldConfigurationSchemeMappings,\n    callback?: never,\n  ): Promise<T>;\n  async getFieldConfigurationSchemeMappings<T = Models.PageFieldConfigurationIssueTypeItem>(\n    parameters?: Parameters.GetFieldConfigurationSchemeMappings,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/fieldconfigurationscheme/mapping',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        fieldConfigurationSchemeId: parameters?.fieldConfigurationSchemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of field\n   * configuration schemes and, for each scheme, a list of the projects that use it.\n   *\n   * The list is sorted by field configuration scheme ID. The first item contains the list of project IDs assigned to\n   * the default field configuration scheme.\n   *\n   * Only field configuration schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationSchemeProjectMapping<T = Models.PageFieldConfigurationSchemeProjects>(\n    parameters: Parameters.GetFieldConfigurationSchemeProjectMapping,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of field\n   * configuration schemes and, for each scheme, a list of the projects that use it.\n   *\n   * The list is sorted by field configuration scheme ID. The first item contains the list of project IDs assigned to\n   * the default field configuration scheme.\n   *\n   * Only field configuration schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationSchemeProjectMapping<T = Models.PageFieldConfigurationSchemeProjects>(\n    parameters: Parameters.GetFieldConfigurationSchemeProjectMapping,\n    callback?: never,\n  ): Promise<T>;\n  async getFieldConfigurationSchemeProjectMapping<T = Models.PageFieldConfigurationSchemeProjects>(\n    parameters: Parameters.GetFieldConfigurationSchemeProjectMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/fieldconfigurationscheme/project',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns a field configuration scheme to a project. If the field configuration scheme ID is `null`, the operation\n   * assigns the default field configuration scheme.\n   *\n   * Field configuration schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignFieldConfigurationSchemeToProject<T = void>(\n    parameters: Parameters.AssignFieldConfigurationSchemeToProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns a field configuration scheme to a project. If the field configuration scheme ID is `null`, the operation\n   * assigns the default field configuration scheme.\n   *\n   * Field configuration schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignFieldConfigurationSchemeToProject<T = void>(\n    parameters: Parameters.AssignFieldConfigurationSchemeToProject,\n    callback?: never,\n  ): Promise<T>;\n  async assignFieldConfigurationSchemeToProject<T = void>(\n    parameters: Parameters.AssignFieldConfigurationSchemeToProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/fieldconfigurationscheme/project',\n      method: 'PUT',\n      data: {\n        fieldConfigurationSchemeId: parameters.fieldConfigurationSchemeId,\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a field configuration scheme.\n   *\n   * This operation can only update field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfigurationScheme<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a field configuration scheme.\n   *\n   * This operation can only update field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfigurationScheme<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateFieldConfigurationScheme<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/fieldconfigurationscheme/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a field configuration scheme.\n   *\n   * This operation can only delete field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFieldConfigurationScheme<T = void>(\n    parameters: Parameters.DeleteFieldConfigurationScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a field configuration scheme.\n   *\n   * This operation can only delete field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFieldConfigurationScheme<T = void>(\n    parameters: Parameters.DeleteFieldConfigurationScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteFieldConfigurationScheme<T = void>(\n    parameters: Parameters.DeleteFieldConfigurationScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/fieldconfigurationscheme/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns issue types to field configurations on field configuration scheme.\n   *\n   * This operation can only modify field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setFieldConfigurationSchemeMapping<T = void>(\n    parameters: Parameters.SetFieldConfigurationSchemeMapping,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns issue types to field configurations on field configuration scheme.\n   *\n   * This operation can only modify field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setFieldConfigurationSchemeMapping<T = void>(\n    parameters: Parameters.SetFieldConfigurationSchemeMapping,\n    callback?: never,\n  ): Promise<T>;\n  async setFieldConfigurationSchemeMapping<T = void>(\n    parameters: Parameters.SetFieldConfigurationSchemeMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/fieldconfigurationscheme/${parameters.id}/mapping`,\n      method: 'PUT',\n      data: {\n        mappings: parameters.mappings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes issue types from the field configuration scheme.\n   *\n   * This operation can only modify field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypesFromGlobalFieldConfigurationScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromGlobalFieldConfigurationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes issue types from the field configuration scheme.\n   *\n   * This operation can only modify field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypesFromGlobalFieldConfigurationScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromGlobalFieldConfigurationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async removeIssueTypesFromGlobalFieldConfigurationScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromGlobalFieldConfigurationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/fieldconfigurationscheme/${parameters.id}/mapping/delete`,\n      method: 'POST',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueFields {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns system and custom issue fields according to the following rules:\n   *\n   * - Fields that cannot be added to the issue navigator are always returned.\n   * - Fields that cannot be placed on an issue screen are always returned.\n   * - Fields that depend on global Jira settings are only returned if the setting is enabled. That is, timetracking\n   *   fields, subtasks, votes, and watches.\n   * - For all other fields, this operation only returns the fields that the user has permission to view (that is, the\n   *   field is used in at least one project that the user has _Browse Projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.)\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getFields<T = Models.FieldDetails[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns system and custom issue fields according to the following rules:\n   *\n   * - Fields that cannot be added to the issue navigator are always returned.\n   * - Fields that cannot be placed on an issue screen are always returned.\n   * - Fields that depend on global Jira settings are only returned if the setting is enabled. That is, timetracking\n   *   fields, subtasks, votes, and watches.\n   * - For all other fields, this operation only returns the fields that the user has permission to view (that is, the\n   *   field is used in at least one project that the user has _Browse Projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.)\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getFields<T = Models.FieldDetails[]>(callback?: never): Promise<T>;\n  async getFields<T = Models.FieldDetails[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/field',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a custom field.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomField<T = Models.FieldDetails>(\n    parameters: Parameters.CreateCustomField | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a custom field.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomField<T = Models.FieldDetails>(\n    parameters?: Parameters.CreateCustomField,\n    callback?: never,\n  ): Promise<T>;\n  async createCustomField<T = Models.FieldDetails>(\n    parameters?: Parameters.CreateCustomField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/field',\n      method: 'POST',\n      data: {\n        description: parameters?.description,\n        name: parameters?.name,\n        searcherKey: parameters?.searcherKey,\n        type: parameters?.type,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of fields\n   * for Classic Jira projects. The list can include:\n   *\n   * - All fields\n   * - Specific fields, by defining `id`\n   * - Fields that contain a string in the field name or description, by defining `query`\n   * - Specific fields that contain a string in the field name or description, by defining `id` and `query`\n   *\n   * Use `type` must be set to `custom` to show custom fields only.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldsPaginated<T = Models.PageField>(\n    parameters: Parameters.GetFieldsPaginated | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of fields\n   * for Classic Jira projects. The list can include:\n   *\n   * - All fields\n   * - Specific fields, by defining `id`\n   * - Fields that contain a string in the field name or description, by defining `query`\n   * - Specific fields that contain a string in the field name or description, by defining `id` and `query`\n   *\n   * Use `type` must be set to `custom` to show custom fields only.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldsPaginated<T = Models.PageField>(\n    parameters?: Parameters.GetFieldsPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getFieldsPaginated<T = Models.PageField>(\n    parameters?: Parameters.GetFieldsPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/field/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        type: parameters?.type,\n        id: parameters?.id,\n        query: parameters?.query,\n        orderBy: parameters?.orderBy,\n        expand: parameters?.expand,\n        projectIds: parameters?.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of fields\n   * in the trash. The list may be restricted to fields whose field name or description partially match a string.\n   *\n   * Only custom fields can be queried, `type` must be set to `custom`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getTrashedFieldsPaginated<T = Models.PageField>(\n    parameters: Parameters.GetTrashedFieldsPaginated | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of fields\n   * in the trash. The list may be restricted to fields whose field name or description partially match a string.\n   *\n   * Only custom fields can be queried, `type` must be set to `custom`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getTrashedFieldsPaginated<T = Models.PageField>(\n    parameters?: Parameters.GetTrashedFieldsPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getTrashedFieldsPaginated<T = Models.PageField>(\n    parameters?: Parameters.GetTrashedFieldsPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/field/search/trashed',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        query: parameters?.query,\n        expand: parameters?.expand,\n        orderBy: parameters?.orderBy,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a custom field.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomField<T = void>(parameters: Parameters.UpdateCustomField, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a custom field.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomField<T = void>(parameters: Parameters.UpdateCustomField, callback?: never): Promise<T>;\n  async updateCustomField<T = void>(\n    parameters: Parameters.UpdateCustomField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.fieldId}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n        searcherKey: parameters.searcherKey,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a custom field. The custom field is deleted whether it is in the trash or not. See [Edit or delete a custom\n   * field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomField<T = unknown>(parameters: Parameters.DeleteCustomField, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a custom field. The custom field is deleted whether it is in the trash or not. See [Edit or delete a custom\n   * field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomField<T = unknown>(parameters: Parameters.DeleteCustomField, callback?: never): Promise<T>;\n  async deleteCustomField<T = unknown>(\n    parameters: Parameters.DeleteCustomField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Restores a custom field from trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw)\n   * for more information on trashing and deleting custom fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async restoreCustomField<T = unknown>(\n    parameters: Parameters.RestoreCustomField,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Restores a custom field from trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw)\n   * for more information on trashing and deleting custom fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async restoreCustomField<T = unknown>(parameters: Parameters.RestoreCustomField, callback?: never): Promise<T>;\n  async restoreCustomField<T = unknown>(\n    parameters: Parameters.RestoreCustomField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.id}/restore`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves a custom field to trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for\n   * more information on trashing and deleting custom fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async trashCustomField<T = unknown>(parameters: Parameters.TrashCustomField, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves a custom field to trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for\n   * more information on trashing and deleting custom fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async trashCustomField<T = unknown>(parameters: Parameters.TrashCustomField, callback?: never): Promise<T>;\n  async trashCustomField<T = unknown>(\n    parameters: Parameters.TrashCustomField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${parameters.id}/trash`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueLinkTypes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of all issue link types.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site.\n   */\n  async getIssueLinkTypes<T = Models.IssueLinkTypes>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a list of all issue link types.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site.\n   */\n  async getIssueLinkTypes<T = Models.IssueLinkTypes>(callback?: never): Promise<T>;\n  async getIssueLinkTypes<T = Models.IssueLinkTypes>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issueLinkType',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue link type. Use this operation to create descriptions of the reasons why issues are linked. The\n   * issue link type consists of a name and descriptions for a link's inward and outward relationships.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.CreateIssueLinkType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue link type. Use this operation to create descriptions of the reasons why issues are linked. The\n   * issue link type consists of a name and descriptions for a link's inward and outward relationships.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.CreateIssueLinkType,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.CreateIssueLinkType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issueLinkType',\n      method: 'POST',\n      data: {\n        id: parameters.id,\n        inward: parameters.inward,\n        name: parameters.name,\n        outward: parameters.outward,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site.\n   */\n  async getIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.GetIssueLinkType | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site.\n   */\n  async getIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.GetIssueLinkType | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.GetIssueLinkType | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueLinkTypeId = typeof parameters === 'string' ? parameters : parameters.issueLinkTypeId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issueLinkType/${issueLinkTypeId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.UpdateIssueLinkType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.UpdateIssueLinkType,\n    callback?: never,\n  ): Promise<T>;\n  async updateIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.UpdateIssueLinkType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issueLinkType/${parameters.issueLinkTypeId}`,\n      method: 'PUT',\n      data: {\n        id: parameters.id,\n        inward: parameters.inward,\n        name: parameters.name,\n        outward: parameters.outward,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueLinkType<T = void>(\n    parameters: Parameters.DeleteIssueLinkType | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueLinkType<T = void>(\n    parameters: Parameters.DeleteIssueLinkType | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteIssueLinkType<T = void>(\n    parameters: Parameters.DeleteIssueLinkType | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueLinkTypeId = typeof parameters === 'string' ? parameters : parameters.issueLinkTypeId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issueLinkType/${issueLinkTypeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueLinks {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a link between two issues. Use this operation to indicate a relationship between two issues and optionally\n   * add a comment to the from (outward) issue. To use this resource the site must have [Issue\n   * Linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This resource returns nothing on the creation of an issue link. To obtain the ID of the issue link, use\n   * `https://your-domain.atlassian.net/rest/api/2/issue/[linked issue key]?fields=issuelinks`.\n   *\n   * If the link request duplicates a link, the response indicates that the issue link was created. If the request\n   * included a comment, the comment is added.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse project_ [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing\n   *   the issues to be linked,\n   * - _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) on the project containing the from\n   *   (outward) issue,\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async linkIssues<T = void>(parameters: Parameters.LinkIssues, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a link between two issues. Use this operation to indicate a relationship between two issues and optionally\n   * add a comment to the from (outward) issue. To use this resource the site must have [Issue\n   * Linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This resource returns nothing on the creation of an issue link. To obtain the ID of the issue link, use\n   * `https://your-domain.atlassian.net/rest/api/2/issue/[linked issue key]?fields=issuelinks`.\n   *\n   * If the link request duplicates a link, the response indicates that the issue link was created. If the request\n   * included a comment, the comment is added.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse project_ [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing\n   *   the issues to be linked,\n   * - _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) on the project containing the from\n   *   (outward) issue,\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async linkIssues<T = void>(parameters: Parameters.LinkIssues, callback?: never): Promise<T>;\n  async linkIssues<T = void>(parameters: Parameters.LinkIssues, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issueLink',\n      method: 'POST',\n      data: {\n        type: parameters.type,\n        inwardIssue: parameters.inwardIssue,\n        outwardIssue: parameters.outwardIssue,\n        comment: parameters.comment,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue link.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse project_ [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing\n   *   the linked issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the\n   *   issues.\n   */\n  async getIssueLink<T = Models.IssueLink>(\n    parameters: Parameters.GetIssueLink | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an issue link.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse project_ [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing\n   *   the linked issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the\n   *   issues.\n   */\n  async getIssueLink<T = Models.IssueLink>(parameters: Parameters.GetIssueLink | string, callback?: never): Promise<T>;\n  async getIssueLink<T = Models.IssueLink>(\n    parameters: Parameters.GetIssueLink | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const linkId = typeof parameters === 'string' ? parameters : parameters.linkId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issueLink/${linkId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue link.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - Browse project [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the\n   *   issues in the link.\n   * - _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one of the projects\n   *   containing issues in the link.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the\n   *   issues.\n   */\n  async deleteIssueLink<T = void>(\n    parameters: Parameters.DeleteIssueLink | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an issue link.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - Browse project [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the\n   *   issues in the link.\n   * - _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one of the projects\n   *   containing issues in the link.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the\n   *   issues.\n   */\n  async deleteIssueLink<T = void>(parameters: Parameters.DeleteIssueLink | string, callback?: never): Promise<T>;\n  async deleteIssueLink<T = void>(\n    parameters: Parameters.DeleteIssueLink | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const linkId = typeof parameters === 'string' ? parameters : parameters.linkId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issueLink/${linkId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueNavigatorSettings {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the default issue navigator columns.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueNavigatorDefaultColumns<T = Models.ColumnItem[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the default issue navigator columns.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueNavigatorDefaultColumns<T = Models.ColumnItem[]>(callback?: never): Promise<T>;\n  async getIssueNavigatorDefaultColumns<T = Models.ColumnItem[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/settings/columns',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the default issue navigator columns.\n   *\n   * The `columns` parameter accepts a navigable field value and is expressed as HTML form data. To specify multiple\n   * columns, pass multiple `columns` parameters. For example, in curl:\n   *\n   * `curl -X PUT -d columns=summary -d columns=description\n   * https://your-domain.atlassian.net/rest/api/2/settings/columns`\n   *\n   * If no column details are sent, then all default columns are removed.\n   *\n   * A navigable field is one that can be used as a column on the issue navigator. Find details of navigable issue\n   * columns using [Get fields](#api-rest-api-2-field-get).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setIssueNavigatorDefaultColumns<T = unknown>(callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the default issue navigator columns.\n   *\n   * The `columns` parameter accepts a navigable field value and is expressed as HTML form data. To specify multiple\n   * columns, pass multiple `columns` parameters. For example, in curl:\n   *\n   * `curl -X PUT -d columns=summary -d columns=description\n   * https://your-domain.atlassian.net/rest/api/2/settings/columns`\n   *\n   * If no column details are sent, then all default columns are removed.\n   *\n   * A navigable field is one that can be used as a column on the issue navigator. Find details of navigable issue\n   * columns using [Get fields](#api-rest-api-2-field-get).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setIssueNavigatorDefaultColumns<T = unknown>(callback?: never): Promise<T>;\n  async setIssueNavigatorDefaultColumns<T = unknown>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/settings/columns',\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueNotificationSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * [notification schemes](https://confluence.atlassian.com/x/8YdKLg) ordered by the display name.\n   *\n   * _Note that you should allow for events without recipients to appear in responses._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, the user must have permission to administer at least one project associated\n   * with a notification scheme for it to be returned.\n   */\n  async getNotificationSchemes<T = Models.PageNotificationScheme>(\n    parameters: Parameters.GetNotificationSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * [notification schemes](https://confluence.atlassian.com/x/8YdKLg) ordered by the display name.\n   *\n   * _Note that you should allow for events without recipients to appear in responses._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, the user must have permission to administer at least one project associated\n   * with a notification scheme for it to be returned.\n   */\n  async getNotificationSchemes<T = Models.PageNotificationScheme>(\n    parameters?: Parameters.GetNotificationSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getNotificationSchemes<T = Models.PageNotificationScheme>(\n    parameters?: Parameters.GetNotificationSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/notificationscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        projectId: parameters?.projectId,\n        onlyDefault: parameters?.onlyDefault,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a notification scheme with notifications. You can create up to 1000 notifications per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createNotificationScheme<T = Models.NotificationSchemeId>(\n    parameters: Parameters.CreateNotificationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a notification scheme with notifications. You can create up to 1000 notifications per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createNotificationScheme<T = Models.NotificationSchemeId>(\n    parameters: Parameters.CreateNotificationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createNotificationScheme<T = Models.NotificationSchemeId>(\n    parameters: Parameters.CreateNotificationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/notificationscheme',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n        notificationSchemeEvents: parameters.notificationSchemeEvents,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) mapping of\n   * project that have notification scheme assigned. You can provide either one or multiple notification scheme IDs or\n   * project IDs to filter by. If you don't provide any, this will return a list of all mappings. Note that only\n   * company-managed (classic) projects are supported. This is because team-managed projects don't have a concept of a\n   * default notification scheme. The mappings are ordered by projectId.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getNotificationSchemeToProjectMappings<T = Models.NotificationSchemeAndProjectMappingPage>(\n    parameters: Parameters.GetNotificationSchemeToProjectMappings | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) mapping of\n   * project that have notification scheme assigned. You can provide either one or multiple notification scheme IDs or\n   * project IDs to filter by. If you don't provide any, this will return a list of all mappings. Note that only\n   * company-managed (classic) projects are supported. This is because team-managed projects don't have a concept of a\n   * default notification scheme. The mappings are ordered by projectId.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getNotificationSchemeToProjectMappings<T = Models.NotificationSchemeAndProjectMappingPage>(\n    parameters?: Parameters.GetNotificationSchemeToProjectMappings,\n    callback?: never,\n  ): Promise<T>;\n  async getNotificationSchemeToProjectMappings<T = Models.NotificationSchemeAndProjectMappingPage>(\n    parameters?: Parameters.GetNotificationSchemeToProjectMappings,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/notificationscheme/project',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        notificationSchemeId: parameters?.notificationSchemeId,\n        projectId: parameters?.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [notification scheme](https://confluence.atlassian.com/x/8YdKLg), including the list of events and the\n   * recipients who will receive notifications for those events.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, the user must have permission to administer at least one project associated\n   * with the notification scheme.\n   */\n  async getNotificationScheme<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [notification scheme](https://confluence.atlassian.com/x/8YdKLg), including the list of events and the\n   * recipients who will receive notifications for those events.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, the user must have permission to administer at least one project associated\n   * with the notification scheme.\n   */\n  async getNotificationScheme<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getNotificationScheme<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/notificationscheme/${id}`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateNotificationScheme<T = void>(\n    parameters: Parameters.UpdateNotificationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateNotificationScheme<T = void>(\n    parameters: Parameters.UpdateNotificationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateNotificationScheme<T = void>(\n    parameters: Parameters.UpdateNotificationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/notificationscheme/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds notifications to a notification scheme. You can add up to 1000 notifications per request.\n   *\n   * _Deprecated: The notification type `EmailAddress` is no longer supported in Cloud. Refer to the\n   * [changelog](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1031) for more details._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addNotifications<T = void>(parameters: Parameters.AddNotifications, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds notifications to a notification scheme. You can add up to 1000 notifications per request.\n   *\n   * _Deprecated: The notification type `EmailAddress` is no longer supported in Cloud. Refer to the\n   * [changelog](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1031) for more details._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addNotifications<T = void>(parameters: Parameters.AddNotifications, callback?: never): Promise<T>;\n  async addNotifications<T = void>(parameters: Parameters.AddNotifications, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/notificationscheme/${parameters.id}/notification`,\n      method: 'PUT',\n      data: {\n        notificationSchemeEvents: parameters.notificationSchemeEvents,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteNotificationScheme<T = void>(\n    parameters: Parameters.DeleteNotificationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteNotificationScheme<T = void>(\n    parameters: Parameters.DeleteNotificationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async deleteNotificationScheme<T = void>(\n    parameters: Parameters.DeleteNotificationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/notificationscheme/${parameters.notificationSchemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a notification from a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeNotificationFromNotificationScheme<T = void>(\n    parameters: Parameters.RemoveNotificationFromNotificationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a notification from a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeNotificationFromNotificationScheme<T = void>(\n    parameters: Parameters.RemoveNotificationFromNotificationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async removeNotificationFromNotificationScheme<T = void>(\n    parameters: Parameters.RemoveNotificationFromNotificationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/notificationscheme/${parameters.notificationSchemeId}/notification/${parameters.notificationId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\nimport { paramSerializer } from '../paramSerializer';\n\nexport class IssuePriorities {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the list of all issue priorities.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPriorities<T = Models.Priority[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the list of all issue priorities.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPriorities<T = Models.Priority[]>(callback?: never): Promise<T>;\n  async getPriorities<T = Models.Priority[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/priority',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue priority.\n   *\n   * Deprecation applies to iconUrl param in request body which will be sunset on 16th Mar 2025. For more details refer\n   * to [changelog](https://developer.atlassian.com/changelog/#CHANGE-1525).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPriority<T = Models.PriorityId>(\n    parameters: Parameters.CreatePriority,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue priority.\n   *\n   * Deprecation applies to iconUrl param in request body which will be sunset on 16th Mar 2025. For more details refer\n   * to [changelog](https://developer.atlassian.com/changelog/#CHANGE-1525).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPriority<T = Models.PriorityId>(parameters: Parameters.CreatePriority, callback?: never): Promise<T>;\n  async createPriority<T = Models.PriorityId>(\n    parameters: Parameters.CreatePriority,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/priority',\n      method: 'POST',\n      data: {\n        avatarId: parameters.avatarId,\n        description: parameters.description,\n        iconUrl: parameters.iconUrl,\n        name: parameters.name,\n        statusColor: parameters.statusColor,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets default issue priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultPriority<T = void>(\n    parameters: Parameters.SetDefaultPriority | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets default issue priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultPriority<T = void>(parameters?: Parameters.SetDefaultPriority, callback?: never): Promise<T>;\n  async setDefaultPriority<T = void>(\n    parameters?: Parameters.SetDefaultPriority,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/priority/default',\n      method: 'PUT',\n      data: {\n        id: parameters?.id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the order of issue priorities.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async movePriorities<T = void>(parameters: Parameters.MovePriorities, callback: Callback<T>): Promise<void>;\n  /**\n   * Changes the order of issue priorities.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async movePriorities<T = void>(parameters: Parameters.MovePriorities, callback?: never): Promise<T>;\n  async movePriorities<T = void>(parameters: Parameters.MovePriorities, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/priority/move',\n      method: 'PUT',\n      data: {\n        after: parameters.after,\n        ids: parameters.ids,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * priorities. The list can contain all priorities or a subset determined by any combination of these criteria:\n   *\n   * - A list of priority IDs. Any invalid priority IDs are ignored.\n   * - A list of project IDs. Only priorities that are available in these projects will be returned. Any invalid project\n   *   IDs are ignored.\n   * - Whether the field configuration is a default. This returns priorities from company-managed (classic) projects only,\n   *   as there is no concept of default priorities in team-managed projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async searchPriorities<T = Models.PagePriority>(\n    parameters: Parameters.SearchPriorities | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * priorities. The list can contain all priorities or a subset determined by any combination of these criteria:\n   *\n   * - A list of priority IDs. Any invalid priority IDs are ignored.\n   * - A list of project IDs. Only priorities that are available in these projects will be returned. Any invalid project\n   *   IDs are ignored.\n   * - Whether the field configuration is a default. This returns priorities from company-managed (classic) projects only,\n   *   as there is no concept of default priorities in team-managed projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async searchPriorities<T = Models.PagePriority>(\n    parameters?: Parameters.SearchPriorities,\n    callback?: never,\n  ): Promise<T>;\n  async searchPriorities<T = Models.PagePriority>(\n    parameters?: Parameters.SearchPriorities,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/priority/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        projectId: paramSerializer('projectId', parameters?.projectId),\n        priorityName: parameters?.priorityName,\n        onlyDefault: parameters?.onlyDefault,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPriority<T = Models.Priority>(\n    parameters: Parameters.GetPriority | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an issue priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPriority<T = Models.Priority>(parameters: Parameters.GetPriority | string, callback?: never): Promise<T>;\n  async getPriority<T = Models.Priority>(\n    parameters: Parameters.GetPriority | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/priority/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates an issue priority.\n   *\n   * At least one request body parameter must be defined.\n   *\n   * Deprecation applies to iconUrl param in request body which will be sunset on 16th Mar 2025. For more details refer\n   * to [changelog](https://developer.atlassian.com/changelog/#CHANGE-1525).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePriority<T = void>(parameters: Parameters.UpdatePriority, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates an issue priority.\n   *\n   * At least one request body parameter must be defined.\n   *\n   * Deprecation applies to iconUrl param in request body which will be sunset on 16th Mar 2025. For more details refer\n   * to [changelog](https://developer.atlassian.com/changelog/#CHANGE-1525).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePriority<T = void>(parameters: Parameters.UpdatePriority, callback?: never): Promise<T>;\n  async updatePriority<T = void>(parameters: Parameters.UpdatePriority, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/priority/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        avatarId: parameters.avatarId,\n        description: parameters.description,\n        iconUrl: parameters.iconUrl,\n        name: parameters.name,\n        statusColor: parameters.statusColor,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue priority.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePriority<T = unknown>(parameters: Parameters.DeletePriority, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue priority.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePriority<T = unknown>(parameters: Parameters.DeletePriority, callback?: never): Promise<T>;\n  async deletePriority<T = unknown>(parameters: Parameters.DeletePriority, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/priority/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Sets or updates a list of entity property values on issues. A list of up to 10 entity properties can be specified\n   * along with up to 10,000 issues on which to set or update that list of entity properties.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. The maximum\n   * length of single issue property value is 32768 characters. This operation can be accessed anonymously.\n   *\n   * This operation is:\n   *\n   * - Transactional, either all properties are updated in all eligible issues or, when errors occur, no properties are\n   *   updated.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkSetIssuesProperties<T = unknown>(\n    parameters: Parameters.BulkSetIssuesProperties | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets or updates a list of entity property values on issues. A list of up to 10 entity properties can be specified\n   * along with up to 10,000 issues on which to set or update that list of entity properties.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. The maximum\n   * length of single issue property value is 32768 characters. This operation can be accessed anonymously.\n   *\n   * This operation is:\n   *\n   * - Transactional, either all properties are updated in all eligible issues or, when errors occur, no properties are\n   *   updated.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkSetIssuesProperties<T = unknown>(\n    parameters?: Parameters.BulkSetIssuesProperties,\n    callback?: never,\n  ): Promise<T>;\n  async bulkSetIssuesProperties<T = unknown>(\n    parameters?: Parameters.BulkSetIssuesProperties,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue/properties',\n      method: 'POST',\n      data: {\n        entitiesIds: parameters?.entitiesIds,\n        properties: parameters?.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets or updates entity property values on issues. Up to 10 entity properties can be specified for each issue and up\n   * to 100 issues included in the request.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON.\n   *\n   * This operation is:\n   *\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   * - Non-transactional. Updating some entities may fail. Such information will available in the task result.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkSetIssuePropertiesByIssue<T = unknown>(\n    parameters: Parameters.BulkSetIssuePropertiesByIssue | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets or updates entity property values on issues. Up to 10 entity properties can be specified for each issue and up\n   * to 100 issues included in the request.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON.\n   *\n   * This operation is:\n   *\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   * - Non-transactional. Updating some entities may fail. Such information will available in the task result.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkSetIssuePropertiesByIssue<T = unknown>(\n    parameters?: Parameters.BulkSetIssuePropertiesByIssue,\n    callback?: never,\n  ): Promise<T>;\n  async bulkSetIssuePropertiesByIssue<T = unknown>(\n    parameters?: Parameters.BulkSetIssuePropertiesByIssue,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue/properties/multi',\n      method: 'POST',\n      data: {\n        issues: parameters?.issues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets a property value on multiple issues.\n   *\n   * The value set can be a constant or determined by a [Jira\n   * expression](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/). Expressions must be computable\n   * with constant complexity when applied to a set of issues. Expressions must also comply with the\n   * [restrictions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#restrictions) that apply to\n   * all Jira expressions.\n   *\n   * The issues to be updated can be specified by a filter.\n   *\n   * The filter identifies issues eligible for update using these criteria:\n   *\n   * - `entityIds` Only issues from this list are eligible.\n   * - `currentValue` Only issues with the property set to this value are eligible.\n   * - `hasProperty`:\n   *\n   *   - If _true_, only issues with the property are eligible.\n   *   - If _false_, only issues without the property are eligible.\n   *\n   * If more than one criteria is specified, they are joined with the logical _AND_: only issues that satisfy all\n   * criteria are eligible.\n   *\n   * If an invalid combination of criteria is provided, an error is returned. For example, specifying a `currentValue`\n   * and `hasProperty` as _false_ would not match any issues (because without the property the property cannot have a\n   * value).\n   *\n   * The filter is optional. Without the filter all the issues visible to the user and where the user has the\n   * EDIT_ISSUES permission for the issue are considered eligible.\n   *\n   * This operation is:\n   *\n   * - Transactional, either all eligible issues are updated or, when errors occur, none are updated.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing\n   *   issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue.\n   */\n  async bulkSetIssueProperty<T = unknown>(\n    parameters: Parameters.BulkSetIssueProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets a property value on multiple issues.\n   *\n   * The value set can be a constant or determined by a [Jira\n   * expression](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/). Expressions must be computable\n   * with constant complexity when applied to a set of issues. Expressions must also comply with the\n   * [restrictions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#restrictions) that apply to\n   * all Jira expressions.\n   *\n   * The issues to be updated can be specified by a filter.\n   *\n   * The filter identifies issues eligible for update using these criteria:\n   *\n   * - `entityIds` Only issues from this list are eligible.\n   * - `currentValue` Only issues with the property set to this value are eligible.\n   * - `hasProperty`:\n   *\n   *   - If _true_, only issues with the property are eligible.\n   *   - If _false_, only issues without the property are eligible.\n   *\n   * If more than one criteria is specified, they are joined with the logical _AND_: only issues that satisfy all\n   * criteria are eligible.\n   *\n   * If an invalid combination of criteria is provided, an error is returned. For example, specifying a `currentValue`\n   * and `hasProperty` as _false_ would not match any issues (because without the property the property cannot have a\n   * value).\n   *\n   * The filter is optional. Without the filter all the issues visible to the user and where the user has the\n   * EDIT_ISSUES permission for the issue are considered eligible.\n   *\n   * This operation is:\n   *\n   * - Transactional, either all eligible issues are updated or, when errors occur, none are updated.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing\n   *   issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue.\n   */\n  async bulkSetIssueProperty<T = unknown>(parameters: Parameters.BulkSetIssueProperty, callback?: never): Promise<T>;\n  async bulkSetIssueProperty<T = unknown>(\n    parameters: Parameters.BulkSetIssueProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: {\n        value: parameters.value,\n        expression: parameters.expression,\n        filter: parameters.filter,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a property value from multiple issues. The issues to be updated can be specified by filter criteria.\n   *\n   * The criteria the filter used to identify eligible issues are:\n   *\n   * - `entityIds` Only issues from this list are eligible.\n   * - `currentValue` Only issues with the property set to this value are eligible.\n   *\n   * If both criteria is specified, they are joined with the logical _AND_: only issues that satisfy both criteria are\n   * considered eligible.\n   *\n   * If no filter criteria are specified, all the issues visible to the user and where the user has the EDIT_ISSUES\n   * permission for the issue are considered eligible.\n   *\n   * This operation is:\n   *\n   * - Transactional, either the property is deleted from all eligible issues or, when errors occur, no properties are\n   *   deleted.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing\n   *   issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue.\n   */\n  async bulkDeleteIssueProperty<T = unknown>(\n    parameters: Parameters.BulkDeleteIssueProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a property value from multiple issues. The issues to be updated can be specified by filter criteria.\n   *\n   * The criteria the filter used to identify eligible issues are:\n   *\n   * - `entityIds` Only issues from this list are eligible.\n   * - `currentValue` Only issues with the property set to this value are eligible.\n   *\n   * If both criteria is specified, they are joined with the logical _AND_: only issues that satisfy both criteria are\n   * considered eligible.\n   *\n   * If no filter criteria are specified, all the issues visible to the user and where the user has the EDIT_ISSUES\n   * permission for the issue are considered eligible.\n   *\n   * This operation is:\n   *\n   * - Transactional, either the property is deleted from all eligible issues or, when errors occur, no properties are\n   *   deleted.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing\n   *   issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue.\n   */\n  async bulkDeleteIssueProperty<T = unknown>(\n    parameters: Parameters.BulkDeleteIssueProperty,\n    callback?: never,\n  ): Promise<T>;\n  async bulkDeleteIssueProperty<T = unknown>(\n    parameters: Parameters.BulkDeleteIssueProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n      data: {\n        entityIds: parameters.entityIds,\n        currentValue: parameters.currentValue,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the URLs and keys of an issue's properties.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Property details are only returned where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssuePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssuePropertyKeys | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the URLs and keys of an issue's properties.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Property details are only returned where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssuePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssuePropertyKeys | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssuePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssuePropertyKeys | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the key and value of an issue's property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssueProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the key and value of an issue's property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssueProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of an issue's property. Use this resource to store custom data against an issue.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async setIssueProperty<T = unknown>(parameters: Parameters.SetIssueProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the value of an issue's property. Use this resource to store custom data against an issue.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async setIssueProperty<T = unknown>(parameters: Parameters.SetIssueProperty, callback?: never): Promise<T>;\n  async setIssueProperty<T = unknown>(\n    parameters: Parameters.SetIssueProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue's property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteIssueProperty<T = void>(parameters: Parameters.DeleteIssueProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue's property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteIssueProperty<T = void>(parameters: Parameters.DeleteIssueProperty, callback?: never): Promise<T>;\n  async deleteIssueProperty<T = void>(\n    parameters: Parameters.DeleteIssueProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueRemoteLinks {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the remote issue links for an issue. When a remote issue link global ID is provided the record with that\n   * global ID is returned, otherwise all remote issue links are returned. Where a global ID includes reserved URL\n   * characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1`\n   * as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getRemoteIssueLinks<T = Models.RemoteIssueLink[]>(\n    parameters: Parameters.GetRemoteIssueLinks | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the remote issue links for an issue. When a remote issue link global ID is provided the record with that\n   * global ID is returned, otherwise all remote issue links are returned. Where a global ID includes reserved URL\n   * characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1`\n   * as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getRemoteIssueLinks<T = Models.RemoteIssueLink[]>(\n    parameters: Parameters.GetRemoteIssueLinks | string,\n    callback?: never,\n  ): Promise<T>;\n  async getRemoteIssueLinks<T = Models.RemoteIssueLink[]>(\n    parameters: Parameters.GetRemoteIssueLinks | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/remotelink`,\n      method: 'GET',\n      params: {\n        globalId: typeof parameters !== 'string' && parameters.globalId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates or updates a remote issue link for an issue.\n   *\n   * If a `globalId` is provided and a remote issue link with that global ID is found it is updated. Any fields without\n   * values in the request are set to null. Otherwise, the remote issue link is created.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async createOrUpdateRemoteIssueLink<T = Models.RemoteIssueLinkIdentifies>(\n    parameters: Parameters.CreateOrUpdateRemoteIssueLink,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates or updates a remote issue link for an issue.\n   *\n   * If a `globalId` is provided and a remote issue link with that global ID is found it is updated. Any fields without\n   * values in the request are set to null. Otherwise, the remote issue link is created.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async createOrUpdateRemoteIssueLink<T = Models.RemoteIssueLinkIdentifies>(\n    parameters: Parameters.CreateOrUpdateRemoteIssueLink,\n    callback?: never,\n  ): Promise<T>;\n  async createOrUpdateRemoteIssueLink<T = Models.RemoteIssueLinkIdentifies>(\n    parameters: Parameters.CreateOrUpdateRemoteIssueLink,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/remotelink`,\n      method: 'POST',\n      data: {\n        globalId: parameters.globalId,\n        application: parameters.application,\n        relationship: parameters.relationship,\n        object: parameters.object,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the remote issue link from the issue using the link's global ID. Where the global ID includes reserved URL\n   * characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1`\n   * as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is implemented, issue-level security\n   *   permission to view the issue.\n   */\n  async deleteRemoteIssueLinkByGlobalId<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkByGlobalId | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the remote issue link from the issue using the link's global ID. Where the global ID includes reserved URL\n   * characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1`\n   * as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is implemented, issue-level security\n   *   permission to view the issue.\n   */\n  async deleteRemoteIssueLinkByGlobalId<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkByGlobalId | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteRemoteIssueLinkByGlobalId<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkByGlobalId | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/remotelink`,\n      method: 'DELETE',\n      params: {\n        globalId: typeof parameters !== 'string' && parameters.globalId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a remote issue link for an issue.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getRemoteIssueLinkById<T = Models.RemoteIssueLink>(\n    parameters: Parameters.GetRemoteIssueLinkById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a remote issue link for an issue.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getRemoteIssueLinkById<T = Models.RemoteIssueLink>(\n    parameters: Parameters.GetRemoteIssueLinkById,\n    callback?: never,\n  ): Promise<T>;\n  async getRemoteIssueLinkById<T = Models.RemoteIssueLink>(\n    parameters: Parameters.GetRemoteIssueLinkById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/remotelink/${parameters.linkId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a remote issue link for an issue.\n   *\n   * Note: Fields without values in the request are set to null.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async updateRemoteIssueLink<T = void>(\n    parameters: Parameters.UpdateRemoteIssueLink,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a remote issue link for an issue.\n   *\n   * Note: Fields without values in the request are set to null.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async updateRemoteIssueLink<T = void>(parameters: Parameters.UpdateRemoteIssueLink, callback?: never): Promise<T>;\n  async updateRemoteIssueLink<T = void>(\n    parameters: Parameters.UpdateRemoteIssueLink,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/remotelink/${parameters.linkId}`,\n      method: 'PUT',\n      data: {\n        globalId: parameters.globalId,\n        application: parameters.application,\n        relationship: parameters.relationship,\n        object: parameters.object,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a remote issue link from an issue.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_, _Edit issues_, and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for the project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteRemoteIssueLinkById<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a remote issue link from an issue.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_, _Edit issues_, and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for the project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteRemoteIssueLinkById<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkById,\n    callback?: never,\n  ): Promise<T>;\n  async deleteRemoteIssueLinkById<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/remotelink/${parameters.linkId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueResolutions {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of all issue resolution values.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getResolutions<T = Models.Resolution[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a list of all issue resolution values.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getResolutions<T = Models.Resolution[]>(callback?: never): Promise<T>;\n  async getResolutions<T = Models.Resolution[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/resolution',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createResolution<T = Models.ResolutionId>(\n    parameters: Parameters.CreateResolution,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createResolution<T = Models.ResolutionId>(\n    parameters: Parameters.CreateResolution,\n    callback?: never,\n  ): Promise<T>;\n  async createResolution<T = Models.ResolutionId>(\n    parameters: Parameters.CreateResolution,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/resolution',\n      method: 'POST',\n      data: parameters,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets default issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultResolution<T = void>(\n    parameters: Parameters.SetDefaultResolution,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets default issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultResolution<T = void>(parameters: Parameters.SetDefaultResolution, callback?: never): Promise<T>;\n  async setDefaultResolution<T = void>(\n    parameters: Parameters.SetDefaultResolution,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/resolution/default',\n      method: 'PUT',\n      data: {\n        id: parameters.id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the order of issue resolutions.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveResolutions<T = void>(parameters: Parameters.MoveResolutions, callback: Callback<T>): Promise<void>;\n  /**\n   * Changes the order of issue resolutions.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveResolutions<T = void>(parameters: Parameters.MoveResolutions, callback?: never): Promise<T>;\n  async moveResolutions<T = void>(parameters: Parameters.MoveResolutions, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/resolution/move',\n      method: 'PUT',\n      data: {\n        after: parameters.after,\n        ids: parameters.ids,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * resolutions. The list can contain all resolutions or a subset determined by any combination of these criteria:\n   *\n   * - A list of resolutions IDs.\n   * - Whether the field configuration is a default. This returns resolutions from company-managed (classic) projects\n   *   only, as there is no concept of default resolutions in team-managed projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async searchResolutions<T = Models.PageResolution>(\n    parameters: Parameters.SearchResolutions | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * resolutions. The list can contain all resolutions or a subset determined by any combination of these criteria:\n   *\n   * - A list of resolutions IDs.\n   * - Whether the field configuration is a default. This returns resolutions from company-managed (classic) projects\n   *   only, as there is no concept of default resolutions in team-managed projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async searchResolutions<T = Models.PageResolution>(\n    parameters?: Parameters.SearchResolutions,\n    callback?: never,\n  ): Promise<T>;\n  async searchResolutions<T = Models.PageResolution>(\n    parameters?: Parameters.SearchResolutions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/resolution/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        onlyDefault: parameters?.onlyDefault,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue resolution value.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getResolution<T = Models.Resolution>(\n    parameters: Parameters.GetResolution,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an issue resolution value.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getResolution<T = Models.Resolution>(parameters: Parameters.GetResolution, callback?: never): Promise<T>;\n  async getResolution<T = Models.Resolution>(\n    parameters: Parameters.GetResolution,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/resolution/${parameters.id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates an issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateResolution<T = void>(parameters: Parameters.UpdateResolution, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates an issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateResolution<T = void>(parameters: Parameters.UpdateResolution, callback?: never): Promise<T>;\n  async updateResolution<T = void>(parameters: Parameters.UpdateResolution, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/resolution/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        ...parameters,\n        name: parameters.name,\n        id: undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue resolution.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteResolution<T = unknown>(parameters: Parameters.DeleteResolution, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue resolution.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteResolution<T = unknown>(parameters: Parameters.DeleteResolution, callback?: never): Promise<T>;\n  async deleteResolution<T = unknown>(\n    parameters: Parameters.DeleteResolution,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/resolution/${parameters.id}`,\n      method: 'DELETE',\n      params: {\n        replaceWith: parameters.replaceWith,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueSearch {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns lists of issues matching a query string. Use this resource to provide auto-completion suggestions when the\n   * user is looking for an issue using a word or string.\n   *\n   * This operation returns two lists:\n   *\n   * - `History Search` which includes issues from the user's history of created, edited, or viewed issues that contain\n   *   the string in the `query` parameter.\n   * - `Current Search` which includes issues that match the JQL expression in `currentJQL` and contain the string in the\n   *   `query` parameter.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getIssuePickerResource<T = Models.IssuePickerSuggestions>(\n    parameters: Parameters.GetIssuePickerResource | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns lists of issues matching a query string. Use this resource to provide auto-completion suggestions when the\n   * user is looking for an issue using a word or string.\n   *\n   * This operation returns two lists:\n   *\n   * - `History Search` which includes issues from the user's history of created, edited, or viewed issues that contain\n   *   the string in the `query` parameter.\n   * - `Current Search` which includes issues that match the JQL expression in `currentJQL` and contain the string in the\n   *   `query` parameter.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getIssuePickerResource<T = Models.IssuePickerSuggestions>(\n    parameters?: Parameters.GetIssuePickerResource,\n    callback?: never,\n  ): Promise<T>;\n  async getIssuePickerResource<T = Models.IssuePickerSuggestions>(\n    parameters?: Parameters.GetIssuePickerResource,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue/picker',\n      method: 'GET',\n      params: {\n        query: parameters?.query,\n        currentJQL: parameters?.currentJQL,\n        currentIssueKey: parameters?.currentIssueKey,\n        currentProjectId: parameters?.currentProjectId,\n        showSubTasks: parameters?.showSubTasks,\n        showSubTaskParent: parameters?.showSubTaskParent,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Checks whether one or more issues would be returned by one or more JQL queries.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, issues are only matched against JQL queries where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async matchIssues<T = Models.IssueMatches>(parameters: Parameters.MatchIssues, callback: Callback<T>): Promise<void>;\n  /**\n   * Checks whether one or more issues would be returned by one or more JQL queries.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None,\n   * however, issues are only matched against JQL queries where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async matchIssues<T = Models.IssueMatches>(parameters: Parameters.MatchIssues, callback?: never): Promise<T>;\n  async matchIssues<T = Models.IssueMatches>(\n    parameters: Parameters.MatchIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/jql/match',\n      method: 'POST',\n      data: {\n        issueIds: parameters.issueIds,\n        jqls: parameters.jqls,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * @deprecated Use {@link searchForIssuesUsingJqlEnhancedSearch} instead. This endpoint doesn't support newer features\n   *   like read-after-write consistency.\n   *\n   *   Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   If the JQL query expression is too large to be encoded as a query parameter, use the\n   *   [POST](#api-rest-api-2-search-post) version of this resource.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesUsingJql<T = Models.SearchResults>(\n    parameters: Parameters.SearchForIssuesUsingJql,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * @deprecated Use {@link searchForIssuesUsingJqlEnhancedSearch} instead. This endpoint doesn't support newer features\n   *   like read-after-write consistency.\n   *\n   *   Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   If the JQL query expression is too large to be encoded as a query parameter, use the\n   *   [POST](#api-rest-api-2-search-post) version of this resource.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesUsingJql<T = Models.SearchResults>(\n    parameters: Parameters.SearchForIssuesUsingJql,\n    callback?: never,\n  ): Promise<T>;\n  async searchForIssuesUsingJql<T = Models.SearchResults>(\n    parameters: Parameters.SearchForIssuesUsingJql,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/search',\n      method: 'GET',\n      params: {\n        jql: parameters.jql,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        validateQuery: parameters.validateQuery,\n        fields: parameters.fields,\n        expand: parameters.expand,\n        properties: parameters.properties,\n        fieldsByKeys: parameters.fieldsByKeys,\n        failFast: parameters.failFast,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * @deprecated Use {@link searchForIssuesUsingJqlEnhancedSearchPost} instead. This endpoint doesn't support newer\n   *   features like read-after-write consistency.\n   *\n   *   Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   There is a [GET](#api-rest-api-2-search-get) version of this resource that can be used for smaller JQL query\n   *   expressions.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesUsingJqlPost<T = Models.SearchResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlPost | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * @deprecated Use {@link searchForIssuesUsingJqlEnhancedSearchPost} instead. This endpoint doesn't support newer\n   *   features like read-after-write consistency.\n   *\n   *   Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   There is a [GET](#api-rest-api-2-search-get) version of this resource that can be used for smaller JQL query\n   *   expressions.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesUsingJqlPost<T = Models.SearchResults>(\n    parameters?: Parameters.SearchForIssuesUsingJqlPost,\n    callback?: never,\n  ): Promise<T>;\n  async searchForIssuesUsingJqlPost<T = Models.SearchResults>(\n    parameters?: Parameters.SearchForIssuesUsingJqlPost,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/search',\n      method: 'POST',\n      data: {\n        expand: parameters?.expand,\n        fields: parameters?.fields,\n        fieldsByKeys: parameters?.fieldsByKeys,\n        jql: parameters?.jql,\n        maxResults: parameters?.maxResults,\n        properties: parameters?.properties,\n        startAt: parameters?.startAt,\n        validateQuery: parameters?.validateQuery,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Provide an estimated count of the issues that match the [JQL](https://confluence.atlassian.com/x/egORLQ). Recent\n   * updates might not be immediately visible in the returned output. This endpoint requires JQL to be bounded.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async countIssues<T = Models.JQLCount>(parameters: Parameters.CountIssues, callback: Callback<T>): Promise<void>;\n  /**\n   * Provide an estimated count of the issues that match the [JQL](https://confluence.atlassian.com/x/egORLQ). Recent\n   * updates might not be immediately visible in the returned output. This endpoint requires JQL to be bounded.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async countIssues<T = Models.JQLCount>(parameters: Parameters.CountIssues, callback?: never): Promise<T>;\n  async countIssues<T = Models.JQLCount>(\n    parameters: Parameters.CountIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/search/approximate-count',\n      method: 'POST',\n      data: {\n        jql: parameters.jql,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * @deprecated This endpoint is no longer supported and may be removed in a future version.\n   *\n   *   Searches for IDs of issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   Use the [Search](#api-rest-api-2-search-post) endpoint if you need to fetch more than just issue IDs. The Search\n   *   endpoint returns more information, but may take much longer to respond to requests. This is because it uses a\n   *   different mechanism for ordering results than this endpoint and doesn't provide the total number of results for\n   *   your query.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesIds<T = Models.IdSearchResults>(\n    parameters: Parameters.SearchForIssuesIds,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * @deprecated This endpoint is no longer supported and may be removed in a future version.\n   *\n   *   Searches for IDs of issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   Use the [Search](#api-rest-api-2-search-post) endpoint if you need to fetch more than just issue IDs. The Search\n   *   endpoint returns more information, but may take much longer to respond to requests. This is because it uses a\n   *   different mechanism for ordering results than this endpoint and doesn't provide the total number of results for\n   *   your query.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesIds<T = Models.IdSearchResults>(\n    parameters: Parameters.SearchForIssuesIds,\n    callback?: never,\n  ): Promise<T>;\n  async searchForIssuesIds<T = Models.IdSearchResults>(\n    parameters: Parameters.SearchForIssuesIds,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/search/id',\n      method: 'POST',\n      data: {\n        jql: parameters.jql,\n        maxResults: parameters.maxResults,\n        nextPageToken: parameters.nextPageToken,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). Recent updates might not be immediately\n   * visible in the returned search results. If you need\n   * [read-after-write](https://developer.atlassian.com/cloud/jira/platform/search-and-reconcile/) consistency, you can\n   * utilize the `reconcileIssues` parameter to ensure stronger consistency assurances. This operation can be accessed\n   * anonymously.\n   *\n   * If the JQL query expression is too large to be encoded as a query parameter, use the\n   * [POST](#api-rest-api-2-search-post) version of this resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async searchForIssuesUsingJqlEnhancedSearch<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearch,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). Recent updates might not be immediately\n   * visible in the returned search results. If you need\n   * [read-after-write](https://developer.atlassian.com/cloud/jira/platform/search-and-reconcile/) consistency, you can\n   * utilize the `reconcileIssues` parameter to ensure stronger consistency assurances. This operation can be accessed\n   * anonymously.\n   *\n   * If the JQL query expression is too large to be encoded as a query parameter, use the\n   * [POST](#api-rest-api-2-search-post) version of this resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async searchForIssuesUsingJqlEnhancedSearch<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearch,\n    callback?: never,\n  ): Promise<T>;\n  async searchForIssuesUsingJqlEnhancedSearch<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearch,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/search/jql',\n      method: 'GET',\n      params: {\n        jql: parameters.jql,\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n        fields: parameters.fields,\n        expand: parameters.expand,\n        properties: parameters.properties,\n        fieldsByKeys: parameters.fieldsByKeys,\n        failFast: parameters.failFast,\n        reconcileIssues: parameters.reconcileIssues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). Recent updates might not be immediately\n   * visible in the returned search results. If you need\n   * [read-after-write](https://developer.atlassian.com/cloud/jira/platform/search-and-reconcile/) consistency, you can\n   * utilize the `reconcileIssues` parameter to ensure stronger consistency assurances. This operation can be accessed\n   * anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async searchForIssuesUsingJqlEnhancedSearchPost<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearchPost,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). Recent updates might not be immediately\n   * visible in the returned search results. If you need\n   * [read-after-write](https://developer.atlassian.com/cloud/jira/platform/search-and-reconcile/) consistency, you can\n   * utilize the `reconcileIssues` parameter to ensure stronger consistency assurances. This operation can be accessed\n   * anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async searchForIssuesUsingJqlEnhancedSearchPost<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearchPost,\n    callback?: never,\n  ): Promise<T>;\n  async searchForIssuesUsingJqlEnhancedSearchPost<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearchPost,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/search/jql',\n      method: 'POST',\n      data: {\n        // todo add deprecation notice\n        expand: parameters.expand,\n        fields: parameters.fields,\n        fieldsByKeys: parameters.fieldsByKeys,\n        jql: parameters.jql,\n        maxResults: parameters.maxResults,\n        nextPageToken: parameters.nextPageToken,\n        properties: parameters.properties,\n        reconcileIssues: parameters.reconcileIssues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueSecurityLevel {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns issue security level members.\n   *\n   * Only issue security level members in context of classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueSecurityLevelMembers<T = Models.PageIssueSecurityLevelMember>(\n    parameters: Parameters.GetIssueSecurityLevelMembers | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns issue security level members.\n   *\n   * Only issue security level members in context of classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueSecurityLevelMembers<T = Models.PageIssueSecurityLevelMember>(\n    parameters: Parameters.GetIssueSecurityLevelMembers | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueSecurityLevelMembers<T = Models.PageIssueSecurityLevelMember>(\n    parameters: Parameters.GetIssueSecurityLevelMembers | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueSecuritySchemeId = typeof parameters === 'string' ? parameters : parameters.issueSecuritySchemeId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuesecurityschemes/${issueSecuritySchemeId}/members`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        issueSecurityLevelId: typeof parameters !== 'string' && parameters.issueSecurityLevelId,\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns details of an issue security level.\n   *\n   * Use [Get issue security scheme](#api-rest-api-2-issuesecurityschemes-id-get) to obtain the IDs of issue security\n   * levels associated with the issue security scheme.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getIssueSecurityLevel<T = Models.SecurityLevel>(\n    parameters: Parameters.GetIssueSecurityLevel | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns details of an issue security level.\n   *\n   * Use [Get issue security scheme](#api-rest-api-2-issuesecurityschemes-id-get) to obtain the IDs of issue security\n   * levels associated with the issue security scheme.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getIssueSecurityLevel<T = Models.SecurityLevel>(\n    parameters: Parameters.GetIssueSecurityLevel | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueSecurityLevel<T = Models.SecurityLevel>(\n    parameters: Parameters.GetIssueSecurityLevel | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/securitylevel/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport { paramSerializer } from '../paramSerializer';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueSecuritySchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all [issue security schemes](https://confluence.atlassian.com/x/J4lKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueSecuritySchemes<T = Models.SecuritySchemes>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all [issue security schemes](https://confluence.atlassian.com/x/J4lKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueSecuritySchemes<T = Models.SecuritySchemes>(callback?: never): Promise<T>;\n  async getIssueSecuritySchemes<T = Models.SecuritySchemes>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuesecurityschemes',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a security scheme with security scheme levels and levels' members. You can create up to 100 security scheme\n   * levels and security scheme levels' members per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueSecurityScheme<T = Models.SecuritySchemeId>(\n    parameters: Parameters.CreateIssueSecurityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a security scheme with security scheme levels and levels' members. You can create up to 100 security scheme\n   * levels and security scheme levels' members per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueSecurityScheme<T = Models.SecuritySchemeId>(\n    parameters: Parameters.CreateIssueSecurityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueSecurityScheme<T = Models.SecuritySchemeId>(\n    parameters: Parameters.CreateIssueSecurityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuesecurityschemes',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        levels: parameters.levels,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * security levels.\n   *\n   * Only issue security levels in the context of classic projects are returned.\n   *\n   * Filtering using IDs is inclusive: if you specify both security scheme IDs and level IDs, the result will include\n   * both specified issue security levels and all issue security levels from the specified schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSecurityLevels<T = Models.PageSecurityLevel>(\n    parameters: Parameters.GetSecurityLevels | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * security levels.\n   *\n   * Only issue security levels in the context of classic projects are returned.\n   *\n   * Filtering using IDs is inclusive: if you specify both security scheme IDs and level IDs, the result will include\n   * both specified issue security levels and all issue security levels from the specified schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSecurityLevels<T = Models.PageSecurityLevel>(\n    parameters?: Parameters.GetSecurityLevels,\n    callback?: never,\n  ): Promise<T>;\n  async getSecurityLevels<T = Models.PageSecurityLevel>(\n    parameters?: Parameters.GetSecurityLevels,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuesecurityschemes/level',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: paramSerializer('id', parameters?.id),\n        schemeId: paramSerializer('schemeId', parameters?.schemeId),\n        onlyDefault: parameters?.onlyDefault,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets default issue security levels for schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultLevels<T = void>(\n    parameters: Parameters.SetDefaultLevels | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets default issue security levels for schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultLevels<T = void>(parameters?: Parameters.SetDefaultLevels, callback?: never): Promise<T>;\n  async setDefaultLevels<T = void>(\n    parameters?: Parameters.SetDefaultLevels,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuesecurityschemes/level/default',\n      method: 'PUT',\n      data: {\n        defaultValues: parameters?.defaultValues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * security level members.\n   *\n   * Only issue security level members in the context of classic projects are returned.\n   *\n   * Filtering using parameters is inclusive: if you specify both security scheme IDs and level IDs, the result will\n   * include all issue security level members from the specified schemes and levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSecurityLevelMembers<T = Models.PageSecurityLevelMember>(\n    parameters: Parameters.GetSecurityLevelMembers | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * security level members.\n   *\n   * Only issue security level members in the context of classic projects are returned.\n   *\n   * Filtering using parameters is inclusive: if you specify both security scheme IDs and level IDs, the result will\n   * include all issue security level members from the specified schemes and levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSecurityLevelMembers<T = Models.PageSecurityLevelMember>(\n    parameters?: Parameters.GetSecurityLevelMembers,\n    callback?: never,\n  ): Promise<T>;\n  async getSecurityLevelMembers<T = Models.PageSecurityLevelMember>(\n    parameters?: Parameters.GetSecurityLevelMembers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuesecurityschemes/level/member',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: paramSerializer('id', parameters?.id),\n        schemeId: paramSerializer('schemeId', parameters?.schemeId),\n        levelId: paramSerializer('levelId', parameters?.levelId),\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) mapping of\n   * projects that are using security schemes. You can provide either one or multiple security scheme IDs or project IDs\n   * to filter by. If you don't provide any, this will return a list of all mappings. Only issue security schemes in the\n   * context of classic projects are supported.\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchProjectsUsingSecuritySchemes<T = Models.PageIssueSecuritySchemeToProjectMapping>(\n    parameters: Parameters.SearchProjectsUsingSecuritySchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) mapping of\n   * projects that are using security schemes. You can provide either one or multiple security scheme IDs or project IDs\n   * to filter by. If you don't provide any, this will return a list of all mappings. Only issue security schemes in the\n   * context of classic projects are supported.\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchProjectsUsingSecuritySchemes<T = Models.PageIssueSecuritySchemeToProjectMapping>(\n    parameters?: Parameters.SearchProjectsUsingSecuritySchemes,\n    callback?: never,\n  ): Promise<T>;\n  async searchProjectsUsingSecuritySchemes<T = Models.PageIssueSecuritySchemeToProjectMapping>(\n    parameters?: Parameters.SearchProjectsUsingSecuritySchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuesecurityschemes/project',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        issueSecuritySchemeId: parameters?.issueSecuritySchemeId,\n        projectId: parameters?.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Associates an issue security scheme with a project and remaps security levels of issues to the new levels, if\n   * provided.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async associateSchemesToProjects<T = Models.TaskProgressObject>(\n    parameters: Parameters.AssociateSchemesToProjects,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Associates an issue security scheme with a project and remaps security levels of issues to the new levels, if\n   * provided.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async associateSchemesToProjects<T = Models.TaskProgressObject>(\n    parameters: Parameters.AssociateSchemesToProjects,\n    callback?: never,\n  ): Promise<T>;\n  async associateSchemesToProjects<T = Models.TaskProgressObject>(\n    parameters: Parameters.AssociateSchemesToProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuesecurityschemes/project',\n      method: 'PUT',\n      data: {\n        oldToNewSecurityLevelMappings: parameters.oldToNewSecurityLevelMappings,\n        projectId: parameters.projectId,\n        schemeId: parameters.schemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * security schemes.\\\n   * If you specify the project ID parameter, the result will contain issue security schemes and related project IDs you\n   * filter by. Use {@link IssueSecuritySchemeResource#searchProjectsUsingSecuritySchemes(String, String, Set, Set)} to\n   * obtain all projects related to scheme.\n   *\n   * Only issue security schemes in the context of classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchSecuritySchemes<T = Models.PageSecuritySchemeWithProjects>(\n    parameters: Parameters.SearchSecuritySchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * security schemes.\\\n   * If you specify the project ID parameter, the result will contain issue security schemes and related project IDs you\n   * filter by. Use {@link IssueSecuritySchemeResource#searchProjectsUsingSecuritySchemes(String, String, Set, Set)} to\n   * obtain all projects related to scheme.\n   *\n   * Only issue security schemes in the context of classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchSecuritySchemes<T = Models.PageSecuritySchemeWithProjects>(\n    parameters?: Parameters.SearchSecuritySchemes,\n    callback?: never,\n  ): Promise<T>;\n  async searchSecuritySchemes<T = Models.PageSecuritySchemeWithProjects>(\n    parameters?: Parameters.SearchSecuritySchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuesecurityschemes/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: paramSerializer('id', parameters?.id),\n        projectId: paramSerializer('projectId', parameters?.projectId),\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue security scheme along with its security levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project that uses the\n   *   requested issue security scheme.\n   */\n  async getIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetIssueSecurityScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an issue security scheme along with its security levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project that uses the\n   *   requested issue security scheme.\n   */\n  async getIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetIssueSecurityScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetIssueSecurityScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuesecurityschemes/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueSecurityScheme<T = void>(\n    parameters: Parameters.UpdateIssueSecurityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueSecurityScheme<T = void>(\n    parameters: Parameters.UpdateIssueSecurityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateIssueSecurityScheme<T = void>(\n    parameters: Parameters.UpdateIssueSecurityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuesecurityschemes/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteSecurityScheme<T = void>(\n    parameters: Parameters.DeleteSecurityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteSecurityScheme<T = void>(parameters: Parameters.DeleteSecurityScheme, callback?: never): Promise<T>;\n  async deleteSecurityScheme<T = void>(\n    parameters: Parameters.DeleteSecurityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuesecurityschemes/${parameters.schemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds levels and levels' members to the issue security scheme. You can add up to 100 levels per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addSecurityLevel<T = void>(parameters: Parameters.AddSecurityLevel, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds levels and levels' members to the issue security scheme. You can add up to 100 levels per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addSecurityLevel<T = void>(parameters: Parameters.AddSecurityLevel, callback?: never): Promise<T>;\n  async addSecurityLevel<T = void>(parameters: Parameters.AddSecurityLevel, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuesecurityschemes/${parameters.schemeId}/level`,\n      method: 'PUT',\n      data: {\n        levels: parameters.levels,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the issue security level.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateSecurityLevel<T = void>(parameters: Parameters.UpdateSecurityLevel, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates the issue security level.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateSecurityLevel<T = void>(parameters: Parameters.UpdateSecurityLevel, callback?: never): Promise<T>;\n  async updateSecurityLevel<T = void>(\n    parameters: Parameters.UpdateSecurityLevel,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuesecurityschemes/${parameters.schemeId}/level/${parameters.levelId}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue security level.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeLevel<T = unknown>(parameters: Parameters.RemoveLevel, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue security level.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeLevel<T = unknown>(parameters: Parameters.RemoveLevel, callback?: never): Promise<T>;\n  async removeLevel<T = unknown>(parameters: Parameters.RemoveLevel, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuesecurityschemes/${parameters.schemeId}/level/${parameters.levelId}`,\n      method: 'DELETE',\n      params: {\n        replaceWith: parameters.replaceWith,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds members to the issue security level. You can add up to 100 members per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addSecurityLevelMembers<T = void>(\n    parameters: Parameters.AddSecurityLevelMembers,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds members to the issue security level. You can add up to 100 members per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addSecurityLevelMembers<T = void>(parameters: Parameters.AddSecurityLevelMembers, callback?: never): Promise<T>;\n  async addSecurityLevelMembers<T = void>(\n    parameters: Parameters.AddSecurityLevelMembers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuesecurityschemes/${parameters.schemeId}/level/${parameters.levelId}/member`,\n      method: 'PUT',\n      data: {\n        members: parameters.members,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes an issue security level member from an issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeMemberFromSecurityLevel<T = void>(\n    parameters: Parameters.RemoveMemberFromSecurityLevel,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes an issue security level member from an issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeMemberFromSecurityLevel<T = void>(\n    parameters: Parameters.RemoveMemberFromSecurityLevel,\n    callback?: never,\n  ): Promise<T>;\n  async removeMemberFromSecurityLevel<T = void>(\n    parameters: Parameters.RemoveMemberFromSecurityLevel,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuesecurityschemes/${parameters.schemeId}/level/${parameters.levelId}/member/${parameters.memberId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueTypeProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * keys of the issue type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the property keys of any\n   *   issue type.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) to get the property keys of any\n   *   issue types associated with the projects the user has permission to browse.\n   */\n  async getIssueTypePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssueTypePropertyKeys | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * keys of the issue type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the property keys of any\n   *   issue type.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) to get the property keys of any\n   *   issue types associated with the projects the user has permission to browse.\n   */\n  async getIssueTypePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssueTypePropertyKeys | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssueTypePropertyKeys | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueTypeId = typeof parameters === 'string' ? parameters : parameters.issueTypeId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetype/${issueTypeId}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the key and value of the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the details of any issue\n   *   type.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) to get the details of any issue\n   *   types associated with the projects the user has permission to browse.\n   */\n  async getIssueTypeProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueTypeProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the key and value of the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the details of any issue\n   *   type.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) to get the details of any issue\n   *   types associated with the projects the user has permission to browse.\n   */\n  async getIssueTypeProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueTypeProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueTypeProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetype/${parameters.issueTypeId}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates or updates the value of the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   * Use this resource to store and update data against an issue type.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setIssueTypeProperty<T = unknown>(\n    parameters: Parameters.SetIssueTypeProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates or updates the value of the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   * Use this resource to store and update data against an issue type.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setIssueTypeProperty<T = unknown>(parameters: Parameters.SetIssueTypeProperty, callback?: never): Promise<T>;\n  async setIssueTypeProperty<T = unknown>(\n    parameters: Parameters.SetIssueTypeProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetype/${parameters.issueTypeId}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeProperty<T = void>(\n    parameters: Parameters.DeleteIssueTypeProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeProperty<T = void>(parameters: Parameters.DeleteIssueTypeProperty, callback?: never): Promise<T>;\n  async deleteIssueTypeProperty<T = void>(\n    parameters: Parameters.DeleteIssueTypeProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetype/${parameters.issueTypeId}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueTypeSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type schemes.\n   *\n   * Only issue type schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllIssueTypeSchemes<T = Models.PageIssueTypeScheme>(\n    parameters: Parameters.GetAllIssueTypeSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type schemes.\n   *\n   * Only issue type schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllIssueTypeSchemes<T = Models.PageIssueTypeScheme>(\n    parameters?: Parameters.GetAllIssueTypeSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getAllIssueTypeSchemes<T = Models.PageIssueTypeScheme>(\n    parameters?: Parameters.GetAllIssueTypeSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetypescheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        orderBy: parameters?.orderBy,\n        expand: parameters?.expand,\n        queryString: parameters?.queryString,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeScheme<T = Models.IssueTypeSchemeID>(\n    parameters: Parameters.CreateIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeScheme<T = Models.IssueTypeSchemeID>(\n    parameters: Parameters.CreateIssueTypeScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueTypeScheme<T = Models.IssueTypeSchemeID>(\n    parameters: Parameters.CreateIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetypescheme',\n      method: 'POST',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        defaultIssueTypeId: parameters.defaultIssueTypeId,\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type scheme items.\n   *\n   * Only issue type scheme items used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeSchemesMapping<T = Models.PageIssueTypeSchemeMapping>(\n    parameters: Parameters.GetIssueTypeSchemesMapping | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type scheme items.\n   *\n   * Only issue type scheme items used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeSchemesMapping<T = Models.PageIssueTypeSchemeMapping>(\n    parameters?: Parameters.GetIssueTypeSchemesMapping,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeSchemesMapping<T = Models.PageIssueTypeSchemeMapping>(\n    parameters?: Parameters.GetIssueTypeSchemesMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetypescheme/mapping',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        issueTypeSchemeId: parameters?.issueTypeSchemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type schemes and, for each issue type scheme, a list of the projects that use it.\n   *\n   * Only issue type schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeSchemeForProjects<T = Models.PageIssueTypeSchemeProjects>(\n    parameters: Parameters.GetIssueTypeSchemeForProjects,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type schemes and, for each issue type scheme, a list of the projects that use it.\n   *\n   * Only issue type schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeSchemeForProjects<T = Models.PageIssueTypeSchemeProjects>(\n    parameters: Parameters.GetIssueTypeSchemeForProjects,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeSchemeForProjects<T = Models.PageIssueTypeSchemeProjects>(\n    parameters: Parameters.GetIssueTypeSchemeForProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetypescheme/project',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns an issue type scheme to a project.\n   *\n   * If any issues in the project are assigned issue types not present in the new scheme, the operation will fail. To\n   * complete the assignment those issues must be updated to use issue types in the new scheme.\n   *\n   * Issue type schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignIssueTypeSchemeToProject<T = void>(\n    parameters: Parameters.AssignIssueTypeSchemeToProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns an issue type scheme to a project.\n   *\n   * If any issues in the project are assigned issue types not present in the new scheme, the operation will fail. To\n   * complete the assignment those issues must be updated to use issue types in the new scheme.\n   *\n   * Issue type schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignIssueTypeSchemeToProject<T = void>(\n    parameters: Parameters.AssignIssueTypeSchemeToProject,\n    callback?: never,\n  ): Promise<T>;\n  async assignIssueTypeSchemeToProject<T = void>(\n    parameters: Parameters.AssignIssueTypeSchemeToProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetypescheme/project',\n      method: 'PUT',\n      data: {\n        issueTypeSchemeId: parameters.issueTypeSchemeId,\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueTypeScheme<T = void>(\n    parameters: Parameters.UpdateIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueTypeScheme<T = void>(parameters: Parameters.UpdateIssueTypeScheme, callback?: never): Promise<T>;\n  async updateIssueTypeScheme<T = void>(\n    parameters: Parameters.UpdateIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescheme/${parameters.issueTypeSchemeId}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        defaultIssueTypeId: parameters.defaultIssueTypeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue type scheme.\n   *\n   * Only issue type schemes used in classic projects can be deleted.\n   *\n   * Any projects assigned to the scheme are reassigned to the default issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an issue type scheme.\n   *\n   * Only issue type schemes used in classic projects can be deleted.\n   *\n   * Any projects assigned to the scheme are reassigned to the default issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteIssueTypeScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueTypeSchemeId = typeof parameters === 'string' ? parameters : parameters.issueTypeSchemeId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescheme/${issueTypeSchemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds issue types to an issue type scheme.\n   *\n   * The added issue types are appended to the issue types list.\n   *\n   * If any of the issue types exist in the issue type scheme, the operation fails and no issue types are added.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addIssueTypesToIssueTypeScheme<T = void>(\n    parameters: Parameters.AddIssueTypesToIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds issue types to an issue type scheme.\n   *\n   * The added issue types are appended to the issue types list.\n   *\n   * If any of the issue types exist in the issue type scheme, the operation fails and no issue types are added.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addIssueTypesToIssueTypeScheme<T = void>(\n    parameters: Parameters.AddIssueTypesToIssueTypeScheme,\n    callback?: never,\n  ): Promise<T>;\n  async addIssueTypesToIssueTypeScheme<T = void>(\n    parameters: Parameters.AddIssueTypesToIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescheme/${parameters.issueTypeSchemeId}/issuetype`,\n      method: 'PUT',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the order of issue types in an issue type scheme.\n   *\n   * The request body parameters must meet the following requirements:\n   *\n   * - All of the issue types must belong to the issue type scheme.\n   * - Either `after` or `position` must be provided.\n   * - The issue type in `after` must not be in the issue type list.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async reorderIssueTypesInIssueTypeScheme<T = void>(\n    parameters: Parameters.ReorderIssueTypesInIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Changes the order of issue types in an issue type scheme.\n   *\n   * The request body parameters must meet the following requirements:\n   *\n   * - All of the issue types must belong to the issue type scheme.\n   * - Either `after` or `position` must be provided.\n   * - The issue type in `after` must not be in the issue type list.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async reorderIssueTypesInIssueTypeScheme<T = void>(\n    parameters: Parameters.ReorderIssueTypesInIssueTypeScheme,\n    callback?: never,\n  ): Promise<T>;\n  async reorderIssueTypesInIssueTypeScheme<T = void>(\n    parameters: Parameters.ReorderIssueTypesInIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescheme/${parameters.issueTypeSchemeId}/issuetype/move`,\n      method: 'PUT',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n        after: parameters.after,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes an issue type from an issue type scheme.\n   *\n   * This operation cannot remove:\n   *\n   * - Any issue type used by issues.\n   * - Any issue types from the default issue type scheme.\n   * - The last standard issue type from an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypeFromIssueTypeScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypeFromIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes an issue type from an issue type scheme.\n   *\n   * This operation cannot remove:\n   *\n   * - Any issue type used by issues.\n   * - Any issue types from the default issue type scheme.\n   * - The last standard issue type from an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypeFromIssueTypeScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypeFromIssueTypeScheme,\n    callback?: never,\n  ): Promise<T>;\n  async removeIssueTypeFromIssueTypeScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypeFromIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescheme/${parameters.issueTypeSchemeId}/issuetype/${parameters.issueTypeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueTypeScreenSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type screen schemes.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemes<T = Models.PageIssueTypeScreenScheme>(\n    parameters: Parameters.GetIssueTypeScreenSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type screen schemes.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemes<T = Models.PageIssueTypeScreenScheme>(\n    parameters?: Parameters.GetIssueTypeScreenSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeScreenSchemes<T = Models.PageIssueTypeScreenScheme>(\n    parameters?: Parameters.GetIssueTypeScreenSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetypescreenscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        queryString: parameters?.queryString,\n        orderBy: parameters?.orderBy,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeScreenScheme<T = Models.IssueTypeScreenSchemeId>(\n    parameters: Parameters.CreateIssueTypeScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeScreenScheme<T = Models.IssueTypeScreenSchemeId>(\n    parameters: Parameters.CreateIssueTypeScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueTypeScreenScheme<T = Models.IssueTypeScreenSchemeId>(\n    parameters: Parameters.CreateIssueTypeScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetypescreenscheme',\n      method: 'POST',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        issueTypeMappings: parameters.issueTypeMappings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type screen scheme items.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemeMappings<T = Models.PageIssueTypeScreenSchemeItem>(\n    parameters: Parameters.GetIssueTypeScreenSchemeMappings | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type screen scheme items.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemeMappings<T = Models.PageIssueTypeScreenSchemeItem>(\n    parameters?: Parameters.GetIssueTypeScreenSchemeMappings,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeScreenSchemeMappings<T = Models.PageIssueTypeScreenSchemeItem>(\n    parameters?: Parameters.GetIssueTypeScreenSchemeMappings,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetypescreenscheme/mapping',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        issueTypeScreenSchemeId: parameters?.issueTypeScreenSchemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type screen schemes and, for each issue type screen scheme, a list of the projects that use it.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemeProjectAssociations<T = Models.PageIssueTypeScreenSchemesProjects>(\n    parameters: Parameters.GetIssueTypeScreenSchemeProjectAssociations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of issue\n   * type screen schemes and, for each issue type screen scheme, a list of the projects that use it.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemeProjectAssociations<T = Models.PageIssueTypeScreenSchemesProjects>(\n    parameters: Parameters.GetIssueTypeScreenSchemeProjectAssociations,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeScreenSchemeProjectAssociations<T = Models.PageIssueTypeScreenSchemesProjects>(\n    parameters: Parameters.GetIssueTypeScreenSchemeProjectAssociations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetypescreenscheme/project',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns an issue type screen scheme to a project.\n   *\n   * Issue type screen schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignIssueTypeScreenSchemeToProject<T = void>(\n    parameters: Parameters.AssignIssueTypeScreenSchemeToProject | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns an issue type screen scheme to a project.\n   *\n   * Issue type screen schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignIssueTypeScreenSchemeToProject<T = void>(\n    parameters?: Parameters.AssignIssueTypeScreenSchemeToProject,\n    callback?: never,\n  ): Promise<T>;\n  async assignIssueTypeScreenSchemeToProject<T = void>(\n    parameters?: Parameters.AssignIssueTypeScreenSchemeToProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetypescreenscheme/project',\n      method: 'PUT',\n      data: {\n        issueTypeScreenSchemeId: parameters?.issueTypeScreenSchemeId,\n        projectId: parameters?.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.UpdateIssueTypeScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.UpdateIssueTypeScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.UpdateIssueTypeScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescreenscheme/${parameters.issueTypeScreenSchemeId}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScreenScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScreenScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScreenScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueTypeScreenSchemeId = typeof parameters === 'string' ? parameters : parameters.issueTypeScreenSchemeId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescreenscheme/${issueTypeScreenSchemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Appends issue type to screen scheme mappings to an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async appendMappingsForIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.AppendMappingsForIssueTypeScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Appends issue type to screen scheme mappings to an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async appendMappingsForIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.AppendMappingsForIssueTypeScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async appendMappingsForIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.AppendMappingsForIssueTypeScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescreenscheme/${parameters.issueTypeScreenSchemeId}/mapping`,\n      method: 'PUT',\n      data: {\n        issueTypeMappings: parameters.issueTypeMappings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the default screen scheme of an issue type screen scheme. The default screen scheme is used for all\n   * unmapped issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultScreenScheme<T = void>(\n    parameters: Parameters.UpdateDefaultScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the default screen scheme of an issue type screen scheme. The default screen scheme is used for all\n   * unmapped issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultScreenScheme<T = void>(\n    parameters: Parameters.UpdateDefaultScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateDefaultScreenScheme<T = void>(\n    parameters: Parameters.UpdateDefaultScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescreenscheme/${parameters.issueTypeScreenSchemeId}/mapping/default`,\n      method: 'PUT',\n      data: {\n        screenSchemeId: parameters.screenSchemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes issue type to screen scheme mappings from an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeMappingsFromIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.RemoveMappingsFromIssueTypeScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes issue type to screen scheme mappings from an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeMappingsFromIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.RemoveMappingsFromIssueTypeScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async removeMappingsFromIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.RemoveMappingsFromIssueTypeScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescreenscheme/${parameters.issueTypeScreenSchemeId}/mapping/remove`,\n      method: 'POST',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * projects associated with an issue type screen scheme.\n   *\n   * Only company-managed projects associated with an issue type screen scheme are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectsForIssueTypeScreenScheme<T = Models.PageProjectDetails>(\n    parameters: Parameters.GetProjectsForIssueTypeScreenScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * projects associated with an issue type screen scheme.\n   *\n   * Only company-managed projects associated with an issue type screen scheme are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectsForIssueTypeScreenScheme<T = Models.PageProjectDetails>(\n    parameters: Parameters.GetProjectsForIssueTypeScreenScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectsForIssueTypeScreenScheme<T = Models.PageProjectDetails>(\n    parameters: Parameters.GetProjectsForIssueTypeScreenScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueTypeScreenSchemeId = typeof parameters === 'string' ? parameters : parameters.issueTypeScreenSchemeId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetypescreenscheme/${issueTypeScreenSchemeId}/project`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        query: typeof parameters !== 'string' && parameters.query,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueTypes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all issue types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issue\n   * types are only returned as follows:\n   *\n   * - If the user has the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), all issue\n   *   types are returned.\n   * - If the user has the _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or\n   *   more projects, the issue types associated with the projects the user has permission to browse are returned.\n   * - If the user is anonymous then they will be able to access projects with the _Browse projects_ for anonymous users\n   * - If the user authentication is incorrect they will fall back to anonymous\n   */\n  async getIssueAllTypes<T = Models.IssueTypeDetails[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all issue types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issue\n   * types are only returned as follows:\n   *\n   * - If the user has the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), all issue\n   *   types are returned.\n   * - If the user has the _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or\n   *   more projects, the issue types associated with the projects the user has permission to browse are returned.\n   * - If the user is anonymous then they will be able to access projects with the _Browse projects_ for anonymous users\n   * - If the user authentication is incorrect they will fall back to anonymous\n   */\n  async getIssueAllTypes<T = Models.IssueTypeDetails[]>(callback?: never): Promise<T>;\n  async getIssueAllTypes<T = Models.IssueTypeDetails[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetype',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue type and adds it to the default issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.CreateIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue type and adds it to the default issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.CreateIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.CreateIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetype',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        hierarchyLevel: parameters.hierarchyLevel,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns issue types for a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the relevant project or _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypesForProject<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetIssueTypesForProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns issue types for a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the relevant project or _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypesForProject<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetIssueTypesForProject,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypesForProject<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetIssueTypesForProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issuetype/project',\n      method: 'GET',\n      params: {\n        projectId: parameters.projectId,\n        level: parameters.level,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) in a project the issue type is associated\n   * with or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.GetIssueType | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an issue type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) in a project the issue type is associated\n   * with or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.GetIssueType | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.GetIssueType | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetype/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the issue type.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.UpdateIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the issue type.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.UpdateIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async updateIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.UpdateIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetype/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        avatarId: parameters.avatarId,\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the issue type. If the issue type is in use, all uses are updated with the alternative issue type\n   * (`alternativeIssueTypeId`). A list of alternative issue types are obtained from the [Get alternative issue\n   * types](#api-rest-api-2-issuetype-id-alternatives-get) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueType<T = void>(\n    parameters: Parameters.DeleteIssueType | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the issue type. If the issue type is in use, all uses are updated with the alternative issue type\n   * (`alternativeIssueTypeId`). A list of alternative issue types are obtained from the [Get alternative issue\n   * types](#api-rest-api-2-issuetype-id-alternatives-get) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueType<T = void>(parameters: Parameters.DeleteIssueType | string, callback?: never): Promise<T>;\n  async deleteIssueType<T = void>(\n    parameters: Parameters.DeleteIssueType | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetype/${id}`,\n      method: 'DELETE',\n      params: {\n        alternativeIssueTypeId: typeof parameters !== 'string' ? parameters.alternativeIssueTypeId : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of issue types that can be used to replace the issue type. The alternative issue types are those\n   * assigned to the same workflow scheme, field configuration scheme, and screen scheme.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAlternativeIssueTypes<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetAlternativeIssueTypes | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of issue types that can be used to replace the issue type. The alternative issue types are those\n   * assigned to the same workflow scheme, field configuration scheme, and screen scheme.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAlternativeIssueTypes<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetAlternativeIssueTypes | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAlternativeIssueTypes<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetAlternativeIssueTypes | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetype/${id}/alternatives`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Loads an avatar for the issue type.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar, use [ Update issue\n   * type](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-types/#api-rest-api-2-issuetype-id-put)\n   * to set it as the issue type's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateIssueTypeAvatar,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Loads an avatar for the issue type.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar, use [ Update issue\n   * type](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-issue-types/#api-rest-api-2-issuetype-id-put)\n   * to set it as the issue type's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateIssueTypeAvatar,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueTypeAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateIssueTypeAvatar,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issuetype/${parameters.id}/avatar2`,\n      method: 'POST',\n      headers: {\n        'X-Atlassian-Token': 'no-check',\n        'Content-Type': parameters.mimeType,\n      },\n      params: {\n        x: parameters.x,\n        y: parameters.y,\n        size: parameters.size ?? 0,\n      },\n      data: parameters.avatar,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueVotes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns details about the votes on an issue.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   ini\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * Note that users with the necessary permissions for this operation but without the _View voters and watchers_\n   * project permissions are not returned details in the `voters` field.\n   */\n  async getVotes<T = Models.Votes>(parameters: Parameters.GetVotes | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns details about the votes on an issue.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   ini\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * Note that users with the necessary permissions for this operation but without the _View voters and watchers_\n   * project permissions are not returned details in the `voters` field.\n   */\n  async getVotes<T = Models.Votes>(parameters: Parameters.GetVotes | string, callback?: never): Promise<T>;\n  async getVotes<T = Models.Votes>(\n    parameters: Parameters.GetVotes | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/votes`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds the user's vote to an issue. This is the equivalent of the user clicking _Vote_ on an issue in Jira.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addVote<T = void>(parameters: Parameters.AddVote | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds the user's vote to an issue. This is the equivalent of the user clicking _Vote_ on an issue in Jira.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addVote<T = void>(parameters: Parameters.AddVote | string, callback?: never): Promise<T>;\n  async addVote<T = void>(parameters: Parameters.AddVote | string, callback?: Callback<T>): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/votes`,\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a user's vote from an issue. This is the equivalent of the user clicking _Unvote_ on an issue in Jira.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async removeVote<T = void>(parameters: Parameters.RemoveVote | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a user's vote from an issue. This is the equivalent of the user clicking _Unvote_ on an issue in Jira.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async removeVote<T = void>(parameters: Parameters.RemoveVote | string, callback?: never): Promise<T>;\n  async removeVote<T = void>(parameters: Parameters.RemoveVote | string, callback?: Callback<T>): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/votes`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueWatchers {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns, for the user, details of the watched status of issues from a list. If an issue ID is invalid, the returned\n   * watched status is `false`.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIsWatchingIssueBulk<T = Models.BulkIssueIsWatching>(\n    parameters: Parameters.GetIsWatchingIssueBulk | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns, for the user, details of the watched status of issues from a list. If an issue ID is invalid, the returned\n   * watched status is `false`.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIsWatchingIssueBulk<T = Models.BulkIssueIsWatching>(\n    parameters?: Parameters.GetIsWatchingIssueBulk,\n    callback?: never,\n  ): Promise<T>;\n  async getIsWatchingIssueBulk<T = Models.BulkIssueIsWatching>(\n    parameters?: Parameters.GetIsWatchingIssueBulk,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue/watching',\n      method: 'POST',\n      data: {\n        issueIds: parameters?.issueIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the watchers for an issue.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   ini\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To see details of users on the watchlist other than themselves, _View voters and watchers_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async getIssueWatchers<T = Models.Watchers>(\n    parameters: Parameters.GetIssueWatchers | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the watchers for an issue.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   ini\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To see details of users on the watchlist other than themselves, _View voters and watchers_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async getIssueWatchers<T = Models.Watchers>(\n    parameters: Parameters.GetIssueWatchers | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueWatchers<T = Models.Watchers>(\n    parameters: Parameters.GetIssueWatchers | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/watchers`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a user as a watcher of an issue by passing the account ID of the user. For example,\n   * `\"5b10ac8d82e05b22cc7d4ef5\"`. If no user is specified the calling user is added.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To add users other than themselves to the watchlist, _Manage watcher list_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async addWatcher<T = void>(parameters: Parameters.AddWatcher, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds a user as a watcher of an issue by passing the account ID of the user. For example,\n   * `\"5b10ac8d82e05b22cc7d4ef5\"`. If no user is specified the calling user is added.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To add users other than themselves to the watchlist, _Manage watcher list_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async addWatcher<T = void>(parameters: Parameters.AddWatcher, callback?: never): Promise<T>;\n  async addWatcher<T = void>(parameters: Parameters.AddWatcher, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/watchers`,\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      data: parameters.accountId,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a user as a watcher of an issue.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To remove users other than themselves from the watchlist, _Manage watcher list_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async removeWatcher<T = void>(parameters: Parameters.RemoveWatcher, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a user as a watcher of an issue.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To remove users other than themselves from the watchlist, _Manage watcher list_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async removeWatcher<T = void>(parameters: Parameters.RemoveWatcher, callback?: never): Promise<T>;\n  async removeWatcher<T = void>(parameters: Parameters.RemoveWatcher, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/watchers`,\n      method: 'DELETE',\n      params: {\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueWorklogProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the keys of all properties for a worklog.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklogPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetWorklogPropertyKeys,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all properties for a worklog.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklogPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetWorklogPropertyKeys,\n    callback?: never,\n  ): Promise<T>;\n  async getWorklogPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetWorklogPropertyKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/worklog/${parameters.worklogId}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of a worklog property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklogProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetWorklogProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a worklog property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklogProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetWorklogProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getWorklogProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetWorklogProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/worklog/${parameters.worklogId}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a worklog property. Use this operation to store custom data against the worklog.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or _Edit\n   *   own worklogs_ to update worklogs created by the user.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async setWorklogProperty<T = unknown>(\n    parameters: Parameters.SetWorklogProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of a worklog property. Use this operation to store custom data against the worklog.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or _Edit\n   *   own worklogs_ to update worklogs created by the user.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async setWorklogProperty<T = unknown>(parameters: Parameters.SetWorklogProperty, callback?: never): Promise<T>;\n  async setWorklogProperty<T = unknown>(\n    parameters: Parameters.SetWorklogProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/worklog/${parameters.worklogId}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a worklog property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async deleteWorklogProperty<T = void>(\n    parameters: Parameters.DeleteWorklogProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a worklog property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async deleteWorklogProperty<T = void>(parameters: Parameters.DeleteWorklogProperty, callback?: never): Promise<T>;\n  async deleteWorklogProperty<T = void>(\n    parameters: Parameters.DeleteWorklogProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/worklog/${parameters.worklogId}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueWorklogs {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns worklogs for an issue (ordered by created time), starting from the oldest worklog or from the worklog\n   * started on or after a date and time.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Workloads are only returned where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getIssueWorklog<T = Models.PageOfWorklogs>(\n    parameters: Parameters.GetIssueWorklog | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns worklogs for an issue (ordered by created time), starting from the oldest worklog or from the worklog\n   * started on or after a date and time.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Workloads are only returned where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getIssueWorklog<T = Models.PageOfWorklogs>(\n    parameters: Parameters.GetIssueWorklog | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueWorklog<T = Models.PageOfWorklogs>(\n    parameters: Parameters.GetIssueWorklog | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/worklog`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' ? parameters.startAt : undefined,\n        maxResults: typeof parameters !== 'string' ? parameters.maxResults : undefined,\n        startedAfter: typeof parameters !== 'string' ? parameters.startedAfter : undefined,\n        startedBefore: typeof parameters !== 'string' ? parameters.startedBefore : undefined,\n        expand: typeof parameters !== 'string' ? parameters.expand : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a worklog to an issue.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Work on issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addWorklog<T = Models.Worklog>(parameters: Parameters.AddWorklog, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds a worklog to an issue.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Work on issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addWorklog<T = Models.Worklog>(parameters: Parameters.AddWorklog, callback?: never): Promise<T>;\n  async addWorklog<T = Models.Worklog>(parameters: Parameters.AddWorklog, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/worklog`,\n      method: 'POST',\n      params: {\n        notifyUsers: parameters.notifyUsers,\n        adjustEstimate: parameters.adjustEstimate,\n        newEstimate: parameters.newEstimate,\n        reduceBy: parameters.reduceBy,\n        expand: parameters.expand,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n      data: {\n        author: parameters.author,\n        comment: parameters.comment,\n        created: parameters.created,\n        id: parameters.id,\n        issueId: parameters.issueId,\n        properties: parameters.properties,\n        self: parameters.self,\n        started: parameters.started,\n        timeSpent: parameters.timeSpent,\n        timeSpentSeconds: parameters.timeSpentSeconds,\n        updateAuthor: parameters.updateAuthor,\n        updated: parameters.updated,\n        visibility: parameters.visibility,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a list of worklogs from an issue. This is an experimental API with limitations:\n   *\n   * - You can't delete more than 5000 worklogs at once.\n   * - No notifications will be sent for deleted worklogs.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog.\n   * - If any worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async bulkDeleteWorklogs<T = void>(parameters: Parameters.BulkDeleteWorklogs, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a list of worklogs from an issue. This is an experimental API with limitations:\n   *\n   * - You can't delete more than 5000 worklogs at once.\n   * - No notifications will be sent for deleted worklogs.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog.\n   * - If any worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async bulkDeleteWorklogs<T = void>(parameters: Parameters.BulkDeleteWorklogs, callback?: never): Promise<T>;\n  async bulkDeleteWorklogs<T = void>(\n    parameters: Parameters.BulkDeleteWorklogs,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/worklog`,\n      method: 'DELETE',\n      params: {\n        adjustEstimate: parameters.adjustEstimate,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n      data: {\n        ids: parameters.ids,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves a list of worklogs from one issue to another. This is an experimental API with several limitations:\n   *\n   * - You can't move more than 5000 worklogs at once.\n   * - You can't move worklogs containing an attachment.\n   * - You can't move worklogs restricted by project roles.\n   * - No notifications will be sent for moved worklogs.\n   * - No webhooks or events will be sent for moved worklogs.\n   * - No issue history will be recorded for moved worklogs.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the projects containing the\n   *   source and destination issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ and _Edit all worklogs_](https://confluence.atlassian.com/x/yodKLg)[project\n   *   permission](https://confluence.atlassian.com/x/yodKLg)\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async bulkMoveWorklogs<T = void>(parameters: Parameters.BulkMoveWorklogs, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves a list of worklogs from one issue to another. This is an experimental API with several limitations:\n   *\n   * - You can't move more than 5000 worklogs at once.\n   * - You can't move worklogs containing an attachment.\n   * - You can't move worklogs restricted by project roles.\n   * - No notifications will be sent for moved worklogs.\n   * - No webhooks or events will be sent for moved worklogs.\n   * - No issue history will be recorded for moved worklogs.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the projects containing the\n   *   source and destination issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ and _Edit all worklogs_](https://confluence.atlassian.com/x/yodKLg)[project\n   *   permission](https://confluence.atlassian.com/x/yodKLg)\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async bulkMoveWorklogs<T = void>(parameters: Parameters.BulkMoveWorklogs, callback?: never): Promise<T>;\n  async bulkMoveWorklogs<T = void>(parameters: Parameters.BulkMoveWorklogs, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/worklog/move`,\n      method: 'POST',\n      params: {\n        adjustEstimate: parameters.adjustEstimate,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n      data: parameters.worklogs,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a worklog.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklog<T = Models.Worklog>(parameters: Parameters.GetWorklog, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a worklog.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklog<T = Models.Worklog>(parameters: Parameters.GetWorklog, callback?: never): Promise<T>;\n  async getWorklog<T = Models.Worklog>(parameters: Parameters.GetWorklog, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/worklog/${parameters.id}`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a worklog.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or _Edit\n   *   own worklogs_ to update worklogs created by the user.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async updateWorklog<T = Models.Worklog>(parameters: Parameters.UpdateWorklog, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a worklog.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or _Edit\n   *   own worklogs_ to update worklogs created by the user.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async updateWorklog<T = Models.Worklog>(parameters: Parameters.UpdateWorklog, callback?: never): Promise<T>;\n  async updateWorklog<T = Models.Worklog>(\n    parameters: Parameters.UpdateWorklog,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/worklog/${parameters.id}`,\n      method: 'PUT',\n      params: {\n        notifyUsers: parameters.notifyUsers,\n        adjustEstimate: parameters.adjustEstimate,\n        newEstimate: parameters.newEstimate,\n        expand: parameters.expand,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n      data: {\n        comment: parameters.comment,\n        visibility: parameters.visibility,\n        started: parameters.started,\n        timeSpent: parameters.timeSpent,\n        timeSpentSeconds: parameters.timeSpentSeconds,\n        properties: parameters.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a worklog from an issue.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog or\n   *   _Delete own worklogs_ to delete worklogs created by the user,\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async deleteWorklog<T = void>(parameters: Parameters.DeleteWorklog, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a worklog from an issue.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog or\n   *   _Delete own worklogs_ to delete worklogs created by the user,\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async deleteWorklog<T = void>(parameters: Parameters.DeleteWorklog, callback?: never): Promise<T>;\n  async deleteWorklog<T = void>(parameters: Parameters.DeleteWorklog, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/worklog/${parameters.id}`,\n      method: 'DELETE',\n      params: {\n        notifyUsers: parameters.notifyUsers,\n        adjustEstimate: parameters.adjustEstimate,\n        newEstimate: parameters.newEstimate,\n        increaseBy: parameters.increaseBy,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of IDs and delete timestamps for worklogs deleted after a date and time.\n   *\n   * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to\n   * youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest\n   * item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set\n   * to true on the last page of worklogs.\n   *\n   * This resource does not return worklogs deleted during the minute preceding the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getIdsOfWorklogsDeletedSince<T = Models.ChangedWorklogs>(\n    parameters: Parameters.GetIdsOfWorklogsDeletedSince | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of IDs and delete timestamps for worklogs deleted after a date and time.\n   *\n   * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to\n   * youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest\n   * item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set\n   * to true on the last page of worklogs.\n   *\n   * This resource does not return worklogs deleted during the minute preceding the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getIdsOfWorklogsDeletedSince<T = Models.ChangedWorklogs>(\n    parameters?: Parameters.GetIdsOfWorklogsDeletedSince,\n    callback?: never,\n  ): Promise<T>;\n  async getIdsOfWorklogsDeletedSince<T = Models.ChangedWorklogs>(\n    parameters?: Parameters.GetIdsOfWorklogsDeletedSince,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/worklog/deleted',\n      method: 'GET',\n      params: {\n        since: parameters?.since,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns worklog details for a list of worklog IDs.\n   *\n   * The returned list of worklogs is limited to 1000 items.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, worklogs are only returned where either of the following is true:\n   *\n   * - The worklog is set as _Viewable by All Users_.\n   * - The user is a member of a project role or group with permission to view the worklog.\n   */\n  async getWorklogsForIds<T = Models.Worklog[]>(\n    parameters: Parameters.GetWorklogsForIds | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns worklog details for a list of worklog IDs.\n   *\n   * The returned list of worklogs is limited to 1000 items.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, worklogs are only returned where either of the following is true:\n   *\n   * - The worklog is set as _Viewable by All Users_.\n   * - The user is a member of a project role or group with permission to view the worklog.\n   */\n  async getWorklogsForIds<T = Models.Worklog[]>(\n    parameters?: Parameters.GetWorklogsForIds,\n    callback?: never,\n  ): Promise<T>;\n  async getWorklogsForIds<T = Models.Worklog[]>(\n    parameters?: Parameters.GetWorklogsForIds,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/worklog/list',\n      method: 'POST',\n      params: {\n        expand: parameters?.expand,\n      },\n      data: {\n        ids: parameters?.ids,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of IDs and update timestamps for worklogs updated after a date and time.\n   *\n   * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to\n   * youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest\n   * item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set\n   * to true on the last page of worklogs.\n   *\n   * This resource does not return worklogs updated during the minute preceding the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, worklogs are only returned where either of the following is true:\n   *\n   * - The worklog is set as _Viewable by All Users_.\n   * - The user is a member of a project role or group with permission to view the worklog.\n   */\n  async getIdsOfWorklogsModifiedSince<T = Models.ChangedWorklogs>(\n    parameters: Parameters.GetIdsOfWorklogsModifiedSince | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of IDs and update timestamps for worklogs updated after a date and time.\n   *\n   * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to\n   * youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest\n   * item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set\n   * to true on the last page of worklogs.\n   *\n   * This resource does not return worklogs updated during the minute preceding the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira, however, worklogs are only returned where either of the following is true:\n   *\n   * - The worklog is set as _Viewable by All Users_.\n   * - The user is a member of a project role or group with permission to view the worklog.\n   */\n  async getIdsOfWorklogsModifiedSince<T = Models.ChangedWorklogs>(\n    parameters?: Parameters.GetIdsOfWorklogsModifiedSince,\n    callback?: never,\n  ): Promise<T>;\n  async getIdsOfWorklogsModifiedSince<T = Models.ChangedWorklogs>(\n    parameters?: Parameters.GetIdsOfWorklogsModifiedSince,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/worklog/updated',\n      method: 'GET',\n      params: {\n        since: parameters?.since,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Issues {\n  constructor(private client: Client) {}\n\n  /**\n   * Bulk fetch changelogs for multiple issues and filter by fields\n   *\n   * Returns a paginated list of all changelogs for given issues sorted by changelog date and issue IDs, starting from\n   * the oldest changelog and smallest issue ID.\n   *\n   * Issues are identified by their ID or key, and optionally changelogs can be filtered by their field IDs. You can\n   * request the changelogs of up to 1000 issues and can filter them by up to 10 field IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the projects that the issues\n   *   are in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issues.\n   */\n  async getBulkChangelogs<T = Models.BulkChangelog>(\n    parameters: Parameters.GetBulkChangelogs,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk fetch changelogs for multiple issues and filter by fields\n   *\n   * Returns a paginated list of all changelogs for given issues sorted by changelog date and issue IDs, starting from\n   * the oldest changelog and smallest issue ID.\n   *\n   * Issues are identified by their ID or key, and optionally changelogs can be filtered by their field IDs. You can\n   * request the changelogs of up to 1000 issues and can filter them by up to 10 field IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the projects that the issues\n   *   are in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issues.\n   */\n  async getBulkChangelogs<T = Models.BulkChangelog>(\n    parameters: Parameters.GetBulkChangelogs,\n    callback?: never,\n  ): Promise<T>;\n  async getBulkChangelogs<T = Models.BulkChangelog>(\n    parameters: Parameters.GetBulkChangelogs,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/changelog/bulkfetch',\n      method: 'POST',\n      data: {\n        fieldIds: parameters.fieldIds,\n        issueIdsOrKeys: parameters.issueIdsOrKeys,\n        maxResults: parameters.maxResults,\n        nextPageToken: parameters.nextPageToken,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all issue events.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getEvents<T = Models.IssueEvent[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all issue events.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getEvents<T = Models.IssueEvent[]>(callback?: never): Promise<T>;\n  async getEvents<T = Models.IssueEvent[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/events',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask. A transition may be\n   * applied, to move the issue or subtask to a workflow step other than the default start step, and issue properties\n   * set.\n   *\n   * The content of the issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue\n   * or subtask are determined using the [ Get create issue metadata](#api-rest-api-2-issue-createmeta-get). These are\n   * the same fields that appear on the issue's create screen.\n   *\n   * Creating a subtask differs from creating an issue as follows:\n   *\n   * - `issueType` must be set to a subtask issue type (use [ Get create issue\n   *   metadata](#api-rest-api-2-issue-createmeta-get) to find subtask issue types).\n   * - `parent` must contain the ID or key of the parent issue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ and _Create issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in\n   * which the issue or subtask is created.\n   */\n  async createIssue<T = Models.CreatedIssue>(parameters: Parameters.CreateIssue, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask. A transition may be\n   * applied, to move the issue or subtask to a workflow step other than the default start step, and issue properties\n   * set.\n   *\n   * The content of the issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue\n   * or subtask are determined using the [ Get create issue metadata](#api-rest-api-2-issue-createmeta-get). These are\n   * the same fields that appear on the issue's create screen.\n   *\n   * Creating a subtask differs from creating an issue as follows:\n   *\n   * - `issueType` must be set to a subtask issue type (use [ Get create issue\n   *   metadata](#api-rest-api-2-issue-createmeta-get) to find subtask issue types).\n   * - `parent` must contain the ID or key of the parent issue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ and _Create issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in\n   * which the issue or subtask is created.\n   */\n  async createIssue<T = Models.CreatedIssue>(parameters: Parameters.CreateIssue, callback?: never): Promise<T>;\n  async createIssue<T = Models.CreatedIssue>(\n    parameters: Parameters.CreateIssue,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue',\n      method: 'POST',\n      params: {\n        updateHistory: parameters.updateHistory,\n      },\n      data: {\n        fields: parameters.fields,\n        historyMetadata: parameters.historyMetadata,\n        properties: parameters.properties,\n        transition: parameters.transition,\n        update: parameters.update,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Enables admins to archive up to 100,000 issues in a single request using JQL, returning the URL to check the status\n   * of the submitted request.\n   *\n   * You can use the [get\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-tasks/#api-rest-api-2-task-taskid-get)\n   * and [cancel\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-tasks/#api-rest-api-2-task-taskid-cancel-post)\n   * APIs to manage the request.\n   *\n   * **Note that:**\n   *\n   * - You can't archive subtasks directly, only through their parent issues\n   * - You can only archive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   *\n   * **Rate limiting:** Only a single request per jira instance can be active at any given time.\n   */\n  async archiveIssuesAsync<T = string>(parameters: Parameters.ArchiveIssuesAsync, callback: Callback<T>): Promise<void>;\n  /**\n   * Enables admins to archive up to 100,000 issues in a single request using JQL, returning the URL to check the status\n   * of the submitted request.\n   *\n   * You can use the [get\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-tasks/#api-rest-api-2-task-taskid-get)\n   * and [cancel\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-tasks/#api-rest-api-2-task-taskid-cancel-post)\n   * APIs to manage the request.\n   *\n   * **Note that:**\n   *\n   * - You can't archive subtasks directly, only through their parent issues\n   * - You can only archive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   *\n   * **Rate limiting:** Only a single request per jira instance can be active at any given time.\n   */\n  async archiveIssuesAsync<T = string>(parameters: Parameters.ArchiveIssuesAsync, callback?: never): Promise<T>;\n  async archiveIssuesAsync<T = string>(\n    parameters: Parameters.ArchiveIssuesAsync,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue/archive',\n      method: 'POST',\n      data: {\n        jql: parameters.jql,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Enables admins to archive up to 1000 issues in a single request using issue ID/key, returning details of the\n   * issue(s) archived in the process and the errors encountered, if any.\n   *\n   * **Note that:**\n   *\n   * - You can't archive subtasks directly, only through their parent issues\n   * - You can only archive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   */\n  async archiveIssues<T = Models.IssueArchivalSync>(\n    parameters: Parameters.ArchiveIssues,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Enables admins to archive up to 1000 issues in a single request using issue ID/key, returning details of the\n   * issue(s) archived in the process and the errors encountered, if any.\n   *\n   * **Note that:**\n   *\n   * - You can't archive subtasks directly, only through their parent issues\n   * - You can only archive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   */\n  async archiveIssues<T = Models.IssueArchivalSync>(parameters: Parameters.ArchiveIssues, callback?: never): Promise<T>;\n  async archiveIssues<T = Models.IssueArchivalSync>(\n    parameters: Parameters.ArchiveIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue/archive',\n      method: 'PUT',\n      data: {\n        issueIdsOrKeys: parameters.issueIdsOrKeys,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates upto **50** issues and, where the option to create subtasks is enabled in Jira, subtasks. Transitions may\n   * be applied, to move the issues or subtasks to a workflow step other than the default start step, and issue\n   * properties set.\n   *\n   * The content of each issue or subtask is defined using `update` and `fields`. The fields that can be set in the\n   * issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-2-issue-createmeta-get). These\n   * are the same fields that appear on the issues' create screens.\n   *\n   * Creating a subtask differs from creating an issue as follows:\n   *\n   * - `issueType` must be set to a subtask issue type (use [ Get create issue\n   *   metadata](#api-rest-api-2-issue-createmeta-get) to find subtask issue types).\n   * - `parent` the must contain the ID or key of the parent issue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ and _Create issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in\n   * which each issue or subtask is created.\n   */\n  async createIssues<T = Models.CreatedIssues>(\n    parameters: Parameters.CreateIssues | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates upto **50** issues and, where the option to create subtasks is enabled in Jira, subtasks. Transitions may\n   * be applied, to move the issues or subtasks to a workflow step other than the default start step, and issue\n   * properties set.\n   *\n   * The content of each issue or subtask is defined using `update` and `fields`. The fields that can be set in the\n   * issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-2-issue-createmeta-get). These\n   * are the same fields that appear on the issues' create screens.\n   *\n   * Creating a subtask differs from creating an issue as follows:\n   *\n   * - `issueType` must be set to a subtask issue type (use [ Get create issue\n   *   metadata](#api-rest-api-2-issue-createmeta-get) to find subtask issue types).\n   * - `parent` the must contain the ID or key of the parent issue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ and _Create issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in\n   * which each issue or subtask is created.\n   */\n  async createIssues<T = Models.CreatedIssues>(parameters?: Parameters.CreateIssues, callback?: never): Promise<T>;\n  async createIssues<T = Models.CreatedIssues>(\n    parameters?: Parameters.CreateIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue/bulk',\n      method: 'POST',\n      data: {\n        issueUpdates: parameters?.issueUpdates,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the details for a set of requested issues. You can request up to 100 issues.\n   *\n   * Each issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive\n   * search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or\n   * other redirect is **not** returned.\n   *\n   * Issues will be returned in ascending `id` order. If there are errors, Jira will return a list of issues which\n   * couldn't be fetched along with error messages.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkFetchIssues<T = Models.BulkIssue>(\n    parameters: Parameters.BulkFetchIssues,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the details for a set of requested issues. You can request up to 100 issues.\n   *\n   * Each issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive\n   * search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or\n   * other redirect is **not** returned.\n   *\n   * Issues will be returned in ascending `id` order. If there are errors, Jira will return a list of issues which\n   * couldn't be fetched along with error messages.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkFetchIssues<T = Models.BulkIssue>(parameters: Parameters.BulkFetchIssues, callback?: never): Promise<T>;\n  async bulkFetchIssues<T = Models.BulkIssue>(\n    parameters: Parameters.BulkFetchIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/bulkfetch',\n      method: 'POST',\n      data: {\n        expand: parameters.expand,\n        fields: parameters.fields,\n        fieldsByKeys: parameters.fieldsByKeys,\n        issueIdsOrKeys: parameters.issueIdsOrKeys,\n        properties: parameters.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * @deprecated Returns details of projects, issue types within projects, and, when requested, the create screen fields\n   *   for each issue type for the user. Use the information to populate the requests in [ Create\n   *   issue](#api-rest-api-2-issue-post) and [Create issues](#api-rest-api-2-issue-bulk-post).\n   *\n   *   Deprecated, see [Create Issue Meta Endpoint Deprecation\n   *   Notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1304).\n   *\n   *   The request can be restricted to specific projects or issue types using the query parameters. The response will\n   *   contain information for the valid projects, issue types, or project and issue type combinations requested. Note\n   *   that invalid project, issue type, or project and issue type combinations do not generate errors.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Create\n   *   issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMeta<T = Models.IssueCreateMetadata>(\n    parameters: Parameters.GetCreateIssueMeta | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * @deprecated Returns details of projects, issue types within projects, and, when requested, the create screen fields\n   *   for each issue type for the user. Use the information to populate the requests in [ Create\n   *   issue](#api-rest-api-2-issue-post) and [Create issues](#api-rest-api-2-issue-bulk-post).\n   *\n   *   Deprecated, see [Create Issue Meta Endpoint Deprecation\n   *   Notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1304).\n   *\n   *   The request can be restricted to specific projects or issue types using the query parameters. The response will\n   *   contain information for the valid projects, issue types, or project and issue type combinations requested. Note\n   *   that invalid project, issue type, or project and issue type combinations do not generate errors.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Create\n   *   issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMeta<T = Models.IssueCreateMetadata>(\n    parameters?: Parameters.GetCreateIssueMeta,\n    callback?: never,\n  ): Promise<T>;\n  async getCreateIssueMeta<T = Models.IssueCreateMetadata>(\n    parameters?: Parameters.GetCreateIssueMeta,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue/createmeta',\n      method: 'GET',\n      params: {\n        projectIds: parameters?.projectIds,\n        projectKeys: parameters?.projectKeys,\n        issuetypeIds: parameters?.issuetypeIds,\n        issuetypeNames: parameters?.issuetypeNames,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a page of issue type metadata for a specified project. Use the information to populate the requests in [\n   * Create issue](#api-rest-api-2-issue-post) and [Create issues](#api-rest-api-2-issue-bulk-post).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Create\n   * issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMetaIssueTypes<T = Models.PageOfCreateMetaIssueTypes>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypes,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a page of issue type metadata for a specified project. Use the information to populate the requests in [\n   * Create issue](#api-rest-api-2-issue-post) and [Create issues](#api-rest-api-2-issue-bulk-post).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Create\n   * issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMetaIssueTypes<T = Models.PageOfCreateMetaIssueTypes>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypes,\n    callback?: never,\n  ): Promise<T>;\n  async getCreateIssueMetaIssueTypes<T = Models.PageOfCreateMetaIssueTypes>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/createmeta/${parameters.projectIdOrKey}/issuetypes`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a page of field metadata for a specified project and issuetype id. Use the information to populate the\n   * requests in [ Create issue](#api-rest-api-2-issue-post) and [Create issues](#api-rest-api-2-issue-bulk-post).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Create\n   * issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMetaIssueTypeId<T = Models.PageOfCreateMetaIssueTypeWithField>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypeId,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a page of field metadata for a specified project and issuetype id. Use the information to populate the\n   * requests in [ Create issue](#api-rest-api-2-issue-post) and [Create issues](#api-rest-api-2-issue-bulk-post).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Create\n   * issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMetaIssueTypeId<T = Models.PageOfCreateMetaIssueTypeWithField>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypeId,\n    callback?: never,\n  ): Promise<T>;\n  async getCreateIssueMetaIssueTypeId<T = Models.PageOfCreateMetaIssueTypeWithField>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypeId,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/createmeta/${parameters.projectIdOrKey}/issuetypes/${parameters.issueTypeId}`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all issues breaching and approaching per-issue limits.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) is required for the project the\n   *   issues are in. Results may be incomplete otherwise\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueLimitReport<T = Models.IssueLimitReport>(\n    parameters: Parameters.GetIssueLimitReport | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all issues breaching and approaching per-issue limits.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) is required for the project the\n   *   issues are in. Results may be incomplete otherwise\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueLimitReport<T = Models.IssueLimitReport>(\n    parameters?: Parameters.GetIssueLimitReport,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueLimitReport<T = Models.IssueLimitReport>(\n    parameters?: Parameters.GetIssueLimitReport,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue/limit/report',\n      method: 'GET',\n      params: {\n        isReturningKeys: parameters?.isReturningKeys,\n      },\n      data: {\n        issuesApproachingLimitParams: parameters?.issuesApproachingLimitParams,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Enables admins to unarchive up to 1000 issues in a single request using issue ID/key, returning details of the\n   * issue(s) unarchived in the process and the errors encountered, if any.\n   *\n   * **Note that:**\n   *\n   * - You can't unarchive subtasks directly, only through their parent issues\n   * - You can only unarchive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   */\n  async unarchiveIssues<T = Models.IssueArchivalSync>(\n    parameters: Parameters.UnarchiveIssues,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Enables admins to unarchive up to 1000 issues in a single request using issue ID/key, returning details of the\n   * issue(s) unarchived in the process and the errors encountered, if any.\n   *\n   * **Note that:**\n   *\n   * - You can't unarchive subtasks directly, only through their parent issues\n   * - You can only unarchive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   */\n  async unarchiveIssues<T = Models.IssueArchivalSync>(\n    parameters: Parameters.UnarchiveIssues,\n    callback?: never,\n  ): Promise<T>;\n  async unarchiveIssues<T = Models.IssueArchivalSync>(\n    parameters: Parameters.UnarchiveIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issue/unarchive',\n      method: 'PUT',\n      data: {\n        issueIdsOrKeys: parameters.issueIdsOrKeys,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the details for an issue.\n   *\n   * The issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive\n   * search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or\n   * other redirect is **not** returned. The issue key returned in the response is the key of the issue found.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssue<T = Models.Issue>(parameters: Parameters.GetIssue | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the details for an issue.\n   *\n   * The issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive\n   * search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or\n   * other redirect is **not** returned. The issue key returned in the response is the key of the issue found.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssue<T = Models.Issue>(parameters: Parameters.GetIssue | string, callback?: never): Promise<T>;\n  async getIssue<T = Models.Issue>(\n    parameters: Parameters.GetIssue | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}`,\n      method: 'GET',\n      params: {\n        fields: typeof parameters !== 'string' ? parameters.fields : undefined,\n        fieldsByKeys: typeof parameters !== 'string' ? parameters.fieldsByKeys : undefined,\n        expand: typeof parameters !== 'string' ? parameters.expand : undefined,\n        properties: typeof parameters !== 'string' ? parameters.properties : undefined,\n        updateHistory: typeof parameters !== 'string' ? parameters.updateHistory : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Edits an issue. Issue properties may be updated as part of the edit. Please note that issue transition is not\n   * supported and is ignored here. To transition an issue, please use [Transition\n   * issue](#api-rest-api-2-issue-issueIdOrKey-transitions-post).\n   *\n   * The edits to the issue's fields are defined using `update` and `fields`. The fields that can be edited are\n   * determined using [ Get edit issue metadata](#api-rest-api-2-issue-issueIdOrKey-editmeta-get).\n   *\n   * The parent field may be set by key or ID. For standard issue types, the parent may be removed by setting\n   * `update.parent.set.none` to _true_.\n   *\n   * Connect apps having an app user with _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), can override the screen security\n   * configuration using `overrideScreenSecurity` and `overrideEditableFlag`.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async editIssue<T = void>(parameters: Parameters.EditIssue, callback: Callback<T>): Promise<void>;\n  /**\n   * Edits an issue. Issue properties may be updated as part of the edit. Please note that issue transition is not\n   * supported and is ignored here. To transition an issue, please use [Transition\n   * issue](#api-rest-api-2-issue-issueIdOrKey-transitions-post).\n   *\n   * The edits to the issue's fields are defined using `update` and `fields`. The fields that can be edited are\n   * determined using [ Get edit issue metadata](#api-rest-api-2-issue-issueIdOrKey-editmeta-get).\n   *\n   * The parent field may be set by key or ID. For standard issue types, the parent may be removed by setting\n   * `update.parent.set.none` to _true_.\n   *\n   * Connect apps having an app user with _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), can override the screen security\n   * configuration using `overrideScreenSecurity` and `overrideEditableFlag`.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async editIssue<T = void>(parameters: Parameters.EditIssue, callback?: never): Promise<T>;\n  async editIssue<T = void>(parameters: Parameters.EditIssue, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}`,\n      method: 'PUT',\n      params: {\n        notifyUsers: parameters.notifyUsers,\n        overrideScreenSecurity: parameters.overrideScreenSecurity,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n        returnIssue: parameters.returnIssue,\n        expand: parameters.expand,\n      },\n      data: {\n        fields: parameters.fields,\n        historyMetadata: parameters.historyMetadata,\n        properties: parameters.properties,\n        transition: parameters.transition,\n        update: parameters.update,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue.\n   *\n   * An issue cannot be deleted if it has one or more subtasks. To delete an issue with subtasks, set `deleteSubtasks`.\n   * This causes the issue's subtasks to be deleted with the issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Delete issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteIssue<T = void>(parameters: Parameters.DeleteIssue | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue.\n   *\n   * An issue cannot be deleted if it has one or more subtasks. To delete an issue with subtasks, set `deleteSubtasks`.\n   * This causes the issue's subtasks to be deleted with the issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Delete issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteIssue<T = void>(parameters: Parameters.DeleteIssue | string, callback?: never): Promise<T>;\n  async deleteIssue<T = void>(parameters: Parameters.DeleteIssue | string, callback?: Callback<T>): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}`,\n      method: 'DELETE',\n      params: {\n        deleteSubtasks: typeof parameters !== 'string' ? parameters.deleteSubtasks : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns an issue to a user. Use this operation when the calling user does not have the _Edit Issues_ permission but\n   * has the _Assign issue_ permission for the project that the issue is in.\n   *\n   * If `name` or `accountId` is set to:\n   *\n   * - `\"-1\"`, the issue is assigned to the default assignee for the project.\n   * - `null`, the issue is set to unassigned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ and _Assign Issues_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async assignIssue<T = void>(parameters: Parameters.AssignIssue, callback: Callback<T>): Promise<void>;\n  /**\n   * Assigns an issue to a user. Use this operation when the calling user does not have the _Edit Issues_ permission but\n   * has the _Assign issue_ permission for the project that the issue is in.\n   *\n   * If `name` or `accountId` is set to:\n   *\n   * - `\"-1\"`, the issue is assigned to the default assignee for the project.\n   * - `null`, the issue is set to unassigned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ and _Assign Issues_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async assignIssue<T = void>(parameters: Parameters.AssignIssue, callback?: never): Promise<T>;\n  async assignIssue<T = void>(parameters: Parameters.AssignIssue, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/assignee`,\n      method: 'PUT',\n      data: {\n        accountId: parameters.accountId,\n        accountType: parameters.accountType,\n        active: parameters.active,\n        applicationRoles: parameters.applicationRoles,\n        avatarUrls: parameters.avatarUrls,\n        displayName: parameters.displayName,\n        emailAddress: parameters.emailAddress,\n        expand: parameters.expand,\n        groups: parameters.groups,\n        key: parameters.key,\n        locale: parameters.locale,\n        name: parameters.name,\n        self: parameters.self,\n        timeZone: parameters.timeZone,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * changelogs for an issue sorted by date, starting from the oldest.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getChangeLogs<T = Models.PageChangelog>(\n    parameters: Parameters.GetChangeLogs | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * changelogs for an issue sorted by date, starting from the oldest.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getChangeLogs<T = Models.PageChangelog>(\n    parameters: Parameters.GetChangeLogs | string,\n    callback?: never,\n  ): Promise<T>;\n  async getChangeLogs<T = Models.PageChangelog>(\n    parameters: Parameters.GetChangeLogs | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/changelog`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' ? parameters.startAt : undefined,\n        maxResults: typeof parameters !== 'string' ? parameters.maxResults : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns changelogs for an issue specified by a list of changelog IDs.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getChangeLogsByIds<T = Models.PageOfChangelogs>(\n    parameters: Parameters.GetChangeLogsByIds,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns changelogs for an issue specified by a list of changelog IDs.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getChangeLogsByIds<T = Models.PageOfChangelogs>(\n    parameters: Parameters.GetChangeLogsByIds,\n    callback?: never,\n  ): Promise<T>;\n  async getChangeLogsByIds<T = Models.PageOfChangelogs>(\n    parameters: Parameters.GetChangeLogsByIds,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/changelog/list`,\n      method: 'POST',\n      data: {\n        changelogIds: parameters.changelogIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the edit screen fields for an issue that are visible to and editable by the user. Use the information to\n   * populate the requests in [Edit issue](#api-rest-api-2-issue-issueIdOrKey-put).\n   *\n   * This endpoint will check for these conditions:\n   *\n   * 1. Field is available on a field screen - through screen, screen scheme, issue type screen scheme, and issue type\n   *    scheme configuration. `overrideScreenSecurity=true` skips this condition.\n   * 2. Field is visible in the [field\n   *    configuration](https://support.atlassian.com/jira-cloud-administration/docs/change-a-field-configuration/).\n   *    `overrideScreenSecurity=true` skips this condition.\n   * 3. Field is shown on the issue: each field has different conditions here. For example: Attachment field only shows if\n   *    attachments are enabled. Assignee only shows if user has permissions to assign the issue.\n   * 4. If a field is custom then it must have valid custom field context, applicable for its project and issue type. All\n   *    system fields are assumed to have context in all projects and all issue types.\n   * 5. Issue has a project, issue type, and status defined.\n   * 6. Issue is assigned to a valid workflow, and the current status has assigned a workflow step.\n   *    `overrideEditableFlag=true` skips this condition.\n   * 7. The current workflow step is editable. This is true by default, but [can be disabled by\n   *    setting](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) the\n   *    `jira.issue.editable` property to `false`. `overrideEditableFlag=true` skips this condition.\n   * 8. User has [Edit issues\n   *    permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/).\n   * 9. Workflow permissions allow editing a field. This is true by default but [can be\n   *    modified](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) using\n   *    `jira.permission.*` workflow properties.\n   *\n   * Fields hidden using [Issue layout settings\n   * page](https://support.atlassian.com/jira-software-cloud/docs/configure-field-layout-in-the-issue-view/) remain\n   * editable.\n   *\n   * Connect apps having an app user with _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), can return additional details using:\n   *\n   * - `overrideScreenSecurity` When this flag is `true`, then this endpoint skips checking if fields are available\n   *   through screens, and field configuration (conditions 1. and 2. from the list above).\n   * - `overrideEditableFlag` When this flag is `true`, then this endpoint skips checking if workflow is present and if\n   *   the current step is editable (conditions 6. and 7. from the list above).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * Note: For any fields to be editable the user must have the _Edit issues_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the issue.\n   */\n  async getEditIssueMeta<T = Models.IssueUpdateMetadata>(\n    parameters: Parameters.GetEditIssueMeta | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the edit screen fields for an issue that are visible to and editable by the user. Use the information to\n   * populate the requests in [Edit issue](#api-rest-api-2-issue-issueIdOrKey-put).\n   *\n   * This endpoint will check for these conditions:\n   *\n   * 1. Field is available on a field screen - through screen, screen scheme, issue type screen scheme, and issue type\n   *    scheme configuration. `overrideScreenSecurity=true` skips this condition.\n   * 2. Field is visible in the [field\n   *    configuration](https://support.atlassian.com/jira-cloud-administration/docs/change-a-field-configuration/).\n   *    `overrideScreenSecurity=true` skips this condition.\n   * 3. Field is shown on the issue: each field has different conditions here. For example: Attachment field only shows if\n   *    attachments are enabled. Assignee only shows if user has permissions to assign the issue.\n   * 4. If a field is custom then it must have valid custom field context, applicable for its project and issue type. All\n   *    system fields are assumed to have context in all projects and all issue types.\n   * 5. Issue has a project, issue type, and status defined.\n   * 6. Issue is assigned to a valid workflow, and the current status has assigned a workflow step.\n   *    `overrideEditableFlag=true` skips this condition.\n   * 7. The current workflow step is editable. This is true by default, but [can be disabled by\n   *    setting](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) the\n   *    `jira.issue.editable` property to `false`. `overrideEditableFlag=true` skips this condition.\n   * 8. User has [Edit issues\n   *    permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/).\n   * 9. Workflow permissions allow editing a field. This is true by default but [can be\n   *    modified](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) using\n   *    `jira.permission.*` workflow properties.\n   *\n   * Fields hidden using [Issue layout settings\n   * page](https://support.atlassian.com/jira-software-cloud/docs/configure-field-layout-in-the-issue-view/) remain\n   * editable.\n   *\n   * Connect apps having an app user with _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), can return additional details using:\n   *\n   * - `overrideScreenSecurity` When this flag is `true`, then this endpoint skips checking if fields are available\n   *   through screens, and field configuration (conditions 1. and 2. from the list above).\n   * - `overrideEditableFlag` When this flag is `true`, then this endpoint skips checking if workflow is present and if\n   *   the current step is editable (conditions 6. and 7. from the list above).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * Note: For any fields to be editable the user must have the _Edit issues_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the issue.\n   */\n  async getEditIssueMeta<T = Models.IssueUpdateMetadata>(\n    parameters: Parameters.GetEditIssueMeta | string,\n    callback?: never,\n  ): Promise<T>;\n  async getEditIssueMeta<T = Models.IssueUpdateMetadata>(\n    parameters: Parameters.GetEditIssueMeta | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/editmeta`,\n      method: 'GET',\n      params: {\n        overrideScreenSecurity: typeof parameters !== 'string' ? parameters.overrideScreenSecurity : undefined,\n        overrideEditableFlag: typeof parameters !== 'string' ? parameters.overrideEditableFlag : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an email notification for an issue and adds it to the mail queue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async notify<T = void>(parameters: Parameters.Notify, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates an email notification for an issue and adds it to the mail queue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async notify<T = void>(parameters: Parameters.Notify, callback?: never): Promise<T>;\n  async notify<T = void>(parameters: Parameters.Notify, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/notify`,\n      method: 'POST',\n      data: {\n        htmlBody: parameters.htmlBody,\n        restrict: parameters.restrict,\n        subject: parameters.subject,\n        textBody: parameters.textBody,\n        to: parameters.to,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns either all transitions or a transition that can be performed by the user on an issue, based on the issue's\n   * status.\n   *\n   * Note, if a request is made for a transition that does not exist or cannot be performed on the issue, given its\n   * status, the response will return any empty transitions list.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required: A list or\n   * transition is returned only when the user has:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * However, if the user does not have the _Transition issues_ [ project\n   * permission](https://confluence.atlassian.com/x/yodKLg) the response will not list any transitions.\n   */\n  async getTransitions<T = Models.Transitions>(\n    parameters: Parameters.GetTransitions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns either all transitions or a transition that can be performed by the user on an issue, based on the issue's\n   * status.\n   *\n   * Note, if a request is made for a transition that does not exist or cannot be performed on the issue, given its\n   * status, the response will return any empty transitions list.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required: A list or\n   * transition is returned only when the user has:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * However, if the user does not have the _Transition issues_ [ project\n   * permission](https://confluence.atlassian.com/x/yodKLg) the response will not list any transitions.\n   */\n  async getTransitions<T = Models.Transitions>(\n    parameters: Parameters.GetTransitions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getTransitions<T = Models.Transitions>(\n    parameters: Parameters.GetTransitions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${issueIdOrKey}/transitions`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' ? parameters.expand : undefined,\n        transitionId: typeof parameters !== 'string' ? parameters.transitionId : undefined,\n        skipRemoteOnlyCondition: typeof parameters !== 'string' ? parameters.skipRemoteOnlyCondition : undefined,\n        includeUnavailableTransitions:\n          typeof parameters !== 'string' ? parameters.includeUnavailableTransitions : undefined,\n        sortByOpsBarAndStatus: typeof parameters !== 'string' ? parameters.sortByOpsBarAndStatus : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen.\n   *\n   * SortByCategory To update the fields on the transition screen, specify the fields in the `fields` or `update`\n   * parameters in the request body. Get details about the fields using [ Get\n   * transitions](#api-rest-api-2-issue-issueIdOrKey-transitions-get) with the `transitions.fields` expand.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Transition issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async doTransition<T = void>(parameters: Parameters.DoTransition, callback: Callback<T>): Promise<void>;\n  /**\n   * Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen.\n   *\n   * SortByCategory To update the fields on the transition screen, specify the fields in the `fields` or `update`\n   * parameters in the request body. Get details about the fields using [ Get\n   * transitions](#api-rest-api-2-issue-issueIdOrKey-transitions-get) with the `transitions.fields` expand.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Transition issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async doTransition<T = void>(parameters: Parameters.DoTransition, callback?: never): Promise<T>;\n  async doTransition<T = void>(parameters: Parameters.DoTransition, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/issue/${parameters.issueIdOrKey}/transitions`,\n      method: 'POST',\n      data: {\n        fields: parameters.fields,\n        historyMetadata: parameters.historyMetadata,\n        properties: parameters.properties,\n        transition: parameters.transition,\n        update: parameters.update,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Enables admins to retrieve details of all archived issues. Upon a successful request, the admin who submitted it\n   * will receive an email with a link to download a CSV file with the issue details.\n   *\n   * Note that this API only exports the values of system fields and archival-specific fields (`ArchivedBy` and\n   * `ArchivedDate`). Custom fields aren't supported.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   *\n   * **Rate limiting:** Only a single request can be active at any given time.\n   */\n  async exportArchivedIssues<T = Models.ExportArchivedIssuesTaskProgress>(\n    parameters: Parameters.ExportArchivedIssues,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Enables admins to retrieve details of all archived issues. Upon a successful request, the admin who submitted it\n   * will receive an email with a link to download a CSV file with the issue details.\n   *\n   * Note that this API only exports the values of system fields and archival-specific fields (`ArchivedBy` and\n   * `ArchivedDate`). Custom fields aren't supported.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   *\n   * **Rate limiting:** Only a single request can be active at any given time.\n   */\n  async exportArchivedIssues<T = Models.ExportArchivedIssuesTaskProgress>(\n    parameters: Parameters.ExportArchivedIssues,\n    callback?: never,\n  ): Promise<T>;\n  async exportArchivedIssues<T = Models.ExportArchivedIssuesTaskProgress>(\n    parameters: Parameters.ExportArchivedIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/issues/archive/export',\n      method: 'PUT',\n      data: {\n        archivedBy: parameters.archivedBy,\n        archivedDateRange: parameters.archivedDateRange,\n        issueTypes: parameters.issueTypes,\n        projects: parameters.projects,\n        reporters: parameters.reporters,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class JiraExpressions {\n  constructor(private client: Client) {}\n\n  /**\n   * Analyses and validates Jira expressions.\n   *\n   * As an experimental feature, this operation can also attempt to type-check the expressions.\n   *\n   * Learn more about Jira expressions in the\n   * [documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None.\n   */\n  async analyseExpression<T = Models.JiraExpressionsAnalysis>(\n    parameters: Parameters.AnalyseExpression | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Analyses and validates Jira expressions.\n   *\n   * As an experimental feature, this operation can also attempt to type-check the expressions.\n   *\n   * Learn more about Jira expressions in the\n   * [documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None.\n   */\n  async analyseExpression<T = Models.JiraExpressionsAnalysis>(\n    parameters?: Parameters.AnalyseExpression,\n    callback?: never,\n  ): Promise<T>;\n  async analyseExpression<T = Models.JiraExpressionsAnalysis>(\n    parameters?: Parameters.AnalyseExpression,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/expression/analyse',\n      method: 'POST',\n      params: {\n        check: parameters?.check,\n      },\n      data: {\n        contextVariables: parameters?.contextVariables,\n        expressions: parameters?.expressions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Evaluates a Jira expression and returns its value.\n   *\n   * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible\n   * way. Consult the [Jira expressions\n   * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details.\n   *\n   * #### Context variables\n   *\n   * The following context variables are available to Jira expressions evaluated by this resource. Their presence\n   * depends on various factors; usually you need to manually request them in the context object sent in the payload,\n   * but some of them are added automatically under certain conditions.\n   *\n   * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The\n   *   current user. Always available and equal to `null` if the request is anonymous.\n   * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The\n   *   [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request.\n   *   Available only for authenticated requests made by Connect Apps (read more here: [Authentication for Connect\n   *   apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)).\n   * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The\n   *   current issue. Available only when the issue is provided in the request context object.\n   * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of\n   *   [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A\n   *   collection of issues matching a JQL query. Available only when JQL is provided in the request context object.\n   * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)):\n   *   The current project. Available only when the project is provided in the request context object.\n   * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)):\n   *   The current sprint. Available only when the sprint is provided in the request context object.\n   * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The\n   *   current board. Available only when the board is provided in the request context object.\n   * - `serviceDesk`\n   *   ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)):\n   *   The current service desk. Available only when the service desk is provided in the request context object.\n   * - `customerRequest`\n   *   ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)):\n   *   The current customer request. Available only when the customer request is provided in the request context\n   *   object.\n   *\n   * Also, custom context variables can be passed in the request with their types. Those variables can be accessed by\n   * key in the Jira expression. These variable types are available for use in a custom context:\n   *\n   * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)\n   *   specified as an Atlassian account ID.\n   * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)\n   *   specified by ID or key. All the fields of the issue object are available in the Jira expression.\n   * - `json`: A JSON object containing custom content.\n   * - `list`: A JSON list of `user`, `issue`, or `json` variable types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None.\n   * However, an expression may return different results for different users depending on their permissions. For\n   * example, different users may see different comments on the same issue.\\\n   * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or\n   * fields (for example, `issue.sprint`).\n   */\n  async evaluateJiraExpression<T = Models.JiraExpressionResult>(\n    parameters: Parameters.EvaluateJiraExpression,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Evaluates a Jira expression and returns its value.\n   *\n   * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible\n   * way. Consult the [Jira expressions\n   * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details.\n   *\n   * #### Context variables\n   *\n   * The following context variables are available to Jira expressions evaluated by this resource. Their presence\n   * depends on various factors; usually you need to manually request them in the context object sent in the payload,\n   * but some of them are added automatically under certain conditions.\n   *\n   * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The\n   *   current user. Always available and equal to `null` if the request is anonymous.\n   * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The\n   *   [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request.\n   *   Available only for authenticated requests made by Connect Apps (read more here: [Authentication for Connect\n   *   apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)).\n   * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The\n   *   current issue. Available only when the issue is provided in the request context object.\n   * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of\n   *   [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A\n   *   collection of issues matching a JQL query. Available only when JQL is provided in the request context object.\n   * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)):\n   *   The current project. Available only when the project is provided in the request context object.\n   * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)):\n   *   The current sprint. Available only when the sprint is provided in the request context object.\n   * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The\n   *   current board. Available only when the board is provided in the request context object.\n   * - `serviceDesk`\n   *   ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)):\n   *   The current service desk. Available only when the service desk is provided in the request context object.\n   * - `customerRequest`\n   *   ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)):\n   *   The current customer request. Available only when the customer request is provided in the request context\n   *   object.\n   *\n   * Also, custom context variables can be passed in the request with their types. Those variables can be accessed by\n   * key in the Jira expression. These variable types are available for use in a custom context:\n   *\n   * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)\n   *   specified as an Atlassian account ID.\n   * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)\n   *   specified by ID or key. All the fields of the issue object are available in the Jira expression.\n   * - `json`: A JSON object containing custom content.\n   * - `list`: A JSON list of `user`, `issue`, or `json` variable types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None.\n   * However, an expression may return different results for different users depending on their permissions. For\n   * example, different users may see different comments on the same issue.\\\n   * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or\n   * fields (for example, `issue.sprint`).\n   */\n  async evaluateJiraExpression<T = Models.JiraExpressionResult>(\n    parameters: Parameters.EvaluateJiraExpression,\n    callback?: never,\n  ): Promise<T>;\n  async evaluateJiraExpression<T = Models.JiraExpressionResult>(\n    parameters: Parameters.EvaluateJiraExpression,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/expression/eval',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        context: parameters.context,\n        expression: parameters.expression,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Evaluates a Jira expression and returns its value. The difference between this and `eval` is that this endpoint\n   * uses the enhanced search API when evaluating JQL queries. This API is eventually consistent, unlike the strongly\n   * consistent `eval` API. This allows for better performance and scalability. In addition, this API's response for JQL\n   * evaluation is based on a scrolling view (backed by a `nextPageToken`) instead of a paginated view (backed by\n   * `startAt` and `totalCount`).\n   *\n   * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible\n   * way. Consult the [Jira expressions\n   * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details.\n   *\n   * #### Context variables\n   *\n   * The following context variables are available to Jira expressions evaluated by this resource. Their presence\n   * depends on various factors; usually you need to manually request them in the context object sent in the payload,\n   * but some of them are added automatically under certain conditions.\n   *\n   * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The\n   *   current user. Always available and equal to `null` if the request is anonymous.\n   * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The\n   *   [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request.\n   *   Available only for authenticated requests made by Connect apps (read more here: [Authentication for Connect\n   *   apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)).\n   * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The\n   *   current issue. Available only when the issue is provided in the request context object.\n   * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of\n   *   [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A\n   *   collection of issues matching a JQL query. Available only when JQL is provided in the request context object.\n   * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)):\n   *   The current project. Available only when the project is provided in the request context object.\n   * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)):\n   *   The current sprint. Available only when the sprint is provided in the request context object.\n   * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The\n   *   current board. Available only when the board is provided in the request context object.\n   * - `serviceDesk`\n   *   ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)):\n   *   The current service desk. Available only when the service desk is provided in the request context object.\n   * - `customerRequest`\n   *   ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)):\n   *   The current customer request. Available only when the customer request is provided in the request context\n   *   object.\n   *\n   * In addition, you can pass custom context variables along with their types. You can then access them from the Jira\n   * expression by key. You can use the following variables in a custom context:\n   *\n   * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)\n   *   specified as an Atlassian account ID.\n   * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)\n   *   specified by ID or key. All the fields of the issue object are available in the Jira expression.\n   * - `json`: A JSON object containing custom content.\n   * - `list`: A JSON list of `user`, `issue`, or `json` variable types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None.\n   * However, an expression may return different results for different users depending on their permissions. For\n   * example, different users may see different comments on the same issue.\\\n   * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or\n   * fields (for example, `issue.sprint`).\n   */\n  async evaluateJiraExpressionUsingEnhancedSearch<T = Models.EvaluatedJiraExpression>(\n    parameters: Parameters.EvaluateJiraExpressionUsingEnhancedSearch,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Evaluates a Jira expression and returns its value. The difference between this and `eval` is that this endpoint\n   * uses the enhanced search API when evaluating JQL queries. This API is eventually consistent, unlike the strongly\n   * consistent `eval` API. This allows for better performance and scalability. In addition, this API's response for JQL\n   * evaluation is based on a scrolling view (backed by a `nextPageToken`) instead of a paginated view (backed by\n   * `startAt` and `totalCount`).\n   *\n   * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible\n   * way. Consult the [Jira expressions\n   * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details.\n   *\n   * #### Context variables\n   *\n   * The following context variables are available to Jira expressions evaluated by this resource. Their presence\n   * depends on various factors; usually you need to manually request them in the context object sent in the payload,\n   * but some of them are added automatically under certain conditions.\n   *\n   * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The\n   *   current user. Always available and equal to `null` if the request is anonymous.\n   * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The\n   *   [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request.\n   *   Available only for authenticated requests made by Connect apps (read more here: [Authentication for Connect\n   *   apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)).\n   * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The\n   *   current issue. Available only when the issue is provided in the request context object.\n   * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of\n   *   [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A\n   *   collection of issues matching a JQL query. Available only when JQL is provided in the request context object.\n   * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)):\n   *   The current project. Available only when the project is provided in the request context object.\n   * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)):\n   *   The current sprint. Available only when the sprint is provided in the request context object.\n   * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The\n   *   current board. Available only when the board is provided in the request context object.\n   * - `serviceDesk`\n   *   ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)):\n   *   The current service desk. Available only when the service desk is provided in the request context object.\n   * - `customerRequest`\n   *   ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)):\n   *   The current customer request. Available only when the customer request is provided in the request context\n   *   object.\n   *\n   * In addition, you can pass custom context variables along with their types. You can then access them from the Jira\n   * expression by key. You can use the following variables in a custom context:\n   *\n   * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)\n   *   specified as an Atlassian account ID.\n   * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)\n   *   specified by ID or key. All the fields of the issue object are available in the Jira expression.\n   * - `json`: A JSON object containing custom content.\n   * - `list`: A JSON list of `user`, `issue`, or `json` variable types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required**: None.\n   * However, an expression may return different results for different users depending on their permissions. For\n   * example, different users may see different comments on the same issue.\\\n   * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or\n   * fields (for example, `issue.sprint`).\n   */\n  async evaluateJiraExpressionUsingEnhancedSearch<T = Models.EvaluatedJiraExpression>(\n    parameters: Parameters.EvaluateJiraExpressionUsingEnhancedSearch,\n    callback?: never,\n  ): Promise<T>;\n  async evaluateJiraExpressionUsingEnhancedSearch<T = Models.EvaluatedJiraExpression>(\n    parameters: Parameters.EvaluateJiraExpressionUsingEnhancedSearch,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/expression/evaluate',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        expression: parameters.expression,\n        context: parameters.context,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class JiraSettings {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all application properties or an application property.\n   *\n   * If you specify a value for the `key` parameter, then an application property is returned as an object (not in an\n   * array). Otherwise, an array of all editable application properties is returned. See [Set application\n   * property](#api-rest-api-2-application-properties-id-put) for descriptions of editable properties.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApplicationProperty<T = Models.ApplicationProperty[]>(\n    parameters: Parameters.GetApplicationProperty | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all application properties or an application property.\n   *\n   * If you specify a value for the `key` parameter, then an application property is returned as an object (not in an\n   * array). Otherwise, an array of all editable application properties is returned. See [Set application\n   * property](#api-rest-api-2-application-properties-id-put) for descriptions of editable properties.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApplicationProperty<T = Models.ApplicationProperty[]>(\n    parameters?: Parameters.GetApplicationProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getApplicationProperty<T = Models.ApplicationProperty[]>(\n    parameters?: Parameters.GetApplicationProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/application-properties',\n      method: 'GET',\n      params: {\n        key: parameters?.key,\n        permissionLevel: parameters?.permissionLevel,\n        keyFilter: parameters?.keyFilter,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the application properties that are accessible on the _Advanced Settings_ page. To navigate to the\n   * _Advanced Settings_ page in Jira, choose the Jira icon > **Jira settings** > **System**, **General Configuration**\n   * and then click **Advanced Settings** (in the upper right).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAdvancedSettings<T = Models.ApplicationProperty[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the application properties that are accessible on the _Advanced Settings_ page. To navigate to the\n   * _Advanced Settings_ page in Jira, choose the Jira icon > **Jira settings** > **System**, **General Configuration**\n   * and then click **Advanced Settings** (in the upper right).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAdvancedSettings<T = Models.ApplicationProperty[]>(callback?: never): Promise<T>;\n  async getAdvancedSettings<T = Models.ApplicationProperty[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/application-properties/advanced-settings',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the value of an application property. For example, you can change the value of the `jira.clone.prefix` from\n   * its default value of _CLONE -_ to _Clone -_ if you prefer sentence case capitalization. Editable properties are\n   * described below along with their default values.\n   *\n   * #### Advanced settings\n   *\n   * The advanced settings below are also accessible in [Jira](https://confluence.atlassian.com/x/vYXKM).\n   *\n   * | Key                                       | Description                                                                                                                                             | Default value            |\n   * | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |\n   * | `jira.clone.prefix`                       | The string of text prefixed to the title of a cloned issue.                                                                                             | `CLONE -`                |\n   * | `jira.date.picker.java.format`            | The date format for the Java (server-side) generated dates. This must be the same as the `jira.date.picker.javascript.format` format setting.           | `d/MMM/yy`               |\n   * | `jira.date.picker.javascript.format`      | The date format for the JavaScript (client-side) generated dates. This must be the same as the `jira.date.picker.java.format` format setting.           | `%e/%b/%y`               |\n   * | `jira.date.time.picker.java.format`       | The date format for the Java (server-side) generated date times. This must be the same as the `jira.date.time.picker.javascript.format` format setting. | `dd/MMM/yy h:mm a`       |\n   * | `jira.date.time.picker.javascript.format` | The date format for the JavaScript (client-side) generated date times. This must be the same as the `jira.date.time.picker.java.format` format setting. | `%e/%b/%y %I:%M %p`      |\n   * | `jira.issue.actions.order`                | The default order of actions (such as _Comments_ or _Change history_) displayed on the issue view.                                                      | `asc`                    |\n   * | `jira.view.issue.links.sort.order`        | The sort order of the list of issue links on the issue view.                                                                                            | `type, status, priority` |\n   * | `jira.comment.collapsing.minimum.hidden`  | The minimum number of comments required for comment collapsing to occur. A value of `0` disables comment collapsing.                                    | `4`                      |\n   * | `jira.newsletter.tip.delay.days`          | The number of days before a prompt to sign up to the Jira Insiders newsletter is shown. A value of `-1` disables this feature.                          | `7`                      |\n   *\n   * #### Look and feel\n   *\n   * The settings listed below adjust the [look and feel](https://confluence.atlassian.com/x/VwCLLg).\n   *\n   * | Key                                   | Description                                                                                                        | Default value                |\n   * | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------- |\n   * | `jira.lf.date.time`                   | The [ time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).          | `h:mm a`                     |\n   * | `jira.lf.date.day`                    | The [ day format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).           | `EEEE h:mm a`                |\n   * | `jira.lf.date.complete`               | The [ date and time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy h:mm a`           |\n   * | `jira.lf.date.dmy`                    | The [ date format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).          | `dd/MMM/yy`                  |\n   * | `jira.date.time.picker.use.iso8061`   | When enabled, sets Monday as the first day of the week in the date picker, as specified by the ISO8601 standard.   | `false`                      |\n   * | `jira.lf.logo.url`                    | The URL of the logo image file.                                                                                    | `/images/icon-jira-logo.png` |\n   * | `jira.lf.logo.show.application.title` | Controls the visibility of the application title on the sidebar.                                                   | `false`                      |\n   * | `jira.lf.favicon.url`                 | The URL of the favicon.                                                                                            | `/favicon.ico`               |\n   * | `jira.lf.favicon.hires.url`           | The URL of the high-resolution favicon.                                                                            | `/images/64jira.png`         |\n   * | `jira.lf.navigation.bgcolour`         | The background color of the sidebar.                                                                               | `#0747A6`                    |\n   * | `jira.lf.navigation.highlightcolour`  | The color of the text and logo of the sidebar.                                                                     | `#DEEBFF`                    |\n   * | `jira.lf.hero.button.base.bg.colour`  | The background color of the hero button.                                                                           | `#3b7fc4`                    |\n   * | `jira.title`                          | The text for the application title. The application title can also be set in _General settings_.                   | `Jira`                       |\n   * | `jira.option.globalsharing`           | Whether filters and dashboards can be shared with anyone signed into Jira.                                         | `true`                       |\n   * | `xflow.product.suggestions.enabled`   | Whether to expose product suggestions for other Atlassian products within Jira.                                    | `true`                       |\n   *\n   * #### Other settings\n   *\n   * | Key                                 | Description                                           | Default value |\n   * | ----------------------------------- | ----------------------------------------------------- | ------------- |\n   * | `jira.issuenav.criteria.autoupdate` | Whether instant updates to search criteria is active. | `true`        |\n   *\n   * _Note: Be careful when changing [application properties and advanced\n   * settings](https://confluence.atlassian.com/x/vYXKM)._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setApplicationProperty<T = Models.ApplicationProperty>(\n    parameters: Parameters.SetApplicationProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Changes the value of an application property. For example, you can change the value of the `jira.clone.prefix` from\n   * its default value of _CLONE -_ to _Clone -_ if you prefer sentence case capitalization. Editable properties are\n   * described below along with their default values.\n   *\n   * #### Advanced settings\n   *\n   * The advanced settings below are also accessible in [Jira](https://confluence.atlassian.com/x/vYXKM).\n   *\n   * | Key                                       | Description                                                                                                                                             | Default value            |\n   * | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |\n   * | `jira.clone.prefix`                       | The string of text prefixed to the title of a cloned issue.                                                                                             | `CLONE -`                |\n   * | `jira.date.picker.java.format`            | The date format for the Java (server-side) generated dates. This must be the same as the `jira.date.picker.javascript.format` format setting.           | `d/MMM/yy`               |\n   * | `jira.date.picker.javascript.format`      | The date format for the JavaScript (client-side) generated dates. This must be the same as the `jira.date.picker.java.format` format setting.           | `%e/%b/%y`               |\n   * | `jira.date.time.picker.java.format`       | The date format for the Java (server-side) generated date times. This must be the same as the `jira.date.time.picker.javascript.format` format setting. | `dd/MMM/yy h:mm a`       |\n   * | `jira.date.time.picker.javascript.format` | The date format for the JavaScript (client-side) generated date times. This must be the same as the `jira.date.time.picker.java.format` format setting. | `%e/%b/%y %I:%M %p`      |\n   * | `jira.issue.actions.order`                | The default order of actions (such as _Comments_ or _Change history_) displayed on the issue view.                                                      | `asc`                    |\n   * | `jira.view.issue.links.sort.order`        | The sort order of the list of issue links on the issue view.                                                                                            | `type, status, priority` |\n   * | `jira.comment.collapsing.minimum.hidden`  | The minimum number of comments required for comment collapsing to occur. A value of `0` disables comment collapsing.                                    | `4`                      |\n   * | `jira.newsletter.tip.delay.days`          | The number of days before a prompt to sign up to the Jira Insiders newsletter is shown. A value of `-1` disables this feature.                          | `7`                      |\n   *\n   * #### Look and feel\n   *\n   * The settings listed below adjust the [look and feel](https://confluence.atlassian.com/x/VwCLLg).\n   *\n   * | Key                                   | Description                                                                                                        | Default value                |\n   * | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------- |\n   * | `jira.lf.date.time`                   | The [ time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).          | `h:mm a`                     |\n   * | `jira.lf.date.day`                    | The [ day format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).           | `EEEE h:mm a`                |\n   * | `jira.lf.date.complete`               | The [ date and time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy h:mm a`           |\n   * | `jira.lf.date.dmy`                    | The [ date format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).          | `dd/MMM/yy`                  |\n   * | `jira.date.time.picker.use.iso8061`   | When enabled, sets Monday as the first day of the week in the date picker, as specified by the ISO8601 standard.   | `false`                      |\n   * | `jira.lf.logo.url`                    | The URL of the logo image file.                                                                                    | `/images/icon-jira-logo.png` |\n   * | `jira.lf.logo.show.application.title` | Controls the visibility of the application title on the sidebar.                                                   | `false`                      |\n   * | `jira.lf.favicon.url`                 | The URL of the favicon.                                                                                            | `/favicon.ico`               |\n   * | `jira.lf.favicon.hires.url`           | The URL of the high-resolution favicon.                                                                            | `/images/64jira.png`         |\n   * | `jira.lf.navigation.bgcolour`         | The background color of the sidebar.                                                                               | `#0747A6`                    |\n   * | `jira.lf.navigation.highlightcolour`  | The color of the text and logo of the sidebar.                                                                     | `#DEEBFF`                    |\n   * | `jira.lf.hero.button.base.bg.colour`  | The background color of the hero button.                                                                           | `#3b7fc4`                    |\n   * | `jira.title`                          | The text for the application title. The application title can also be set in _General settings_.                   | `Jira`                       |\n   * | `jira.option.globalsharing`           | Whether filters and dashboards can be shared with anyone signed into Jira.                                         | `true`                       |\n   * | `xflow.product.suggestions.enabled`   | Whether to expose product suggestions for other Atlassian products within Jira.                                    | `true`                       |\n   *\n   * #### Other settings\n   *\n   * | Key                                 | Description                                           | Default value |\n   * | ----------------------------------- | ----------------------------------------------------- | ------------- |\n   * | `jira.issuenav.criteria.autoupdate` | Whether instant updates to search criteria is active. | `true`        |\n   *\n   * _Note: Be careful when changing [application properties and advanced\n   * settings](https://confluence.atlassian.com/x/vYXKM)._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setApplicationProperty<T = Models.ApplicationProperty>(\n    parameters: Parameters.SetApplicationProperty,\n    callback?: never,\n  ): Promise<T>;\n  async setApplicationProperty<T = Models.ApplicationProperty>(\n    parameters: Parameters.SetApplicationProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/application-properties/${parameters.id}`,\n      method: 'PUT',\n      data: parameters.body,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the [global settings](https://confluence.atlassian.com/x/qYXKM) in Jira. These settings determine whether\n   * optional features (for example, subtasks, time tracking, and others) are enabled. If time tracking is enabled, this\n   * operation also returns the time tracking configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getConfiguration<T = Models.Configuration>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the [global settings](https://confluence.atlassian.com/x/qYXKM) in Jira. These settings determine whether\n   * optional features (for example, subtasks, time tracking, and others) are enabled. If time tracking is enabled, this\n   * operation also returns the time tracking configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getConfiguration<T = Models.Configuration>(callback?: never): Promise<T>;\n  async getConfiguration<T = Models.Configuration>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/configuration',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class JQL {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced\n   * searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions\n   * reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this\n   * information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom\n   * query builder.\n   *\n   * To filter visible field details by project or collapse non-unique fields by field type then [Get field reference\n   * data (POST)](#api-rest-api-2-jql-autocompletedata-post) can be used.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAutoComplete<T = Models.JQLReferenceData>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced\n   * searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions\n   * reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this\n   * information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom\n   * query builder.\n   *\n   * To filter visible field details by project or collapse non-unique fields by field type then [Get field reference\n   * data (POST)](#api-rest-api-2-jql-autocompletedata-post) can be used.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAutoComplete<T = Models.JQLReferenceData>(callback?: never): Promise<T>;\n  async getAutoComplete<T = Models.JQLReferenceData>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/jql/autocompletedata',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced\n   * searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions\n   * reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this\n   * information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom\n   * query builder.\n   *\n   * This operation can filter the custom fields returned by project. Invalid project IDs in `projectIds` are ignored.\n   * System fields are always returned.\n   *\n   * It can also return the collapsed field for custom fields. Collapsed fields enable searches to be performed across\n   * all fields with the same name and of the same field type. For example, the collapsed field `Component -\n   * Component[Dropdown]` enables dropdown fields `Component - cf[10061]` and `Component - cf[10062]` to be searched\n   * simultaneously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAutoCompletePost<T = Models.JQLReferenceData>(\n    parameters: Parameters.GetAutoCompletePost | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced\n   * searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions\n   * reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this\n   * information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom\n   * query builder.\n   *\n   * This operation can filter the custom fields returned by project. Invalid project IDs in `projectIds` are ignored.\n   * System fields are always returned.\n   *\n   * It can also return the collapsed field for custom fields. Collapsed fields enable searches to be performed across\n   * all fields with the same name and of the same field type. For example, the collapsed field `Component -\n   * Component[Dropdown]` enables dropdown fields `Component - cf[10061]` and `Component - cf[10062]` to be searched\n   * simultaneously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAutoCompletePost<T = Models.JQLReferenceData>(\n    parameters?: Parameters.GetAutoCompletePost,\n    callback?: never,\n  ): Promise<T>;\n  async getAutoCompletePost<T = Models.JQLReferenceData>(\n    parameters?: Parameters.GetAutoCompletePost,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/jql/autocompletedata',\n      method: 'POST',\n      data: {\n        includeCollapsedFields: parameters?.includeCollapsedFields,\n        projectIds: parameters?.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the JQL search auto complete suggestions for a field.\n   *\n   * Suggestions can be obtained by providing:\n   *\n   * - `fieldName` to get a list of all values for the field.\n   * - `fieldName` and `fieldValue` to get a list of values containing the text in `fieldValue`.\n   * - `fieldName` and `predicateName` to get a list of all predicate values for the field.\n   * - `fieldName`, `predicateName`, and `predicateValue` to get a list of predicate values containing the text in\n   *   `predicateValue`.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getFieldAutoCompleteForQueryString<T = Models.AutoCompleteSuggestions>(\n    parameters: Parameters.GetFieldAutoCompleteForQueryString | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the JQL search auto complete suggestions for a field.\n   *\n   * Suggestions can be obtained by providing:\n   *\n   * - `fieldName` to get a list of all values for the field.\n   * - `fieldName` and `fieldValue` to get a list of values containing the text in `fieldValue`.\n   * - `fieldName` and `predicateName` to get a list of all predicate values for the field.\n   * - `fieldName`, `predicateName`, and `predicateValue` to get a list of predicate values containing the text in\n   *   `predicateValue`.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getFieldAutoCompleteForQueryString<T = Models.AutoCompleteSuggestions>(\n    parameters?: Parameters.GetFieldAutoCompleteForQueryString,\n    callback?: never,\n  ): Promise<T>;\n  async getFieldAutoCompleteForQueryString<T = Models.AutoCompleteSuggestions>(\n    parameters?: Parameters.GetFieldAutoCompleteForQueryString,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/jql/autocompletedata/suggestions',\n      method: 'GET',\n      params: {\n        fieldName: parameters?.fieldName,\n        fieldValue: parameters?.fieldValue,\n        predicateName: parameters?.predicateName,\n        predicateValue: parameters?.predicateValue,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Parses and validates JQL queries.\n   *\n   * Validation is performed in context of the current user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async parseJqlQueries<T = Models.ParsedJqlQueries>(\n    parameters: Parameters.ParseJqlQueries,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Parses and validates JQL queries.\n   *\n   * Validation is performed in context of the current user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async parseJqlQueries<T = Models.ParsedJqlQueries>(\n    parameters: Parameters.ParseJqlQueries,\n    callback?: never,\n  ): Promise<T>;\n  async parseJqlQueries<T = Models.ParsedJqlQueries>(\n    parameters: Parameters.ParseJqlQueries,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/jql/parse',\n      method: 'POST',\n      params: {\n        validation: parameters.validation,\n      },\n      data: {\n        queries: parameters.queries,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Converts one or more JQL queries with user identifiers (username or user key) to equivalent JQL queries with\n   * account IDs.\n   *\n   * You may wish to use this operation if your system stores JQL queries and you want to make them GDPR-compliant. For\n   * more information about GDPR-related changes, see the [migration\n   * guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async migrateQueries<T = Models.ConvertedJQLQueries>(\n    parameters: Parameters.MigrateQueries | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Converts one or more JQL queries with user identifiers (username or user key) to equivalent JQL queries with\n   * account IDs.\n   *\n   * You may wish to use this operation if your system stores JQL queries and you want to make them GDPR-compliant. For\n   * more information about GDPR-related changes, see the [migration\n   * guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async migrateQueries<T = Models.ConvertedJQLQueries>(\n    parameters?: Parameters.MigrateQueries,\n    callback?: never,\n  ): Promise<T>;\n  async migrateQueries<T = Models.ConvertedJQLQueries>(\n    parameters?: Parameters.MigrateQueries,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/jql/pdcleaner',\n      method: 'POST',\n      data: {\n        queryStrings: parameters?.queryStrings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sanitizes one or more JQL queries by converting readable details into IDs where a user doesn't have permission to\n   * view the entity.\n   *\n   * For example, if the query contains the clause _project = 'Secret project'_, and a user does not have browse\n   * permission for the project \"Secret project\", the sanitized query replaces the clause with _project = 12345\"_ (where\n   * 12345 is the ID of the project). If a user has the required permission, the clause is not sanitized. If the account\n   * ID is null, sanitizing is performed for an anonymous user.\n   *\n   * Note that sanitization doesn't make the queries GDPR-compliant, because it doesn't remove user identifiers\n   * (username or user key). If you need to make queries GDPR-compliant, use [Convert user identifiers to account IDs in\n   * JQL\n   * queries](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-jql/#api-rest-api-2-jql-sanitize-post).\n   *\n   * Before sanitization each JQL query is parsed. The queries are returned in the same order that they were passed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async sanitiseJqlQueries<T = Models.SanitizedJqlQueries>(\n    parameters: Parameters.SanitiseJqlQueries | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sanitizes one or more JQL queries by converting readable details into IDs where a user doesn't have permission to\n   * view the entity.\n   *\n   * For example, if the query contains the clause _project = 'Secret project'_, and a user does not have browse\n   * permission for the project \"Secret project\", the sanitized query replaces the clause with _project = 12345\"_ (where\n   * 12345 is the ID of the project). If a user has the required permission, the clause is not sanitized. If the account\n   * ID is null, sanitizing is performed for an anonymous user.\n   *\n   * Note that sanitization doesn't make the queries GDPR-compliant, because it doesn't remove user identifiers\n   * (username or user key). If you need to make queries GDPR-compliant, use [Convert user identifiers to account IDs in\n   * JQL\n   * queries](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-jql/#api-rest-api-2-jql-sanitize-post).\n   *\n   * Before sanitization each JQL query is parsed. The queries are returned in the same order that they were passed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async sanitiseJqlQueries<T = Models.SanitizedJqlQueries>(\n    parameters?: Parameters.SanitiseJqlQueries,\n    callback?: never,\n  ): Promise<T>;\n  async sanitiseJqlQueries<T = Models.SanitizedJqlQueries>(\n    parameters?: Parameters.SanitiseJqlQueries,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/jql/sanitize',\n      method: 'POST',\n      data: {\n        queries: parameters?.queries,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class JqlFunctionsApps {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the list of a function's precomputations along with information about when they were created, updated, and\n   * last used. Each precomputation has a `value` - the JQL fragment to replace the custom function clause with.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** This\n   * API is only accessible to apps and apps can only inspect their own functions.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getPrecomputations<T = Models.PageJqlFunctionPrecomputation>(\n    parameters: Parameters.GetPrecomputations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the list of a function's precomputations along with information about when they were created, updated, and\n   * last used. Each precomputation has a `value` - the JQL fragment to replace the custom function clause with.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** This\n   * API is only accessible to apps and apps can only inspect their own functions.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getPrecomputations<T = Models.PageJqlFunctionPrecomputation>(\n    parameters?: Parameters.GetPrecomputations,\n    callback?: never,\n  ): Promise<T>;\n  async getPrecomputations<T = Models.PageJqlFunctionPrecomputation>(\n    parameters?: Parameters.GetPrecomputations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/jql/function/computation',\n      method: 'GET',\n      params: {\n        functionKey: parameters?.functionKey,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        orderBy: parameters?.orderBy,\n        filter: parameters?.filter,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Update the precomputation value of a function created by a Forge/Connect app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** An API\n   * for apps to update their own precomputations.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updatePrecomputations<T = void>(\n    parameters: Parameters.UpdatePrecomputations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update the precomputation value of a function created by a Forge/Connect app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** An API\n   * for apps to update their own precomputations.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updatePrecomputations<T = void>(parameters: Parameters.UpdatePrecomputations, callback?: never): Promise<T>;\n  async updatePrecomputations<T = void>(\n    parameters: Parameters.UpdatePrecomputations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/jql/function/computation',\n      method: 'POST',\n      params: {\n        skipNotFoundPrecomputations: parameters.skipNotFoundPrecomputations,\n      },\n      data: {\n        values: parameters.values,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns function precomputations by IDs, along with information about when they were created, updated, and last\n   * used. Each precomputation has a `value` - the JQL fragment to replace the custom function clause with.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** This\n   * API is only accessible to apps and apps can only inspect their own functions.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getPrecomputationsByID<T = Models.JqlFunctionPrecomputationGetByIdResponse>(\n    parameters: Parameters.GetPrecomputationsByID,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns function precomputations by IDs, along with information about when they were created, updated, and last\n   * used. Each precomputation has a `value` - the JQL fragment to replace the custom function clause with.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** This\n   * API is only accessible to apps and apps can only inspect their own functions.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getPrecomputationsByID<T = Models.JqlFunctionPrecomputationGetByIdResponse>(\n    parameters: Parameters.GetPrecomputationsByID,\n    callback?: never,\n  ): Promise<T>;\n  async getPrecomputationsByID<T = Models.JqlFunctionPrecomputationGetByIdResponse>(\n    parameters: Parameters.GetPrecomputationsByID,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/jql/function/computation/search',\n      method: 'POST',\n      params: {\n        orderBy: parameters.orderBy,\n      },\n      data: {\n        precomputationIDs: parameters.precomputationIDs,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Labels {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * labels.\n   */\n  async getAllLabels<T = Models.PageString>(\n    parameters: Parameters.GetAllLabels | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * labels.\n   */\n  async getAllLabels<T = Models.PageString>(parameters?: Parameters.GetAllLabels, callback?: never): Promise<T>;\n  async getAllLabels<T = Models.PageString>(\n    parameters?: Parameters.GetAllLabels,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/label',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class LicenseMetrics {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns licensing information about the Jira instance.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getLicense<T = Models.License>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns licensing information about the Jira instance.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getLicense<T = Models.License>(callback?: never): Promise<T>;\n  async getLicense<T = Models.License>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/instance/license',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the approximate number of user accounts across all Jira licenses. Note that this information is cached with\n   * a 7-day lifecycle and could be stale at the time of call.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApproximateLicenseCount<T = Models.LicenseMetric>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the approximate number of user accounts across all Jira licenses. Note that this information is cached with\n   * a 7-day lifecycle and could be stale at the time of call.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApproximateLicenseCount<T = Models.LicenseMetric>(callback?: never): Promise<T>;\n  async getApproximateLicenseCount<T = Models.LicenseMetric>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/license/approximateLicenseCount',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the total approximate number of user accounts for a single Jira license. Note that this information is\n   * cached with a 7-day lifecycle and could be stale at the time of call.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApproximateApplicationLicenseCount<T = Models.LicenseMetric>(\n    applicationKey: string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the total approximate number of user accounts for a single Jira license. Note that this information is\n   * cached with a 7-day lifecycle and could be stale at the time of call.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApproximateApplicationLicenseCount<T = Models.LicenseMetric>(\n    applicationKey: string,\n    callback?: never,\n  ): Promise<T>;\n  async getApproximateApplicationLicenseCount<T = Models.LicenseMetric>(\n    applicationKey: string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/license/approximateLicenseCount/product/${applicationKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Myself {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the value of a preference of the current user.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default this is not set and the user takes the locale of the\n   *   instance.\n   * - _jira.user.timezone_ The time zone of the user. By default this is not set and the user takes the timezone of the\n   *   instance.\n   *\n   * These system preferences keys will be deprecated by 15/07/2024. You can still retrieve these keys, but it will not\n   * have any impact on Notification behaviour.\n   *\n   * - _user.notifications.watcher_ Whether the user gets notified when they are watcher.\n   * - _user.notifications.assignee_ Whether the user gets notified when they are assignee.\n   * - _user.notifications.reporter_ Whether the user gets notified when they are reporter.\n   * - _user.notifications.mentions_ Whether the user gets notified when they are mentions.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPreference<T = string>(parameters: Parameters.GetPreference, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the value of a preference of the current user.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default this is not set and the user takes the locale of the\n   *   instance.\n   * - _jira.user.timezone_ The time zone of the user. By default this is not set and the user takes the timezone of the\n   *   instance.\n   *\n   * These system preferences keys will be deprecated by 15/07/2024. You can still retrieve these keys, but it will not\n   * have any impact on Notification behaviour.\n   *\n   * - _user.notifications.watcher_ Whether the user gets notified when they are watcher.\n   * - _user.notifications.assignee_ Whether the user gets notified when they are assignee.\n   * - _user.notifications.reporter_ Whether the user gets notified when they are reporter.\n   * - _user.notifications.mentions_ Whether the user gets notified when they are mentions.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPreference<T = string>(parameters: Parameters.GetPreference, callback?: never): Promise<T>;\n  async getPreference<T = string>(parameters: Parameters.GetPreference, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/mypreferences',\n      method: 'GET',\n      params: {\n        key: parameters.key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a preference for the user or updates a preference's value by sending a plain text string. For example,\n   * `false`. An arbitrary preference can be created with the value containing up to 255 characters. In addition, the\n   * following keys define system preferences that can be set or created:\n   *\n   * - _user.notifications.mimetype_ The mime type used in notifications sent to the user. Defaults to `html`.\n   * - _user.default.share.private_ Whether new [ filters](https://confluence.atlassian.com/x/eQiiLQ) are set to private.\n   *   Defaults to `true`.\n   * - _user.keyboard.shortcuts.disabled_ Whether keyboard shortcuts are disabled. Defaults to `false`.\n   * - _user.autowatch.disabled_ Whether the user automatically watches issues they create or add a comment to. By\n   *   default, not set: the user takes the instance autowatch setting.\n   * - _user.notifiy.own.changes_ Whether the user gets notified of their own changes.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default, not set. The user takes the instance locale.\n   * - _jira.user.timezone_ The time zone of the user. By default, not set. The user takes the instance timezone.\n   *\n   * These system preferences keys will be deprecated by 15/07/2024. You can still use these keys to create arbitrary\n   * preferences, but it will not have any impact on Notification behaviour.\n   *\n   * - _user.notifications.watcher_ Whether the user gets notified when they are watcher.\n   * - _user.notifications.assignee_ Whether the user gets notified when they are assignee.\n   * - _user.notifications.reporter_ Whether the user gets notified when they are reporter.\n   * - _user.notifications.mentions_ Whether the user gets notified when they are mentions.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async setPreference<T = void>(parameters: Parameters.SetPreference, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a preference for the user or updates a preference's value by sending a plain text string. For example,\n   * `false`. An arbitrary preference can be created with the value containing up to 255 characters. In addition, the\n   * following keys define system preferences that can be set or created:\n   *\n   * - _user.notifications.mimetype_ The mime type used in notifications sent to the user. Defaults to `html`.\n   * - _user.default.share.private_ Whether new [ filters](https://confluence.atlassian.com/x/eQiiLQ) are set to private.\n   *   Defaults to `true`.\n   * - _user.keyboard.shortcuts.disabled_ Whether keyboard shortcuts are disabled. Defaults to `false`.\n   * - _user.autowatch.disabled_ Whether the user automatically watches issues they create or add a comment to. By\n   *   default, not set: the user takes the instance autowatch setting.\n   * - _user.notifiy.own.changes_ Whether the user gets notified of their own changes.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default, not set. The user takes the instance locale.\n   * - _jira.user.timezone_ The time zone of the user. By default, not set. The user takes the instance timezone.\n   *\n   * These system preferences keys will be deprecated by 15/07/2024. You can still use these keys to create arbitrary\n   * preferences, but it will not have any impact on Notification behaviour.\n   *\n   * - _user.notifications.watcher_ Whether the user gets notified when they are watcher.\n   * - _user.notifications.assignee_ Whether the user gets notified when they are assignee.\n   * - _user.notifications.reporter_ Whether the user gets notified when they are reporter.\n   * - _user.notifications.mentions_ Whether the user gets notified when they are mentions.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async setPreference<T = void>(parameters: Parameters.SetPreference, callback?: never): Promise<T>;\n  async setPreference<T = void>(parameters: Parameters.SetPreference, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/mypreferences',\n      method: 'PUT',\n      headers: {\n        'Content-Type': typeof parameters.value === 'string' ? 'text/plain' : 'application/json',\n      },\n      params: {\n        key: parameters.key,\n      },\n      data: parameters.value,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a preference of the user, which restores the default value of system defined settings.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default, not set. The user takes the instance locale.\n   * - _jira.user.timezone_ The time zone of the user. By default, not set. The user takes the instance timezone.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async removePreference<T = void>(parameters: Parameters.RemovePreference, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a preference of the user, which restores the default value of system defined settings.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default, not set. The user takes the instance locale.\n   * - _jira.user.timezone_ The time zone of the user. By default, not set. The user takes the instance timezone.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async removePreference<T = void>(parameters: Parameters.RemovePreference, callback?: never): Promise<T>;\n  async removePreference<T = void>(parameters: Parameters.RemovePreference, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/mypreferences',\n      method: 'DELETE',\n      params: {\n        key: parameters.key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the locale for the user.\n   *\n   * If the user has no language preference set (which is the default setting) or this resource is accessed anonymous,\n   * the browser locale detected by Jira is returned. Jira detects the browser locale using the _Accept-Language_ header\n   * in the request. However, if this doesn't match a locale available Jira, the site default locale is returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getLocale<T = Models.Locale>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the locale for the user.\n   *\n   * If the user has no language preference set (which is the default setting) or this resource is accessed anonymous,\n   * the browser locale detected by Jira is returned. Jira detects the browser locale using the _Accept-Language_ header\n   * in the request. However, if this doesn't match a locale available Jira, the site default locale is returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getLocale<T = Models.Locale>(callback?: never): Promise<T>;\n  async getLocale<T = Models.Locale>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/mypreferences/locale',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns details for the current user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getCurrentUser<T = Models.User>(\n    parameters: Parameters.GetCurrentUser | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns details for the current user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getCurrentUser<T = Models.User>(parameters?: Parameters.GetCurrentUser, callback?: never): Promise<T>;\n  async getCurrentUser<T = Models.User>(\n    parameters?: Parameters.GetCurrentUser,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/myself',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class PermissionSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all permission schemes.\n   *\n   * ### About permission schemes and grants\n   *\n   * A permission scheme is a collection of permission grants. A permission grant consists of a `holder` and a\n   * `permission`.\n   *\n   * #### Holder object\n   *\n   * The `holder` object contains information about the user or group being granted the permission. For example, the\n   * _Administer projects_ permission is granted to a group named _Teams in space administrators_. In this case, the\n   * type is `\"type\": \"group\"`, and the parameter is the group name, `\"parameter\": \"Teams in space administrators\"` and\n   * the value is group ID, `\"value\": \"ca85fac0-d974-40ca-a615-7af99c48d24f\"`.\n   *\n   * The `holder` object is defined by the following properties:\n   *\n   * - `type` Identifies the user or group (see the list of types below).\n   * - `parameter` As a group's name can change, use of `value` is recommended. The value of this property depends on the\n   *   `type`. For example, if the `type` is a group, then you need to specify the group name.\n   * - `value` The value of this property depends on the `type`. If the `type` is a group, then you need to specify the\n   *   group ID. For other `type` it has the same value as `parameter`\n   *\n   * The following `types` are available. The expected values for `parameter` and `value` are given in parentheses (some\n   * types may not have a `parameter` or `value`):\n   *\n   * - `anyone` Grant for anonymous users.\n   * - `applicationRole` Grant for users with access to the specified application (application name, application name).\n   *   See [Update product access settings](https://confluence.atlassian.com/x/3YxjL) for more information.\n   * - `assignee` Grant for the user currently assigned to an issue.\n   * - `group` Grant for the specified group (`parameter` : group name, `value` : group ID).\n   * - `groupCustomField` Grant for a user in the group selected in the specified custom field (`parameter` : custom field\n   *   ID, `value` : custom field ID).\n   * - `projectLead` Grant for a project lead.\n   * - `projectRole` Grant for the specified project role (`parameter` :project role ID, `value` : project role ID).\n   * - `reporter` Grant for the user who reported the issue.\n   * - `sd.customer.portal.only` Jira Service Desk only. Grants customers permission to access the customer portal but not\n   *   Jira. See [Customizing Jira Service Desk permissions](https://confluence.atlassian.com/x/24dKLg) for more\n   *   information.\n   * - `user` Grant for the specified user (`parameter` : user ID - historically this was the userkey but that is\n   *   deprecated and the account ID should be used, `value` : user ID).\n   * - `userCustomField` Grant for a user selected in the specified custom field (`parameter` : custom field ID, `value` :\n   *   custom field ID).\n   *\n   * #### Built-in permissions\n   *\n   * The [built-in Jira permissions](https://confluence.atlassian.com/x/yodKLg) are listed below. Apps can also define\n   * custom permissions. See the [project\n   * permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/) and [global\n   * permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/) module documentation\n   * for more information.\n   *\n   * **Administration permissions**\n   *\n   * - `ADMINISTER_PROJECTS`\n   * - `EDIT_WORKFLOW`\n   * - `EDIT_ISSUE_LAYOUT`\n   *\n   * **Project permissions**\n   *\n   * - `BROWSE_PROJECTS`\n   * - `MANAGE_SPRINTS_PERMISSION` (Jira Software only)\n   * - `SERVICEDESK_AGENT` (Jira Service Desk only)\n   * - `VIEW_DEV_TOOLS` (Jira Software only)\n   * - `VIEW_READONLY_WORKFLOW`\n   *\n   * **Issue permissions**\n   *\n   * - `ASSIGNABLE_USER`\n   * - `ASSIGN_ISSUES`\n   * - `CLOSE_ISSUES`\n   * - `CREATE_ISSUES`\n   * - `DELETE_ISSUES`\n   * - `EDIT_ISSUES`\n   * - `LINK_ISSUES`\n   * - `MODIFY_REPORTER`\n   * - `MOVE_ISSUES`\n   * - `RESOLVE_ISSUES`\n   * - `SCHEDULE_ISSUES`\n   * - `SET_ISSUE_SECURITY`\n   * - `TRANSITION_ISSUES`\n   *\n   * **Voters and watchers permissions**\n   *\n   * - `MANAGE_WATCHERS`\n   * - `VIEW_VOTERS_AND_WATCHERS`\n   *\n   * **Comments permissions**\n   *\n   * - `ADD_COMMENTS`\n   * - `DELETE_ALL_COMMENTS`\n   * - `DELETE_OWN_COMMENTS`\n   * - `EDIT_ALL_COMMENTS`\n   * - `EDIT_OWN_COMMENTS`\n   *\n   * **Attachments permissions**\n   *\n   * - `CREATE_ATTACHMENTS`\n   * - `DELETE_ALL_ATTACHMENTS`\n   * - `DELETE_OWN_ATTACHMENTS`\n   *\n   * **Time tracking permissions**\n   *\n   * - `DELETE_ALL_WORKLOGS`\n   * - `DELETE_OWN_WORKLOGS`\n   * - `EDIT_ALL_WORKLOGS`\n   * - `EDIT_OWN_WORKLOGS`\n   * - `WORK_ON_ISSUES`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAllPermissionSchemes<T = Models.PermissionSchemes>(\n    parameters: Parameters.GetAllPermissionSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all permission schemes.\n   *\n   * ### About permission schemes and grants\n   *\n   * A permission scheme is a collection of permission grants. A permission grant consists of a `holder` and a\n   * `permission`.\n   *\n   * #### Holder object\n   *\n   * The `holder` object contains information about the user or group being granted the permission. For example, the\n   * _Administer projects_ permission is granted to a group named _Teams in space administrators_. In this case, the\n   * type is `\"type\": \"group\"`, and the parameter is the group name, `\"parameter\": \"Teams in space administrators\"` and\n   * the value is group ID, `\"value\": \"ca85fac0-d974-40ca-a615-7af99c48d24f\"`.\n   *\n   * The `holder` object is defined by the following properties:\n   *\n   * - `type` Identifies the user or group (see the list of types below).\n   * - `parameter` As a group's name can change, use of `value` is recommended. The value of this property depends on the\n   *   `type`. For example, if the `type` is a group, then you need to specify the group name.\n   * - `value` The value of this property depends on the `type`. If the `type` is a group, then you need to specify the\n   *   group ID. For other `type` it has the same value as `parameter`\n   *\n   * The following `types` are available. The expected values for `parameter` and `value` are given in parentheses (some\n   * types may not have a `parameter` or `value`):\n   *\n   * - `anyone` Grant for anonymous users.\n   * - `applicationRole` Grant for users with access to the specified application (application name, application name).\n   *   See [Update product access settings](https://confluence.atlassian.com/x/3YxjL) for more information.\n   * - `assignee` Grant for the user currently assigned to an issue.\n   * - `group` Grant for the specified group (`parameter` : group name, `value` : group ID).\n   * - `groupCustomField` Grant for a user in the group selected in the specified custom field (`parameter` : custom field\n   *   ID, `value` : custom field ID).\n   * - `projectLead` Grant for a project lead.\n   * - `projectRole` Grant for the specified project role (`parameter` :project role ID, `value` : project role ID).\n   * - `reporter` Grant for the user who reported the issue.\n   * - `sd.customer.portal.only` Jira Service Desk only. Grants customers permission to access the customer portal but not\n   *   Jira. See [Customizing Jira Service Desk permissions](https://confluence.atlassian.com/x/24dKLg) for more\n   *   information.\n   * - `user` Grant for the specified user (`parameter` : user ID - historically this was the userkey but that is\n   *   deprecated and the account ID should be used, `value` : user ID).\n   * - `userCustomField` Grant for a user selected in the specified custom field (`parameter` : custom field ID, `value` :\n   *   custom field ID).\n   *\n   * #### Built-in permissions\n   *\n   * The [built-in Jira permissions](https://confluence.atlassian.com/x/yodKLg) are listed below. Apps can also define\n   * custom permissions. See the [project\n   * permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/) and [global\n   * permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/) module documentation\n   * for more information.\n   *\n   * **Administration permissions**\n   *\n   * - `ADMINISTER_PROJECTS`\n   * - `EDIT_WORKFLOW`\n   * - `EDIT_ISSUE_LAYOUT`\n   *\n   * **Project permissions**\n   *\n   * - `BROWSE_PROJECTS`\n   * - `MANAGE_SPRINTS_PERMISSION` (Jira Software only)\n   * - `SERVICEDESK_AGENT` (Jira Service Desk only)\n   * - `VIEW_DEV_TOOLS` (Jira Software only)\n   * - `VIEW_READONLY_WORKFLOW`\n   *\n   * **Issue permissions**\n   *\n   * - `ASSIGNABLE_USER`\n   * - `ASSIGN_ISSUES`\n   * - `CLOSE_ISSUES`\n   * - `CREATE_ISSUES`\n   * - `DELETE_ISSUES`\n   * - `EDIT_ISSUES`\n   * - `LINK_ISSUES`\n   * - `MODIFY_REPORTER`\n   * - `MOVE_ISSUES`\n   * - `RESOLVE_ISSUES`\n   * - `SCHEDULE_ISSUES`\n   * - `SET_ISSUE_SECURITY`\n   * - `TRANSITION_ISSUES`\n   *\n   * **Voters and watchers permissions**\n   *\n   * - `MANAGE_WATCHERS`\n   * - `VIEW_VOTERS_AND_WATCHERS`\n   *\n   * **Comments permissions**\n   *\n   * - `ADD_COMMENTS`\n   * - `DELETE_ALL_COMMENTS`\n   * - `DELETE_OWN_COMMENTS`\n   * - `EDIT_ALL_COMMENTS`\n   * - `EDIT_OWN_COMMENTS`\n   *\n   * **Attachments permissions**\n   *\n   * - `CREATE_ATTACHMENTS`\n   * - `DELETE_ALL_ATTACHMENTS`\n   * - `DELETE_OWN_ATTACHMENTS`\n   *\n   * **Time tracking permissions**\n   *\n   * - `DELETE_ALL_WORKLOGS`\n   * - `DELETE_OWN_WORKLOGS`\n   * - `EDIT_ALL_WORKLOGS`\n   * - `EDIT_OWN_WORKLOGS`\n   * - `WORK_ON_ISSUES`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAllPermissionSchemes<T = Models.PermissionSchemes>(\n    parameters?: Parameters.GetAllPermissionSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getAllPermissionSchemes<T = Models.PermissionSchemes>(\n    parameters?: Parameters.GetAllPermissionSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/permissionscheme',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a new permission scheme. You can create a permission scheme with or without defining a set of permission\n   * grants.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.CreatePermissionScheme | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a new permission scheme. You can create a permission scheme with or without defining a set of permission\n   * grants.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPermissionScheme<T = Models.PermissionScheme>(\n    parameters?: Parameters.CreatePermissionScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createPermissionScheme<T = Models.PermissionScheme>(\n    parameters?: Parameters.CreatePermissionScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/permissionscheme',\n      method: 'POST',\n      params: {\n        expand: parameters?.expand,\n      },\n      data: {\n        ...parameters,\n        expand: undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetPermissionScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetPermissionScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetPermissionScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const schemeId = typeof parameters === 'string' ? parameters : parameters.schemeId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/permissionscheme/${schemeId}`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' ? parameters.expand : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a permission scheme. Below are some important things to note when using this resource:\n   *\n   * - If a permissions list is present in the request, then it is set in the permission scheme, overwriting _all\n   *   existing_ grants.\n   * - If you want to update only the name and description, then do not send a permissions list in the request.\n   * - Sending an empty list will remove all permission grants from the permission scheme.\n   *\n   * If you want to add or delete a permission grant instead of updating the whole list, see [Create permission\n   * grant](#api-rest-api-2-permissionscheme-schemeId-permission-post) or [Delete permission scheme\n   * entity](#api-rest-api-2-permissionscheme-schemeId-permission-permissionId-delete).\n   *\n   * See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for\n   * more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.UpdatePermissionScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a permission scheme. Below are some important things to note when using this resource:\n   *\n   * - If a permissions list is present in the request, then it is set in the permission scheme, overwriting _all\n   *   existing_ grants.\n   * - If you want to update only the name and description, then do not send a permissions list in the request.\n   * - Sending an empty list will remove all permission grants from the permission scheme.\n   *\n   * If you want to add or delete a permission grant instead of updating the whole list, see [Create permission\n   * grant](#api-rest-api-2-permissionscheme-schemeId-permission-post) or [Delete permission scheme\n   * entity](#api-rest-api-2-permissionscheme-schemeId-permission-permissionId-delete).\n   *\n   * See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for\n   * more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.UpdatePermissionScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updatePermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.UpdatePermissionScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/permissionscheme/${parameters.schemeId}`,\n      method: 'PUT',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        ...parameters,\n        schemeId: undefined,\n        expand: undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePermissionScheme<T = void>(\n    parameters: Parameters.DeletePermissionScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePermissionScheme<T = void>(parameters: Parameters.DeletePermissionScheme, callback?: never): Promise<T>;\n  async deletePermissionScheme<T = void>(\n    parameters: Parameters.DeletePermissionScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/permissionscheme/${parameters.schemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all permission grants for a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionSchemeGrants<T = Models.PermissionGrants>(\n    parameters: Parameters.GetPermissionSchemeGrants,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all permission grants for a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionSchemeGrants<T = Models.PermissionGrants>(\n    parameters: Parameters.GetPermissionSchemeGrants,\n    callback?: never,\n  ): Promise<T>;\n  async getPermissionSchemeGrants<T = Models.PermissionGrants>(\n    parameters: Parameters.GetPermissionSchemeGrants,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/permissionscheme/${parameters.schemeId}/permission`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a permission grant in a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPermissionGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.CreatePermissionGrant,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a permission grant in a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPermissionGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.CreatePermissionGrant,\n    callback?: never,\n  ): Promise<T>;\n  async createPermissionGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.CreatePermissionGrant,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/permissionscheme/${parameters.schemeId}/permission`,\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        holder: parameters.holder,\n        id: parameters.id,\n        permission: parameters.permission,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a permission grant.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionSchemeGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.GetPermissionSchemeGrant,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a permission grant.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionSchemeGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.GetPermissionSchemeGrant,\n    callback?: never,\n  ): Promise<T>;\n  async getPermissionSchemeGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.GetPermissionSchemeGrant,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/permissionscheme/${parameters.schemeId}/permission/${parameters.permissionId}`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a permission grant from a permission scheme. See [About permission schemes and\n   * grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePermissionSchemeEntity<T = void>(\n    parameters: Parameters.DeletePermissionSchemeEntity,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a permission grant from a permission scheme. See [About permission schemes and\n   * grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePermissionSchemeEntity<T = void>(\n    parameters: Parameters.DeletePermissionSchemeEntity,\n    callback?: never,\n  ): Promise<T>;\n  async deletePermissionSchemeEntity<T = void>(\n    parameters: Parameters.DeletePermissionSchemeEntity,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/permissionscheme/${parameters.schemeId}/permission/${parameters.permissionId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Permissions {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of permissions indicating which permissions the user has. Details of the user's permissions can be\n   * obtained in a global, project, issue or comment context.\n   *\n   * The user is reported as having a project permission:\n   *\n   * - In the global context, if the user has the project permission in any project.\n   * - For a project, where the project permission is determined using issue data, if the user meets the permission's\n   *   criteria for any issue in the project. Otherwise, if the user has the project permission in the project.\n   * - For an issue, where a project permission is determined using issue data, if the user has the permission in the\n   *   issue. Otherwise, if the user has the project permission in the project containing the issue.\n   * - For a comment, where the user has both the permission to browse the comment and the project permission for the\n   *   comment's parent issue. Only the BROWSE_PROJECTS permission is supported. If a `commentId` is provided whose\n   *   `permissions` does not equal BROWSE_PROJECTS, a 400 error will be returned.\n   *\n   * This means that users may be shown as having an issue permission (such as EDIT_ISSUES) in the global context or a\n   * project context but may not have the permission for any or all issues. For example, if Reporters have the\n   * EDIT_ISSUES permission a user would be shown as having this permission in the global context or the context of a\n   * project, because any user can be a reporter. However, if they are not the user who reported the issue queried they\n   * would not have EDIT_ISSUES permission for that issue.\n   *\n   * For [Jira Service Management project\n   * permissions](https://support.atlassian.com/jira-cloud-administration/docs/customize-jira-service-management-permissions/),\n   * this will be evaluated similarly to a user in the customer portal. For example, if the BROWSE_PROJECTS permission\n   * is granted to Service Project Customer - Portal Access, any users with access to the customer portal will have the\n   * BROWSE_PROJECTS permission.\n   *\n   * Global permissions are unaffected by context.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getMyPermissions<T = Models.Permissions>(\n    parameters: Parameters.GetMyPermissions | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of permissions indicating which permissions the user has. Details of the user's permissions can be\n   * obtained in a global, project, issue or comment context.\n   *\n   * The user is reported as having a project permission:\n   *\n   * - In the global context, if the user has the project permission in any project.\n   * - For a project, where the project permission is determined using issue data, if the user meets the permission's\n   *   criteria for any issue in the project. Otherwise, if the user has the project permission in the project.\n   * - For an issue, where a project permission is determined using issue data, if the user has the permission in the\n   *   issue. Otherwise, if the user has the project permission in the project containing the issue.\n   * - For a comment, where the user has both the permission to browse the comment and the project permission for the\n   *   comment's parent issue. Only the BROWSE_PROJECTS permission is supported. If a `commentId` is provided whose\n   *   `permissions` does not equal BROWSE_PROJECTS, a 400 error will be returned.\n   *\n   * This means that users may be shown as having an issue permission (such as EDIT_ISSUES) in the global context or a\n   * project context but may not have the permission for any or all issues. For example, if Reporters have the\n   * EDIT_ISSUES permission a user would be shown as having this permission in the global context or the context of a\n   * project, because any user can be a reporter. However, if they are not the user who reported the issue queried they\n   * would not have EDIT_ISSUES permission for that issue.\n   *\n   * For [Jira Service Management project\n   * permissions](https://support.atlassian.com/jira-cloud-administration/docs/customize-jira-service-management-permissions/),\n   * this will be evaluated similarly to a user in the customer portal. For example, if the BROWSE_PROJECTS permission\n   * is granted to Service Project Customer - Portal Access, any users with access to the customer portal will have the\n   * BROWSE_PROJECTS permission.\n   *\n   * Global permissions are unaffected by context.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getMyPermissions<T = Models.Permissions>(\n    parameters?: Parameters.GetMyPermissions,\n    callback?: never,\n  ): Promise<T>;\n  async getMyPermissions<T = Models.Permissions>(\n    parameters?: Parameters.GetMyPermissions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/mypermissions',\n      method: 'GET',\n      params: {\n        projectKey: parameters?.projectKey,\n        projectId: parameters?.projectId,\n        issueKey: parameters?.issueKey,\n        issueId: parameters?.issueId,\n        permissions: parameters?.permissions,\n        projectUuid: parameters?.projectUuid,\n        projectConfigurationUuid: parameters?.projectConfigurationUuid,\n        commentId: parameters?.commentId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all permissions, including:\n   *\n   * - Global permissions.\n   * - Project permissions.\n   * - Global permissions added by plugins.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllPermissions<T = Models.Permissions>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all permissions, including:\n   *\n   * - Global permissions.\n   * - Project permissions.\n   * - Global permissions added by plugins.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllPermissions<T = Models.Permissions>(callback?: never): Promise<T>;\n  async getAllPermissions<T = Models.Permissions>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/permissions',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns:\n   *\n   * - For a list of global permissions, the global permissions granted to a user.\n   * - For a list of project permissions and lists of projects and issues, for each project permission a list of the\n   *   projects and issues a user can access or manipulate.\n   *\n   * If no account ID is provided, the operation returns details for the logged in user.\n   *\n   * Note that:\n   *\n   * - Invalid project and issue IDs are ignored.\n   * - A maximum of 1000 projects and 1000 issues can be checked.\n   * - Null values in `globalPermissions`, `projectPermissions`, `projectPermissions.projects`, and\n   *   `projectPermissions.issues` are ignored.\n   * - Empty strings in `projectPermissions.permissions` are ignored.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - **Classic**: `read:jira-work`\n   * - **Granular**: `read:permission:jira`\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to check the permissions for other\n   * users, otherwise none. However, Connect apps can make a call from the app server to the product to obtain\n   * permission details for any user, without admin permission. This Connect app ability doesn't apply to calls made\n   * using AP.request() in a browser.\n   */\n  async getBulkPermissions<T = Models.BulkPermissionGrants>(\n    parameters: Parameters.GetBulkPermissions | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns:\n   *\n   * - For a list of global permissions, the global permissions granted to a user.\n   * - For a list of project permissions and lists of projects and issues, for each project permission a list of the\n   *   projects and issues a user can access or manipulate.\n   *\n   * If no account ID is provided, the operation returns details for the logged in user.\n   *\n   * Note that:\n   *\n   * - Invalid project and issue IDs are ignored.\n   * - A maximum of 1000 projects and 1000 issues can be checked.\n   * - Null values in `globalPermissions`, `projectPermissions`, `projectPermissions.projects`, and\n   *   `projectPermissions.issues` are ignored.\n   * - Empty strings in `projectPermissions.permissions` are ignored.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - **Classic**: `read:jira-work`\n   * - **Granular**: `read:permission:jira`\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to check the permissions for other\n   * users, otherwise none. However, Connect apps can make a call from the app server to the product to obtain\n   * permission details for any user, without admin permission. This Connect app ability doesn't apply to calls made\n   * using AP.request() in a browser.\n   */\n  async getBulkPermissions<T = Models.BulkPermissionGrants>(\n    parameters?: Parameters.GetBulkPermissions,\n    callback?: never,\n  ): Promise<T>;\n  async getBulkPermissions<T = Models.BulkPermissionGrants>(\n    parameters?: Parameters.GetBulkPermissions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/permissions/check',\n      method: 'POST',\n      data: {\n        accountId: parameters?.accountId,\n        globalPermissions: parameters?.globalPermissions,\n        projectPermissions: parameters?.projectPermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all the projects where the user is granted a list of project permissions.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getPermittedProjects<T = Models.PermittedProjects>(\n    parameters: Parameters.GetPermittedProjects | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all the projects where the user is granted a list of project permissions.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getPermittedProjects<T = Models.PermittedProjects>(\n    parameters?: Parameters.GetPermittedProjects,\n    callback?: never,\n  ): Promise<T>;\n  async getPermittedProjects<T = Models.PermittedProjects>(\n    parameters?: Parameters.GetPermittedProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/permissions/project',\n      method: 'POST',\n      data: {\n        permissions: parameters?.permissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Plans {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of plans.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlans<T = Models.PageWithCursorGetPlanResponseForPage>(\n    parameters: Parameters.GetPlans | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of plans.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlans<T = Models.PageWithCursorGetPlanResponseForPage>(\n    parameters?: Parameters.GetPlans,\n    callback?: never,\n  ): Promise<T>;\n  async getPlans<T = Models.PageWithCursorGetPlanResponseForPage>(\n    parameters?: Parameters.GetPlans,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/plans/plan',\n      method: 'GET',\n      params: {\n        includeTrashed: parameters?.includeTrashed,\n        includeArchived: parameters?.includeArchived,\n        cursor: parameters?.cursor,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPlan<T = unknown>(parameters: Parameters.CreatePlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPlan<T = unknown>(parameters: Parameters.CreatePlan, callback?: never): Promise<T>;\n  async createPlan<T = unknown>(parameters: Parameters.CreatePlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/plans/plan',\n      method: 'POST',\n      params: {\n        useGroupId: parameters.useGroupId,\n      },\n      data: {\n        crossProjectReleases: parameters.crossProjectReleases,\n        customFields: parameters.customFields,\n        exclusionRules: parameters.exclusionRules,\n        issueSources: parameters.issueSources,\n        leadAccountId: parameters.leadAccountId,\n        name: parameters.name,\n        permissions: parameters.permissions,\n        scheduling: parameters.scheduling,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlan<T = Models.Plan>(parameters: Parameters.GetPlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlan<T = Models.Plan>(parameters: Parameters.GetPlan, callback?: never): Promise<T>;\n  async getPlan<T = Models.Plan>(parameters: Parameters.GetPlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}`,\n      method: 'GET',\n      params: {\n        useGroupId: parameters.useGroupId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates any of the following details of a plan using [JSON Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * - Name\n   * - LeadAccountId\n   * - Scheduling\n   *\n   *   - Estimation with StoryPoints, Days or Hours as possible values\n   *   - StartDate\n   *\n   *       - Type with DueDate, TargetStartDate, TargetEndDate or DateCustomField as possible values\n   *       - DateCustomFieldId\n   *   - EndDate\n   *\n   *       - Type with DueDate, TargetStartDate, TargetEndDate or DateCustomField as possible values\n   *       - DateCustomFieldId\n   *   - InferredDates with None, SprintDates or ReleaseDates as possible values\n   *   - Dependencies with Sequential or Concurrent as possible values\n   * - IssueSources\n   *\n   *   - Type with Board, Project or Filter as possible values\n   *   - Value\n   * - ExclusionRules\n   *\n   *   - NumberOfDaysToShowCompletedIssues\n   *   - IssueIds\n   *   - WorkStatusIds\n   *   - WorkStatusCategoryIds\n   *   - IssueTypeIds\n   *   - ReleaseIds\n   * - CrossProjectReleases\n   *\n   *   - Name\n   *   - ReleaseIds\n   * - CustomFields\n   *\n   *   - CustomFieldId\n   *   - Filter\n   * - Permissions\n   *\n   *   - Type with View or Edit as possible values\n   *   - Holder\n   *\n   *       - Type with Group or AccountId as possible values\n   *       - Value\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get plan\" endpoint to find\n   * out the order of array elements._\n   */\n  async updatePlan<T = void>(parameters: Parameters.UpdatePlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates any of the following details of a plan using [JSON Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * - Name\n   * - LeadAccountId\n   * - Scheduling\n   *\n   *   - Estimation with StoryPoints, Days or Hours as possible values\n   *   - StartDate\n   *\n   *       - Type with DueDate, TargetStartDate, TargetEndDate or DateCustomField as possible values\n   *       - DateCustomFieldId\n   *   - EndDate\n   *\n   *       - Type with DueDate, TargetStartDate, TargetEndDate or DateCustomField as possible values\n   *       - DateCustomFieldId\n   *   - InferredDates with None, SprintDates or ReleaseDates as possible values\n   *   - Dependencies with Sequential or Concurrent as possible values\n   * - IssueSources\n   *\n   *   - Type with Board, Project or Filter as possible values\n   *   - Value\n   * - ExclusionRules\n   *\n   *   - NumberOfDaysToShowCompletedIssues\n   *   - IssueIds\n   *   - WorkStatusIds\n   *   - WorkStatusCategoryIds\n   *   - IssueTypeIds\n   *   - ReleaseIds\n   * - CrossProjectReleases\n   *\n   *   - Name\n   *   - ReleaseIds\n   * - CustomFields\n   *\n   *   - CustomFieldId\n   *   - Filter\n   * - Permissions\n   *\n   *   - Type with View or Edit as possible values\n   *   - Holder\n   *\n   *       - Type with Group or AccountId as possible values\n   *       - Value\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get plan\" endpoint to find\n   * out the order of array elements._\n   */\n  async updatePlan<T = void>(parameters: Parameters.UpdatePlan, callback?: never): Promise<T>;\n  async updatePlan<T = void>(parameters: Parameters.UpdatePlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}`,\n      method: 'PUT',\n      params: {\n        useGroupId: parameters.useGroupId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Archives a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async archivePlan<T = void>(parameters: Parameters.ArchivePlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Archives a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async archivePlan<T = void>(parameters: Parameters.ArchivePlan, callback?: never): Promise<T>;\n  async archivePlan<T = void>(parameters: Parameters.ArchivePlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/archive`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Duplicates a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async duplicatePlan<T = unknown>(parameters: Parameters.DuplicatePlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Duplicates a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async duplicatePlan<T = unknown>(parameters: Parameters.DuplicatePlan, callback?: never): Promise<T>;\n  async duplicatePlan<T = unknown>(parameters: Parameters.DuplicatePlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/duplicate`,\n      method: 'POST',\n      data: {\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves a plan to trash.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async trashPlan<T = void>(parameters: Parameters.TrashPlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves a plan to trash.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async trashPlan<T = void>(parameters: Parameters.TrashPlan, callback?: never): Promise<T>;\n  async trashPlan<T = void>(parameters: Parameters.TrashPlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/trash`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\nimport { paramSerializer } from '../paramSerializer';\nimport type { Paginated } from '../paginated';\n\nexport class PrioritySchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * priority schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPrioritySchemes<T = Paginated<Models.PrioritySchemeWithPaginatedPrioritiesAndProjects>>(\n    parameters: Parameters.GetPrioritySchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * priority schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPrioritySchemes<T = Paginated<Models.PrioritySchemeWithPaginatedPrioritiesAndProjects>>(\n    parameters?: Parameters.GetPrioritySchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getPrioritySchemes<T = Paginated<Models.PrioritySchemeWithPaginatedPrioritiesAndProjects>>(\n    parameters?: Parameters.GetPrioritySchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/priorityscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        priorityId: paramSerializer('priorityId', parameters?.priorityId),\n        schemeId: paramSerializer('schemeId', parameters?.schemeId),\n        schemeName: parameters?.schemeName,\n        onlyDefault: parameters?.onlyDefault,\n        orderBy: parameters?.orderBy,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a new priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPriorityScheme<T = Models.PrioritySchemeId>(\n    parameters: Parameters.CreatePriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a new priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPriorityScheme<T = Models.PrioritySchemeId>(\n    parameters: Parameters.CreatePriorityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createPriorityScheme<T = Models.PrioritySchemeId>(\n    parameters: Parameters.CreatePriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/priorityscheme',\n      method: 'POST',\n      data: {\n        defaultPriorityId: parameters.defaultPriorityId,\n        description: parameters.description,\n        mappings: parameters.mappings,\n        name: parameters.name,\n        priorityIds: parameters.priorityIds,\n        projectIds: parameters.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * priorities that would require mapping, given a change in priorities or projects associated with a priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async suggestedPrioritiesForMappings<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.SuggestedPrioritiesForMappings | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * priorities that would require mapping, given a change in priorities or projects associated with a priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async suggestedPrioritiesForMappings<T = Paginated<Models.PriorityWithSequence>>(\n    parameters?: Parameters.SuggestedPrioritiesForMappings,\n    callback?: never,\n  ): Promise<T>;\n  async suggestedPrioritiesForMappings<T = Paginated<Models.PriorityWithSequence>>(\n    parameters?: Parameters.SuggestedPrioritiesForMappings,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/priorityscheme/mappings',\n      method: 'POST',\n      data: {\n        maxResults: parameters?.maxResults,\n        priorities: parameters?.priorities,\n        projects: parameters?.projects,\n        schemeId: parameters?.schemeId,\n        startAt: parameters?.startAt,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * priorities available for adding to a priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAvailablePrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetAvailablePrioritiesByPriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * priorities available for adding to a priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAvailablePrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetAvailablePrioritiesByPriorityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getAvailablePrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetAvailablePrioritiesByPriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/priorityscheme/priorities/available',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        query: parameters.query,\n        schemeId: parameters.schemeId,\n        exclude: parameters.exclude,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a priority scheme. This includes its details, the lists of priorities and projects in it\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePriorityScheme<T = Models.UpdatePrioritySchemeResponse>(\n    parameters: Parameters.UpdatePriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a priority scheme. This includes its details, the lists of priorities and projects in it\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePriorityScheme<T = Models.UpdatePrioritySchemeResponse>(\n    parameters: Parameters.UpdatePriorityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updatePriorityScheme<T = Models.UpdatePrioritySchemeResponse>(\n    parameters: Parameters.UpdatePriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/priorityscheme/${parameters.schemeId}`,\n      method: 'PUT',\n      data: {\n        defaultPriorityId: parameters.defaultPriorityId,\n        description: parameters.description,\n        mappings: parameters.mappings,\n        name: parameters.name,\n        priorities: parameters.priorities,\n        projects: parameters.projects,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a priority scheme.\n   *\n   * This operation is only available for priority schemes without any associated projects. Any associated projects must\n   * be removed from the priority scheme before this operation can be performed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePriorityScheme<T = void>(\n    parameters: Parameters.DeletePriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a priority scheme.\n   *\n   * This operation is only available for priority schemes without any associated projects. Any associated projects must\n   * be removed from the priority scheme before this operation can be performed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePriorityScheme<T = void>(parameters: Parameters.DeletePriorityScheme, callback?: never): Promise<T>;\n  async deletePriorityScheme<T = void>(\n    parameters: Parameters.DeletePriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/priorityscheme/${parameters.schemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * priorities by scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetPrioritiesByPriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * priorities by scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetPrioritiesByPriorityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getPrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetPrioritiesByPriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/priorityscheme/${parameters.schemeId}/priorities`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * projects by scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getProjectsByPriorityScheme<T = Models.PageProject>(\n    parameters: Parameters.GetProjectsByPriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * projects by scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getProjectsByPriorityScheme<T = Models.PageProject>(\n    parameters: Parameters.GetProjectsByPriorityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectsByPriorityScheme<T = Models.PageProject>(\n    parameters: Parameters.GetProjectsByPriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/priorityscheme/${parameters.schemeId}/projects`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        projectId: paramSerializer('projectId', parameters.projectId),\n        query: parameters.query,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectAvatars {\n  constructor(private client: Client) {}\n\n  /**\n   * Sets the avatar displayed for a project.\n   *\n   * Use [Load project avatar](#api-rest-api-2-project-projectIdOrKey-avatar2-post) to store avatars against the\n   * project, before using this operation to set the displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async updateProjectAvatar<T = void>(parameters: Parameters.UpdateProjectAvatar, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the avatar displayed for a project.\n   *\n   * Use [Load project avatar](#api-rest-api-2-project-projectIdOrKey-avatar2-post) to store avatars against the\n   * project, before using this operation to set the displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async updateProjectAvatar<T = void>(parameters: Parameters.UpdateProjectAvatar, callback?: never): Promise<T>;\n  async updateProjectAvatar<T = void>(\n    parameters: Parameters.UpdateProjectAvatar,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/avatar`,\n      method: 'PUT',\n      data: {\n        fileName: parameters.fileName,\n        id: parameters.id,\n        isDeletable: parameters.isDeletable,\n        isSelected: parameters.isSelected,\n        isSystemAvatar: parameters.isSystemAvatar,\n        owner: parameters.owner,\n        urls: parameters.urls,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a custom avatar from a project. Note that system avatars cannot be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async deleteProjectAvatar<T = void>(parameters: Parameters.DeleteProjectAvatar, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a custom avatar from a project. Note that system avatars cannot be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async deleteProjectAvatar<T = void>(parameters: Parameters.DeleteProjectAvatar, callback?: never): Promise<T>;\n  async deleteProjectAvatar<T = void>(\n    parameters: Parameters.DeleteProjectAvatar,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/avatar/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Loads an avatar for a project.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar use [Set project\n   * avatar](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-project-avatars/#api-rest-api-2-project-projectidorkey-avatar-put)\n   * to set it as the project's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async createProjectAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateProjectAvatar,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Loads an avatar for a project.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar use [Set project\n   * avatar](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-project-avatars/#api-rest-api-2-project-projectidorkey-avatar-put)\n   * to set it as the project's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async createProjectAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateProjectAvatar,\n    callback?: never,\n  ): Promise<T>;\n  async createProjectAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateProjectAvatar,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/avatar2`,\n      method: 'POST',\n      headers: {\n        'X-Atlassian-Token': 'no-check',\n        'Content-Type': parameters.mimeType,\n      },\n      params: {\n        x: parameters.x,\n        y: parameters.y,\n        size: parameters.size ?? 0,\n      },\n      data: parameters.avatar,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all project avatars, grouped by system and custom avatars.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getAllProjectAvatars<T = Models.ProjectAvatars>(\n    parameters: Parameters.GetAllProjectAvatars | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all project avatars, grouped by system and custom avatars.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getAllProjectAvatars<T = Models.ProjectAvatars>(\n    parameters: Parameters.GetAllProjectAvatars | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllProjectAvatars<T = Models.ProjectAvatars>(\n    parameters: Parameters.GetAllProjectAvatars | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/avatars`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectCategories {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all project categories.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAllProjectCategories<T = Models.ProjectCategory[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all project categories.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAllProjectCategories<T = Models.ProjectCategory[]>(callback?: never): Promise<T>;\n  async getAllProjectCategories<T = Models.ProjectCategory[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/projectCategory',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProjectCategory<T = Models.ProjectCategory>(\n    parameters: Parameters.CreateProjectCategory,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProjectCategory<T = Models.ProjectCategory>(\n    parameters: Parameters.CreateProjectCategory,\n    callback?: never,\n  ): Promise<T>;\n  async createProjectCategory<T = Models.ProjectCategory>(\n    parameters: Parameters.CreateProjectCategory,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/projectCategory',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        id: parameters.id,\n        name: parameters.name,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getProjectCategoryById<T = Models.ProjectCategory>(\n    parameters: Parameters.GetProjectCategoryById | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getProjectCategoryById<T = Models.ProjectCategory>(\n    parameters: Parameters.GetProjectCategoryById | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectCategoryById<T = Models.ProjectCategory>(\n    parameters: Parameters.GetProjectCategoryById | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/projectCategory/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateProjectCategory<T = Models.UpdatedProjectCategory>(\n    parameters: Parameters.UpdateProjectCategory,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateProjectCategory<T = Models.UpdatedProjectCategory>(\n    parameters: Parameters.UpdateProjectCategory,\n    callback?: never,\n  ): Promise<T>;\n  async updateProjectCategory<T = Models.UpdatedProjectCategory>(\n    parameters: Parameters.UpdateProjectCategory,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/projectCategory/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeProjectCategory<T = void>(\n    parameters: Parameters.RemoveProjectCategory | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeProjectCategory<T = void>(\n    parameters: Parameters.RemoveProjectCategory | string,\n    callback?: never,\n  ): Promise<T>;\n  async removeProjectCategory<T = void>(\n    parameters: Parameters.RemoveProjectCategory | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/projectCategory/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectClassificationLevels {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the default data classification for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultProjectClassification<T = unknown>(\n    parameters: Parameters.GetDefaultProjectClassification,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the default data classification for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultProjectClassification<T = unknown>(\n    parameters: Parameters.GetDefaultProjectClassification,\n    callback?: never,\n  ): Promise<T>;\n  async getDefaultProjectClassification<T = unknown>(\n    parameters: Parameters.GetDefaultProjectClassification,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/classification-level/default`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the default data classification level for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultProjectClassification<T = void>(\n    parameters: Parameters.UpdateDefaultProjectClassification,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the default data classification level for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultProjectClassification<T = void>(\n    parameters: Parameters.UpdateDefaultProjectClassification,\n    callback?: never,\n  ): Promise<T>;\n  async updateDefaultProjectClassification<T = void>(\n    parameters: Parameters.UpdateDefaultProjectClassification,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/classification-level/default`,\n      method: 'PUT',\n      data: {\n        id: parameters.id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Remove the default data classification level for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeDefaultProjectClassification<T = void>(\n    parameters: Parameters.RemoveDefaultProjectClassification,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Remove the default data classification level for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeDefaultProjectClassification<T = void>(\n    parameters: Parameters.RemoveDefaultProjectClassification,\n    callback?: never,\n  ): Promise<T>;\n  async removeDefaultProjectClassification<T = void>(\n    parameters: Parameters.RemoveDefaultProjectClassification,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/classification-level/default`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\nimport type { Paginated } from '../paginated';\n\nexport class ProjectComponents {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * components in a project, including global (Compass) components when applicable.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async findComponentsForProjects<T = Paginated<Models.Component>>(\n    parameters: Parameters.FindComponentsForProjects | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * components in a project, including global (Compass) components when applicable.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async findComponentsForProjects<T = Paginated<Models.Component>>(\n    parameters?: Parameters.FindComponentsForProjects,\n    callback?: never,\n  ): Promise<T>;\n  async findComponentsForProjects<T = Paginated<Models.Component>>(\n    parameters?: Parameters.FindComponentsForProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/component',\n      method: 'GET',\n      params: {\n        projectIdsOrKeys: parameters?.projectIdsOrKeys,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        orderBy: parameters?.orderBy,\n        query: parameters?.query,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a component. Use components to provide containers for issues within a project. Use components to provide\n   * containers for issues within a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the\n   * component is created or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.CreateComponent,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a component. Use components to provide containers for issues within a project. Use components to provide\n   * containers for issues within a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the\n   * component is created or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.CreateComponent,\n    callback?: never,\n  ): Promise<T>;\n  async createComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.CreateComponent,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/component',\n      method: 'POST',\n      data: {\n        ari: parameters.ari,\n        assignee: parameters.assignee,\n        assigneeType: parameters.assigneeType,\n        description: parameters.description,\n        id: parameters.id,\n        isAssigneeTypeValid: parameters.isAssigneeTypeValid,\n        lead: parameters.lead,\n        leadAccountId: parameters.leadAccountId,\n        leadUserName: parameters.leadUserName,\n        metadata: parameters.metadata,\n        name: parameters.name,\n        project: parameters.project,\n        projectId: parameters.projectId,\n        realAssignee: parameters.realAssignee,\n        realAssigneeType: parameters.realAssigneeType,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for project containing the component.\n   */\n  async getComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.GetComponent | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for project containing the component.\n   */\n  async getComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.GetComponent | string,\n    callback?: never,\n  ): Promise<T>;\n  async getComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.GetComponent | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/component/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a component. Any fields included in the request are overwritten. If `leadAccountId` is an empty string (\"\")\n   * the component lead is removed.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   * the component or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.UpdateComponent,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a component. Any fields included in the request are overwritten. If `leadAccountId` is an empty string (\"\")\n   * the component lead is removed.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   * the component or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.UpdateComponent,\n    callback?: never,\n  ): Promise<T>;\n  async updateComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.UpdateComponent,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/component/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        leadUserName: parameters.leadUserName,\n        leadAccountId: parameters.leadAccountId,\n        assigneeType: parameters.assigneeType,\n        project: parameters.project,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   * the component or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteComponent<T = void>(\n    parameters: Parameters.DeleteComponent | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   * the component or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteComponent<T = void>(parameters: Parameters.DeleteComponent | string, callback?: never): Promise<T>;\n  async deleteComponent<T = void>(\n    parameters: Parameters.DeleteComponent | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/component/${id}`,\n      method: 'DELETE',\n      params: {\n        moveIssuesTo: typeof parameters !== 'string' ? parameters.moveIssuesTo : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the counts of issues assigned to the component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - **Classic**: `read:jira-work`\n   * - **Granular**: `read:field:jira`, `read:project.component:jira`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getComponentRelatedIssues<T = Models.ComponentIssuesCount>(\n    parameters: Parameters.GetComponentRelatedIssues | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the counts of issues assigned to the component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - **Classic**: `read:jira-work`\n   * - **Granular**: `read:field:jira`, `read:project.component:jira`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getComponentRelatedIssues<T = Models.ComponentIssuesCount>(\n    parameters: Parameters.GetComponentRelatedIssues | string,\n    callback?: never,\n  ): Promise<T>;\n  async getComponentRelatedIssues<T = Models.ComponentIssuesCount>(\n    parameters: Parameters.GetComponentRelatedIssues | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/component/${id}/relatedIssueCounts`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * components in a project. See the [Get project components](#api-rest-api-2-project-projectIdOrKey-components-get)\n   * resource if you want to get a full list of versions without pagination.\n   *\n   * If your project uses Compass components, this API will return a list of Compass components that are linked to\n   * issues in that project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectComponentsPaginated<T = Models.PageComponentWithIssueCount>(\n    parameters: Parameters.GetProjectComponentsPaginated,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * components in a project. See the [Get project components](#api-rest-api-2-project-projectIdOrKey-components-get)\n   * resource if you want to get a full list of versions without pagination.\n   *\n   * If your project uses Compass components, this API will return a list of Compass components that are linked to\n   * issues in that project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectComponentsPaginated<T = Models.PageComponentWithIssueCount>(\n    parameters: Parameters.GetProjectComponentsPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectComponentsPaginated<T = Models.PageComponentWithIssueCount>(\n    parameters: Parameters.GetProjectComponentsPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/component`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        orderBy: parameters.orderBy,\n        componentSource: parameters.componentSource,\n        query: parameters.query,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all components in a project. See the [Get project components\n   * paginated](#api-rest-api-2-project-projectIdOrKey-component-get) resource if you want to get a full list of\n   * components with pagination.\n   *\n   * If your project uses Compass components, this API will return a paginated list of Compass components that are\n   * linked to issues in that project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectComponents<T = Models.ProjectComponent[]>(\n    parameters: Parameters.GetProjectComponents | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all components in a project. See the [Get project components\n   * paginated](#api-rest-api-2-project-projectIdOrKey-component-get) resource if you want to get a full list of\n   * components with pagination.\n   *\n   * If your project uses Compass components, this API will return a paginated list of Compass components that are\n   * linked to issues in that project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectComponents<T = Models.ProjectComponent[]>(\n    parameters: Parameters.GetProjectComponents | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectComponents<T = Models.ProjectComponent[]>(\n    parameters: Parameters.GetProjectComponents | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/components`,\n      method: 'GET',\n      params: {\n        componentSource: typeof parameters !== 'string' ? parameters.componentSource : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectEmail {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the [project's sender email address](https://confluence.atlassian.com/x/dolKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectEmail<T = Models.ProjectEmailAddress>(\n    parameters: Parameters.GetProjectEmail | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the [project's sender email address](https://confluence.atlassian.com/x/dolKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectEmail<T = Models.ProjectEmailAddress>(\n    parameters: Parameters.GetProjectEmail | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectEmail<T = Models.ProjectEmailAddress>(\n    parameters: Parameters.GetProjectEmail | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectId = typeof parameters === 'string' ? parameters : parameters.projectId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectId}/email`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the [project's sender email address](https://confluence.atlassian.com/x/dolKLg).\n   *\n   * If `emailAddress` is an empty string, the default email address is restored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateProjectEmail<T = void>(parameters: Parameters.UpdateProjectEmail, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the [project's sender email address](https://confluence.atlassian.com/x/dolKLg).\n   *\n   * If `emailAddress` is an empty string, the default email address is restored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateProjectEmail<T = void>(parameters: Parameters.UpdateProjectEmail, callback?: never): Promise<T>;\n  async updateProjectEmail<T = void>(\n    parameters: Parameters.UpdateProjectEmail,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectId}/email`,\n      method: 'PUT',\n      data: {\n        emailAddress: parameters.emailAddress,\n        emailAddressStatus: parameters.emailAddressStatus,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectFeatures {\n  constructor(private client: Client) {}\n\n  /** Returns the list of features for a project. */\n  async getFeaturesForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.GetFeaturesForProject | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns the list of features for a project. */\n  async getFeaturesForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.GetFeaturesForProject | string,\n    callback?: never,\n  ): Promise<T>;\n  async getFeaturesForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.GetFeaturesForProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/features`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Sets the state of a project feature. */\n  async toggleFeatureForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.ToggleFeatureForProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Sets the state of a project feature. */\n  async toggleFeatureForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.ToggleFeatureForProject,\n    callback?: never,\n  ): Promise<T>;\n  async toggleFeatureForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.ToggleFeatureForProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/features/${parameters.featureKey}`,\n      method: 'PUT',\n      data: {\n        state: parameters.state,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectKeyAndNameValidation {\n  constructor(private client: Client) {}\n\n  /**\n   * Validates a project key by confirming the key is a valid string and not in use.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async validateProjectKey<T = Models.ErrorCollection>(\n    parameters: Parameters.ValidateProjectKey | string | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Validates a project key by confirming the key is a valid string and not in use.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async validateProjectKey<T = Models.ErrorCollection>(\n    parameters?: Parameters.ValidateProjectKey | string,\n    callback?: never,\n  ): Promise<T>;\n  async validateProjectKey<T = Models.ErrorCollection>(\n    parameters?: Parameters.ValidateProjectKey | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const key = typeof parameters === 'string' ? parameters : parameters?.key;\n\n    const config: RequestConfig = {\n      url: '/rest/api/2/projectvalidate/key',\n      method: 'GET',\n      params: {\n        key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Validates a project key and, if the key is invalid or in use, generates a valid random string for the project key.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getValidProjectKey<T = string>(\n    parameters: Parameters.GetValidProjectKey | string | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Validates a project key and, if the key is invalid or in use, generates a valid random string for the project key.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getValidProjectKey<T = string>(\n    parameters?: Parameters.GetValidProjectKey | string,\n    callback?: never,\n  ): Promise<T>;\n  async getValidProjectKey<T = string>(\n    parameters?: Parameters.GetValidProjectKey | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const key = typeof parameters === 'string' ? parameters : parameters?.key;\n\n    const config: RequestConfig = {\n      url: '/rest/api/2/projectvalidate/validProjectKey',\n      method: 'GET',\n      params: {\n        key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Checks that a project name isn't in use. If the name isn't in use, the passed string is returned. If the name is in\n   * use, this operation attempts to generate a valid project name based on the one supplied, usually by adding a\n   * sequence number. If a valid project name cannot be generated, a 404 response is returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getValidProjectName<T = unknown>(\n    parameters: Parameters.GetValidProjectName | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Checks that a project name isn't in use. If the name isn't in use, the passed string is returned. If the name is in\n   * use, this operation attempts to generate a valid project name based on the one supplied, usually by adding a\n   * sequence number. If a valid project name cannot be generated, a 404 response is returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getValidProjectName<T = unknown>(\n    parameters: Parameters.GetValidProjectName | string,\n    callback?: never,\n  ): Promise<T>;\n  async getValidProjectName<T = unknown>(\n    parameters: Parameters.GetValidProjectName | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const name = typeof parameters === 'string' ? parameters : parameters.name;\n\n    const config: RequestConfig = {\n      url: '/rest/api/2/projectvalidate/validProjectName',\n      method: 'GET',\n      params: {\n        name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectPermissionSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the [issue security scheme](https://confluence.atlassian.com/x/J4lKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or the _Administer Projects_\n   * [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getProjectIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetProjectIssueSecurityScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the [issue security scheme](https://confluence.atlassian.com/x/J4lKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or the _Administer Projects_\n   * [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getProjectIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetProjectIssueSecurityScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetProjectIssueSecurityScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectKeyOrId = typeof parameters === 'string' ? parameters : parameters.projectKeyOrId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectKeyOrId}/issuesecuritylevelscheme`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets the [permission scheme](https://confluence.atlassian.com/x/yodKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getAssignedPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetAssignedPermissionScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets the [permission scheme](https://confluence.atlassian.com/x/yodKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getAssignedPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetAssignedPermissionScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAssignedPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetAssignedPermissionScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectKeyOrId = typeof parameters === 'string' ? parameters : parameters.projectKeyOrId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectKeyOrId}/permissionscheme`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns a permission scheme with a project. See [Managing project\n   * permissions](https://confluence.atlassian.com/x/yodKLg) for more information about permission schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   */\n  async assignPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.AssignPermissionScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns a permission scheme with a project. See [Managing project\n   * permissions](https://confluence.atlassian.com/x/yodKLg) for more information about permission schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   */\n  async assignPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.AssignPermissionScheme,\n    callback?: never,\n  ): Promise<T>;\n  async assignPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.AssignPermissionScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectKeyOrId}/permissionscheme`,\n      method: 'PUT',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        id: parameters.id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all [issue security](https://confluence.atlassian.com/x/J4lKLg) levels for the project that the user has\n   * access to.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project, however, issue security\n   * levels are only returned for authenticated user with _Set Issue Security_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) for the project.\n   */\n  async getSecurityLevelsForProject<T = Models.ProjectIssueSecurityLevels>(\n    parameters: Parameters.GetSecurityLevelsForProject | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all [issue security](https://confluence.atlassian.com/x/J4lKLg) levels for the project that the user has\n   * access to.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project, however, issue security\n   * levels are only returned for authenticated user with _Set Issue Security_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) for the project.\n   */\n  async getSecurityLevelsForProject<T = Models.ProjectIssueSecurityLevels>(\n    parameters: Parameters.GetSecurityLevelsForProject | string,\n    callback?: never,\n  ): Promise<T>;\n  async getSecurityLevelsForProject<T = Models.ProjectIssueSecurityLevels>(\n    parameters: Parameters.GetSecurityLevelsForProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectKeyOrId = typeof parameters === 'string' ? parameters : parameters.projectKeyOrId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectKeyOrId}/securitylevel`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * keys for the project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetProjectPropertyKeys | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * keys for the project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetProjectPropertyKeys | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetProjectPropertyKeys | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of a [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property.\n   */\n  async getProjectProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetProjectProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property.\n   */\n  async getProjectProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetProjectProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetProjectProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of the [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   * You can use project properties to store custom data against the project.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the property is created.\n   */\n  async setProjectProperty<T = unknown>(\n    parameters: Parameters.SetProjectProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of the [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   * You can use project properties to store custom data against the project.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the property is created.\n   */\n  async setProjectProperty<T = unknown>(parameters: Parameters.SetProjectProperty, callback?: never): Promise<T>;\n  async setProjectProperty<T = unknown>(\n    parameters: Parameters.SetProjectProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the\n   * [property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * from a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property.\n   */\n  async deleteProjectProperty<T = void>(\n    parameters: Parameters.DeleteProjectProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the\n   * [property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * from a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property.\n   */\n  async deleteProjectProperty<T = void>(parameters: Parameters.DeleteProjectProperty, callback?: never): Promise<T>;\n  async deleteProjectProperty<T = void>(\n    parameters: Parameters.DeleteProjectProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectRoleActors {\n  constructor(private client: Client) {}\n\n  /**\n   * Adds actors to a project role for the project.\n   *\n   * To replace all actors for the project, use [Set actors for project\n   * role](#api-rest-api-2-project-projectIdOrKey-role-id-put).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addActorUsers<T = Models.ProjectRole>(\n    parameters: Parameters.AddActorUsers,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds actors to a project role for the project.\n   *\n   * To replace all actors for the project, use [Set actors for project\n   * role](#api-rest-api-2-project-projectIdOrKey-role-id-put).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addActorUsers<T = Models.ProjectRole>(parameters: Parameters.AddActorUsers, callback?: never): Promise<T>;\n  async addActorUsers<T = Models.ProjectRole>(\n    parameters: Parameters.AddActorUsers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/role/${parameters.id}`,\n      method: 'POST',\n      data: {\n        user: parameters.user,\n        group: parameters.group,\n        groupId: parameters.groupId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the actors for a project role for a project, replacing all existing actors.\n   *\n   * To add actors to the project without overwriting the existing list, use [Add actors to project\n   * role](#api-rest-api-2-project-projectIdOrKey-role-id-post).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setActors<T = Models.ProjectRole>(parameters: Parameters.SetActors, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the actors for a project role for a project, replacing all existing actors.\n   *\n   * To add actors to the project without overwriting the existing list, use [Add actors to project\n   * role](#api-rest-api-2-project-projectIdOrKey-role-id-post).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setActors<T = Models.ProjectRole>(parameters: Parameters.SetActors, callback?: never): Promise<T>;\n  async setActors<T = Models.ProjectRole>(parameters: Parameters.SetActors, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/role/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        categorisedActors: parameters.categorisedActors,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes actors from a project role for the project.\n   *\n   * To remove default actors from the project role, use [Delete default actors from project\n   * role](#api-rest-api-2-role-id-actors-delete).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteActor<T = void>(parameters: Parameters.DeleteActor, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes actors from a project role for the project.\n   *\n   * To remove default actors from the project role, use [Delete default actors from project\n   * role](#api-rest-api-2-role-id-actors-delete).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteActor<T = void>(parameters: Parameters.DeleteActor, callback?: never): Promise<T>;\n  async deleteActor<T = void>(parameters: Parameters.DeleteActor, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/role/${parameters.id}`,\n      method: 'DELETE',\n      params: {\n        user: parameters.user,\n        group: parameters.group,\n        groupId: parameters.groupId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the [default actors](#api-rest-api-2-resolution-get) for the project role.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoleActorsForRole<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleActorsForRole | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the [default actors](#api-rest-api-2-resolution-get) for the project role.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoleActorsForRole<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleActorsForRole | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectRoleActorsForRole<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleActorsForRole | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/role/${id}/actors`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds [default actors](#api-rest-api-2-resolution-get) to a role. You may add groups or users, but you cannot add\n   * groups and users in the same request.\n   *\n   * Changing a project role's default actors does not affect project role members for projects already created.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addProjectRoleActorsToRole<T = Models.ProjectRole>(\n    parameters: Parameters.AddProjectRoleActorsToRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds [default actors](#api-rest-api-2-resolution-get) to a role. You may add groups or users, but you cannot add\n   * groups and users in the same request.\n   *\n   * Changing a project role's default actors does not affect project role members for projects already created.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addProjectRoleActorsToRole<T = Models.ProjectRole>(\n    parameters: Parameters.AddProjectRoleActorsToRole,\n    callback?: never,\n  ): Promise<T>;\n  async addProjectRoleActorsToRole<T = Models.ProjectRole>(\n    parameters: Parameters.AddProjectRoleActorsToRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/role/${parameters.id}/actors`,\n      method: 'POST',\n      data: {\n        user: parameters.user,\n        groupId: parameters.groupId,\n        group: parameters.group,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the [default actors](#api-rest-api-2-resolution-get) from a project role. You may delete a group or user,\n   * but you cannot delete a group and a user in the same request.\n   *\n   * Changing a project role's default actors does not affect project role members for projects already created.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectRoleActorsFromRole<T = Models.ProjectRole>(\n    parameters: Parameters.DeleteProjectRoleActorsFromRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the [default actors](#api-rest-api-2-resolution-get) from a project role. You may delete a group or user,\n   * but you cannot delete a group and a user in the same request.\n   *\n   * Changing a project role's default actors does not affect project role members for projects already created.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectRoleActorsFromRole<T = Models.ProjectRole>(\n    parameters: Parameters.DeleteProjectRoleActorsFromRole,\n    callback?: never,\n  ): Promise<T>;\n  async deleteProjectRoleActorsFromRole<T = Models.ProjectRole>(\n    parameters: Parameters.DeleteProjectRoleActorsFromRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/role/${parameters.id}/actors`,\n      method: 'DELETE',\n      params: {\n        user: parameters.user,\n        groupId: parameters.groupId,\n        group: parameters.group,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectRoles {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of [project\n   * roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) for the project\n   * returning the name and self URL for each role.\n   *\n   * Note that all project roles are shared with all projects in Jira Cloud. See [Get all project\n   * roles](#api-rest-api-2-role-get) for more information.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for any project on the site\n   * or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoles<T = Record<string, string>>(\n    parameters: Parameters.GetProjectRoles | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of [project\n   * roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) for the project\n   * returning the name and self URL for each role.\n   *\n   * Note that all project roles are shared with all projects in Jira Cloud. See [Get all project\n   * roles](#api-rest-api-2-role-get) for more information.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for any project on the site\n   * or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoles<T = Record<string, string>>(\n    parameters: Parameters.GetProjectRoles | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectRoles<T = Record<string, string>>(\n    parameters: Parameters.GetProjectRoles | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/role`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a project role's details and actors associated with the project. The list of actors is sorted by display\n   * name.\n   *\n   * To check whether a user belongs to a role based on their group memberships, use [Get\n   * user](#api-rest-api-2-user-get) with the `groups` expand parameter selected. Then check whether the user keys and\n   * groups match with the actors returned for the project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a project role's details and actors associated with the project. The list of actors is sorted by display\n   * name.\n   *\n   * To check whether a user belongs to a role based on their group memberships, use [Get\n   * user](#api-rest-api-2-user-get) with the `groups` expand parameter selected. Then check whether the user keys and\n   * groups match with the actors returned for the project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRole<T = Models.ProjectRole>(parameters: Parameters.GetProjectRole, callback?: never): Promise<T>;\n  async getProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}/role/${parameters.id}`,\n      method: 'GET',\n      params: {\n        excludeInactiveUsers: parameters.excludeInactiveUsers,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) and\n   * the details for each role. Note that the list of project roles is common to all projects.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectRoleDetails<T = Models.ProjectRoleDetails[]>(\n    parameters: Parameters.GetProjectRoleDetails | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) and\n   * the details for each role. Note that the list of project roles is common to all projects.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectRoleDetails<T = Models.ProjectRoleDetails[]>(\n    parameters: Parameters.GetProjectRoleDetails | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectRoleDetails<T = Models.ProjectRoleDetails[]>(\n    parameters: Parameters.GetProjectRoleDetails | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/roledetails`,\n      method: 'GET',\n      params: {\n        currentMember: typeof parameters !== 'string' ? parameters.currentMember : undefined,\n        excludeConnectAddons: typeof parameters !== 'string' ? parameters.excludeConnectAddons : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets a list of all project roles, complete with project role details and default actors.\n   *\n   * ### About project roles\n   *\n   * [Project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) are a flexible\n   * way to to associate users and groups with projects. In Jira Cloud, the list of project roles is shared globally\n   * with all projects, but each project can have a different set of actors associated with it (unlike groups, which\n   * have the same membership throughout all Jira applications).\n   *\n   * Project roles are used in [permission schemes](#api-rest-api-2-permissionscheme-get), [email notification\n   * schemes](#api-rest-api-2-notificationscheme-get), [issue security\n   * levels](#api-rest-api-2-issuesecurityschemes-get), [comment visibility](#api-rest-api-2-comment-list-post), and\n   * workflow conditions.\n   *\n   * #### Members and actors\n   *\n   * In the Jira REST API, a member of a project role is called an _actor_. An _actor_ is a group or user associated\n   * with a project role.\n   *\n   * Actors may be set as [default\n   * members](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/#Specifying-'default-members'-for-a-project-role)\n   * of the project role or set at the project level:\n   *\n   * - Default actors: Users and groups that are assigned to the project role for all newly created projects. The default\n   *   actors can be removed at the project level later if desired.\n   * - Actors: Users and groups that are associated with a project role for a project, which may differ from the default\n   *   actors. This enables you to assign a user to different roles in different projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllProjectRoles<T = Models.ProjectRole[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Gets a list of all project roles, complete with project role details and default actors.\n   *\n   * ### About project roles\n   *\n   * [Project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) are a flexible\n   * way to to associate users and groups with projects. In Jira Cloud, the list of project roles is shared globally\n   * with all projects, but each project can have a different set of actors associated with it (unlike groups, which\n   * have the same membership throughout all Jira applications).\n   *\n   * Project roles are used in [permission schemes](#api-rest-api-2-permissionscheme-get), [email notification\n   * schemes](#api-rest-api-2-notificationscheme-get), [issue security\n   * levels](#api-rest-api-2-issuesecurityschemes-get), [comment visibility](#api-rest-api-2-comment-list-post), and\n   * workflow conditions.\n   *\n   * #### Members and actors\n   *\n   * In the Jira REST API, a member of a project role is called an _actor_. An _actor_ is a group or user associated\n   * with a project role.\n   *\n   * Actors may be set as [default\n   * members](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/#Specifying-'default-members'-for-a-project-role)\n   * of the project role or set at the project level:\n   *\n   * - Default actors: Users and groups that are assigned to the project role for all newly created projects. The default\n   *   actors can be removed at the project level later if desired.\n   * - Actors: Users and groups that are associated with a project role for a project, which may differ from the default\n   *   actors. This enables you to assign a user to different roles in different projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllProjectRoles<T = Models.ProjectRole[]>(callback?: never): Promise<T>;\n  async getAllProjectRoles<T = Models.ProjectRole[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/role',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a new project role with no [default actors](#api-rest-api-2-resolution-get). You can use the [Add default\n   * actors to project role](#api-rest-api-2-role-id-actors-post) operation to add default actors to the project role\n   * after creating it.\n   *\n   * _Note that although a new project role is available to all projects upon creation, any default actors that are\n   * associated with the project role are not added to projects that existed prior to the role being created._<\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.CreateProjectRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a new project role with no [default actors](#api-rest-api-2-resolution-get). You can use the [Add default\n   * actors to project role](#api-rest-api-2-role-id-actors-post) operation to add default actors to the project role\n   * after creating it.\n   *\n   * _Note that although a new project role is available to all projects upon creation, any default actors that are\n   * associated with the project role are not added to projects that existed prior to the role being created._<\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.CreateProjectRole,\n    callback?: never,\n  ): Promise<T>;\n  async createProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.CreateProjectRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/role',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets the project role details and the default actors associated with the role. The list of default actors is sorted\n   * by display name.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoleById<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleById | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets the project role details and the default actors associated with the role. The list of default actors is sorted\n   * by display name.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoleById<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleById | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectRoleById<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleById | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/role/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates either the project role's name or its description.\n   *\n   * You cannot update both the name and description at the same time using this operation. If you send a request with a\n   * name and a description only the name is updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async partialUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.PartialUpdateProjectRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates either the project role's name or its description.\n   *\n   * You cannot update both the name and description at the same time using this operation. If you send a request with a\n   * name and a description only the name is updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async partialUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.PartialUpdateProjectRole,\n    callback?: never,\n  ): Promise<T>;\n  async partialUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.PartialUpdateProjectRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/role/${parameters.id}`,\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the project role's name and description. You must include both a name and a description in the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async fullyUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.FullyUpdateProjectRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the project role's name and description. You must include both a name and a description in the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async fullyUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.FullyUpdateProjectRole,\n    callback?: never,\n  ): Promise<T>;\n  async fullyUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.FullyUpdateProjectRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/role/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a project role. You must specify a replacement project role if you wish to delete a project role that is in\n   * use.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectRole<T = void>(\n    parameters: Parameters.DeleteProjectRole | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a project role. You must specify a replacement project role if you wish to delete a project role that is in\n   * use.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectRole<T = void>(parameters: Parameters.DeleteProjectRole | string, callback?: never): Promise<T>;\n  async deleteProjectRole<T = void>(\n    parameters: Parameters.DeleteProjectRole | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/role/${id}`,\n      method: 'DELETE',\n      params: {\n        swap: typeof parameters !== 'string' ? parameters.swap : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectTemplates {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a project based on a custom template provided in the request.\n   *\n   * The request body should contain the project details and the capabilities that comprise the project:\n   *\n   * - `details` - represents the project details settings\n   * - `template` - represents a list of capabilities responsible for creating specific parts of a project\n   *\n   * A capability is defined as a unit of configuration for the project you want to create.\n   *\n   * This operation is:\n   *\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `Location` link in the response header to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * _**Note: This API is only supported for Jira Enterprise edition.**_\n   */\n  async createProjectWithCustomTemplate<T = unknown>(\n    parameters: Parameters.CreateProjectWithCustomTemplate | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a project based on a custom template provided in the request.\n   *\n   * The request body should contain the project details and the capabilities that comprise the project:\n   *\n   * - `details` - represents the project details settings\n   * - `template` - represents a list of capabilities responsible for creating specific parts of a project\n   *\n   * A capability is defined as a unit of configuration for the project you want to create.\n   *\n   * This operation is:\n   *\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `Location` link in the response header to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * _**Note: This API is only supported for Jira Enterprise edition.**_\n   */\n  async createProjectWithCustomTemplate<T = unknown>(\n    parameters?: Parameters.CreateProjectWithCustomTemplate,\n    callback?: never,\n  ): Promise<T>;\n  async createProjectWithCustomTemplate<T = unknown>(\n    parameters?: Parameters.CreateProjectWithCustomTemplate,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/project-template',\n      method: 'POST',\n      data: {\n        details: parameters?.details,\n        template: parameters?.template,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectTypes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all [project types](https://confluence.atlassian.com/x/Var1Nw), whether or not the instance has a valid\n   * license for each type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllProjectTypes<T = Models.ProjectType[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all [project types](https://confluence.atlassian.com/x/Var1Nw), whether or not the instance has a valid\n   * license for each type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getAllProjectTypes<T = Models.ProjectType[]>(callback?: never): Promise<T>;\n  async getAllProjectTypes<T = Models.ProjectType[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/project/type',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns all [project types](https://confluence.atlassian.com/x/Var1Nw) with a valid license. */\n  async getAllAccessibleProjectTypes<T = Models.ProjectType[]>(callback: Callback<T>): Promise<void>;\n  /** Returns all [project types](https://confluence.atlassian.com/x/Var1Nw) with a valid license. */\n  async getAllAccessibleProjectTypes<T = Models.ProjectType[]>(callback?: never): Promise<T>;\n  async getAllAccessibleProjectTypes<T = Models.ProjectType[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/project/type/accessible',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [project type](https://confluence.atlassian.com/x/Var1Nw).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetProjectTypeByKey | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [project type](https://confluence.atlassian.com/x/Var1Nw).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetProjectTypeByKey | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetProjectTypeByKey | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectTypeKey = typeof parameters === 'string' ? parameters : parameters.projectTypeKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/type/${projectTypeKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [project type](https://confluence.atlassian.com/x/Var1Nw) if it is accessible to the user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAccessibleProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetAccessibleProjectTypeByKey | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [project type](https://confluence.atlassian.com/x/Var1Nw) if it is accessible to the user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAccessibleProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetAccessibleProjectTypeByKey | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAccessibleProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetAccessibleProjectTypeByKey | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectTypeKey = typeof parameters === 'string' ? parameters : parameters.projectTypeKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/type/${projectTypeKey}/accessible`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectVersions {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * versions in a project. See the [Get project versions](#api-rest-api-2-project-projectIdOrKey-versions-get) resource\n   * if you want to get a full list of versions without pagination.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectVersionsPaginated<T = Models.PageVersion>(\n    parameters: Parameters.GetProjectVersionsPaginated | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * versions in a project. See the [Get project versions](#api-rest-api-2-project-projectIdOrKey-versions-get) resource\n   * if you want to get a full list of versions without pagination.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectVersionsPaginated<T = Models.PageVersion>(\n    parameters: Parameters.GetProjectVersionsPaginated | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectVersionsPaginated<T = Models.PageVersion>(\n    parameters: Parameters.GetProjectVersionsPaginated | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/version`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' ? parameters.startAt : undefined,\n        maxResults: typeof parameters !== 'string' ? parameters.maxResults : undefined,\n        orderBy: typeof parameters !== 'string' ? parameters.orderBy : undefined,\n        query: typeof parameters !== 'string' ? parameters.query : undefined,\n        status: typeof parameters !== 'string' ? parameters.status : undefined,\n        expand: typeof parameters !== 'string' ? parameters.expand : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all versions in a project. The response is not paginated. Use [Get project versions\n   * paginated](#api-rest-api-2-project-projectIdOrKey-version-get) if you want to get the versions in a project with\n   * pagination.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectVersions<T = Models.Version[]>(\n    parameters: Parameters.GetProjectVersions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all versions in a project. The response is not paginated. Use [Get project versions\n   * paginated](#api-rest-api-2-project-projectIdOrKey-version-get) if you want to get the versions in a project with\n   * pagination.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectVersions<T = Models.Version[]>(\n    parameters: Parameters.GetProjectVersions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectVersions<T = Models.Version[]>(\n    parameters: Parameters.GetProjectVersions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/versions`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' ? parameters.expand : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project the version is added to.\n   */\n  async createVersion<T = Models.Version>(parameters: Parameters.CreateVersion, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project the version is added to.\n   */\n  async createVersion<T = Models.Version>(parameters: Parameters.CreateVersion, callback?: never): Promise<T>;\n  async createVersion<T = Models.Version>(\n    parameters: Parameters.CreateVersion,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/version',\n      method: 'POST',\n      data: {\n        approvers: parameters.approvers,\n        archived: parameters.archived,\n        description: parameters.description,\n        driver: parameters.driver,\n        expand: parameters.expand,\n        id: parameters.id,\n        issuesStatusForFixVersion: parameters.issuesStatusForFixVersion,\n        moveUnfixedIssuesTo: parameters.moveUnfixedIssuesTo,\n        name: parameters.name,\n        operations: parameters.operations,\n        overdue: parameters.overdue,\n        projectId: parameters.projectId,\n        releaseDate: parameters.releaseDate,\n        released: parameters.released,\n        self: parameters.self,\n        startDate: parameters.startDate,\n        userReleaseDate: parameters.userReleaseDate,\n        userStartDate: parameters.userStartDate,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version.\n   */\n  async getVersion<T = Models.Version>(\n    parameters: Parameters.GetVersion | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version.\n   */\n  async getVersion<T = Models.Version>(parameters: Parameters.GetVersion | string, callback?: never): Promise<T>;\n  async getVersion<T = Models.Version>(\n    parameters: Parameters.GetVersion | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${id}`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' ? parameters.expand : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async updateVersion<T = Models.Version>(parameters: Parameters.UpdateVersion, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async updateVersion<T = Models.Version>(parameters: Parameters.UpdateVersion, callback?: never): Promise<T>;\n  async updateVersion<T = Models.Version>(\n    parameters: Parameters.UpdateVersion,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        approvers: parameters.approvers,\n        driver: parameters.driver,\n        expand: parameters.expand,\n        description: parameters.description,\n        name: parameters.name,\n        archived: parameters.archived,\n        released: parameters.released,\n        startDate: parameters.startDate,\n        releaseDate: parameters.releaseDate,\n        projectId: parameters.projectId,\n        moveUnfixedIssuesTo: parameters.moveUnfixedIssuesTo,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Merges two project versions. The merge is completed by deleting the version specified in `id` and replacing any\n   * occurrences of its ID in `fixVersion` with the version ID specified in `moveIssuesTo`.\n   *\n   * Consider using [ Delete and replace version](#api-rest-api-2-version-id-removeAndSwap-post) instead. This resource\n   * supports swapping version values in `fixVersion`, `affectedVersion`, and custom fields.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async mergeVersions<T = void>(parameters: Parameters.MergeVersions, callback: Callback<T>): Promise<void>;\n  /**\n   * Merges two project versions. The merge is completed by deleting the version specified in `id` and replacing any\n   * occurrences of its ID in `fixVersion` with the version ID specified in `moveIssuesTo`.\n   *\n   * Consider using [ Delete and replace version](#api-rest-api-2-version-id-removeAndSwap-post) instead. This resource\n   * supports swapping version values in `fixVersion`, `affectedVersion`, and custom fields.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async mergeVersions<T = void>(parameters: Parameters.MergeVersions, callback?: never): Promise<T>;\n  async mergeVersions<T = void>(parameters: Parameters.MergeVersions, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${parameters.id}/mergeto/${parameters.moveIssuesTo}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Modifies the version's sequence within the project, which affects the display order of the versions in Jira.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async moveVersion<T = Models.Version>(parameters: Parameters.MoveVersion, callback: Callback<T>): Promise<void>;\n  /**\n   * Modifies the version's sequence within the project, which affects the display order of the versions in Jira.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async moveVersion<T = Models.Version>(parameters: Parameters.MoveVersion, callback?: never): Promise<T>;\n  async moveVersion<T = Models.Version>(parameters: Parameters.MoveVersion, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${parameters.id}/move`,\n      method: 'POST',\n      data: {\n        after: parameters.after,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the following counts for a version:\n   *\n   * - Number of issues where the `fixVersion` is set to the version.\n   * - Number of issues where the `affectedVersion` is set to the version.\n   * - Number of issues where a version custom field is set to the version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async getVersionRelatedIssues<T = Models.VersionIssueCounts>(\n    parameters: Parameters.GetVersionRelatedIssues | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the following counts for a version:\n   *\n   * - Number of issues where the `fixVersion` is set to the version.\n   * - Number of issues where the `affectedVersion` is set to the version.\n   * - Number of issues where a version custom field is set to the version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async getVersionRelatedIssues<T = Models.VersionIssueCounts>(\n    parameters: Parameters.GetVersionRelatedIssues | string,\n    callback?: never,\n  ): Promise<T>;\n  async getVersionRelatedIssues<T = Models.VersionIssueCounts>(\n    parameters: Parameters.GetVersionRelatedIssues | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${id}/relatedIssueCounts`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns related work items for the given version id.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version.\n   */\n  async getRelatedWork<T = Models.VersionRelatedWork[]>(\n    parameters: Parameters.GetRelatedWork,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns related work items for the given version id.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version.\n   */\n  async getRelatedWork<T = Models.VersionRelatedWork[]>(\n    parameters: Parameters.GetRelatedWork,\n    callback?: never,\n  ): Promise<T>;\n  async getRelatedWork<T = Models.VersionRelatedWork[]>(\n    parameters: Parameters.GetRelatedWork,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${parameters.id}/relatedwork`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a related work for the given version. You can only create a generic link type of related works via this\n   * API. relatedWorkId will be auto-generated UUID, that does not need to be provided.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async createRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.CreateRelatedWork,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a related work for the given version. You can only create a generic link type of related works via this\n   * API. relatedWorkId will be auto-generated UUID, that does not need to be provided.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async createRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.CreateRelatedWork,\n    callback?: never,\n  ): Promise<T>;\n  async createRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.CreateRelatedWork,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${parameters.id}/relatedwork`,\n      method: 'POST',\n      data: {\n        category: parameters.category,\n        issueId: parameters.issueId,\n        relatedWorkId: parameters.relatedWorkId,\n        title: parameters.title,\n        url: parameters.url,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the given related work. You can only update generic link related works via Rest APIs. Any archived version\n   * related works can't be edited.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async updateRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.UpdateRelatedWork,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the given related work. You can only update generic link related works via Rest APIs. Any archived version\n   * related works can't be edited.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async updateRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.UpdateRelatedWork,\n    callback?: never,\n  ): Promise<T>;\n  async updateRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.UpdateRelatedWork,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${parameters.id}/relatedwork`,\n      method: 'PUT',\n      data: {\n        category: parameters.category,\n        issueId: parameters.issueId,\n        relatedWorkId: parameters.relatedWorkId,\n        title: parameters.title,\n        url: parameters.url,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a project version.\n   *\n   * Alternative versions can be provided to update issues that use the deleted version in `fixVersion`,\n   * `affectedVersion`, or any version picker custom fields. If alternatives are not provided, occurrences of\n   * `fixVersion`, `affectedVersion`, and any version picker custom field, that contain the deleted version, are\n   * cleared. Any replacement version must be in the same project as the version being deleted and cannot be the version\n   * being deleted.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async deleteAndReplaceVersion<T = void>(\n    parameters: Parameters.DeleteAndReplaceVersion,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a project version.\n   *\n   * Alternative versions can be provided to update issues that use the deleted version in `fixVersion`,\n   * `affectedVersion`, or any version picker custom fields. If alternatives are not provided, occurrences of\n   * `fixVersion`, `affectedVersion`, and any version picker custom field, that contain the deleted version, are\n   * cleared. Any replacement version must be in the same project as the version being deleted and cannot be the version\n   * being deleted.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async deleteAndReplaceVersion<T = void>(parameters: Parameters.DeleteAndReplaceVersion, callback?: never): Promise<T>;\n  async deleteAndReplaceVersion<T = void>(\n    parameters: Parameters.DeleteAndReplaceVersion,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${parameters.id}/removeAndSwap`,\n      method: 'POST',\n      data: {\n        customFieldReplacementList: parameters.customFieldReplacementList,\n        moveAffectedIssuesTo: parameters.moveAffectedIssuesTo,\n        moveFixIssuesTo: parameters.moveFixIssuesTo,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns counts of the issues and unresolved issues for the project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async getVersionUnresolvedIssues<T = Models.VersionUnresolvedIssuesCount>(\n    parameters: Parameters.GetVersionUnresolvedIssues | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns counts of the issues and unresolved issues for the project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async getVersionUnresolvedIssues<T = Models.VersionUnresolvedIssuesCount>(\n    parameters: Parameters.GetVersionUnresolvedIssues | string,\n    callback?: never,\n  ): Promise<T>;\n  async getVersionUnresolvedIssues<T = Models.VersionUnresolvedIssuesCount>(\n    parameters: Parameters.GetVersionUnresolvedIssues | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${id}/unresolvedIssueCount`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the given related work for the given version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async deleteRelatedWork<T = void>(parameters: Parameters.DeleteRelatedWork, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes the given related work for the given version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async deleteRelatedWork<T = void>(parameters: Parameters.DeleteRelatedWork, callback?: never): Promise<T>;\n  async deleteRelatedWork<T = void>(\n    parameters: Parameters.DeleteRelatedWork,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/version/${parameters.versionId}/relatedwork/${parameters.relatedWorkId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Projects {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a project based on a project type template, as shown in the following table:\n   *\n   * | Project Type Key | Project Template Key                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n   * | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n   * | `business`       | `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-tracking`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n   * | `service_desk`   | `com.atlassian.servicedesk:simplified-it-service-management`, `com.atlassian.servicedesk:simplified-general-service-desk-it`, `com.atlassian.servicedesk:simplified-general-service-desk-business`, `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-analytics-service-desk`, `com.atlassian.servicedesk:simplified-marketing-service-desk`, `com.atlassian.servicedesk:simplified-design-service-desk`, `com.atlassian.servicedesk:simplified-sales-service-desk`, `com.atlassian.servicedesk:simplified-blank-project-business`, `com.atlassian.servicedesk:simplified-blank-project-it`, `com.atlassian.servicedesk:simplified-finance-service-desk`, `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-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` |\n   * | `software`       | `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`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n   *\n   * The project types are available according to the installed Jira features as follows:\n   *\n   * - Jira Core, the default, enables `business` projects.\n   * - Jira Service Management enables `service_desk` projects.\n   * - Jira Software enables `software` projects.\n   *\n   * To determine which features are installed, go to **Jira settings** > **Apps** > **Manage apps** and review the\n   * System Apps list. To add Jira Software or Jira Service Management into a JIRA instance, use **Jira settings** >\n   * **Apps** > **Finding new apps**. For more information, see [ Managing\n   * add-ons](https://confluence.atlassian.com/x/S31NLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProject<T = Models.ProjectIdentifiers>(\n    parameters: Parameters.CreateProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a project based on a project type template, as shown in the following table:\n   *\n   * | Project Type Key | Project Template Key                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n   * | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n   * | `business`       | `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-tracking`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n   * | `service_desk`   | `com.atlassian.servicedesk:simplified-it-service-management`, `com.atlassian.servicedesk:simplified-general-service-desk-it`, `com.atlassian.servicedesk:simplified-general-service-desk-business`, `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-analytics-service-desk`, `com.atlassian.servicedesk:simplified-marketing-service-desk`, `com.atlassian.servicedesk:simplified-design-service-desk`, `com.atlassian.servicedesk:simplified-sales-service-desk`, `com.atlassian.servicedesk:simplified-blank-project-business`, `com.atlassian.servicedesk:simplified-blank-project-it`, `com.atlassian.servicedesk:simplified-finance-service-desk`, `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-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` |\n   * | `software`       | `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`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n   *\n   * The project types are available according to the installed Jira features as follows:\n   *\n   * - Jira Core, the default, enables `business` projects.\n   * - Jira Service Management enables `service_desk` projects.\n   * - Jira Software enables `software` projects.\n   *\n   * To determine which features are installed, go to **Jira settings** > **Apps** > **Manage apps** and review the\n   * System Apps list. To add Jira Software or Jira Service Management into a JIRA instance, use **Jira settings** >\n   * **Apps** > **Finding new apps**. For more information, see [ Managing\n   * add-ons](https://confluence.atlassian.com/x/S31NLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProject<T = Models.ProjectIdentifiers>(\n    parameters: Parameters.CreateProject,\n    callback?: never,\n  ): Promise<T>;\n  async createProject<T = Models.ProjectIdentifiers>(\n    parameters: Parameters.CreateProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/project',\n      method: 'POST',\n      data: {\n        assigneeType: parameters.assigneeType,\n        avatarId: parameters.avatarId,\n        categoryId: parameters.categoryId,\n        description: parameters.description,\n        fieldConfigurationScheme: parameters.fieldConfigurationScheme,\n        issueSecurityScheme: parameters.issueSecurityScheme,\n        issueTypeScheme: parameters.issueTypeScheme,\n        issueTypeScreenScheme: parameters.issueTypeScreenScheme,\n        key: parameters.key,\n        leadAccountId: parameters.leadAccountId,\n        name: parameters.name,\n        notificationScheme: parameters.notificationScheme,\n        permissionScheme: parameters.permissionScheme,\n        projectTemplateKey: parameters.projectTemplateKey,\n        projectTypeKey: parameters.projectTypeKey,\n        url: parameters.url,\n        workflowScheme: parameters.workflowScheme,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of up to 20 projects recently viewed by the user that are still visible to the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Projects are returned only where the user has one of:\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getRecent<T = Models.Project[]>(\n    parameters: Parameters.GetRecent | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of up to 20 projects recently viewed by the user that are still visible to the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Projects are returned only where the user has one of:\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getRecent<T = Models.Project[]>(parameters?: Parameters.GetRecent, callback?: never): Promise<T>;\n  async getRecent<T = Models.Project[]>(parameters?: Parameters.GetRecent, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/project/recent',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n        properties: parameters?.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * projects visible to the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Projects are returned only where the user has one of:\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchProjects<T = Models.PageProject>(\n    parameters: Parameters.SearchProjects | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * projects visible to the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Projects are returned only where the user has one of:\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchProjects<T = Models.PageProject>(parameters?: Parameters.SearchProjects, callback?: never): Promise<T>;\n  async searchProjects<T = Models.PageProject>(\n    parameters?: Parameters.SearchProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/project/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        orderBy: parameters?.orderBy,\n        id: parameters?.id,\n        keys: parameters?.keys,\n        query: parameters?.query,\n        typeKey: parameters?.typeKey,\n        categoryId: parameters?.categoryId,\n        action: parameters?.action,\n        expand: parameters?.expand,\n        status: parameters?.status,\n        properties: parameters?.properties,\n        propertyQuery: parameters?.propertyQuery,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the [project details](https://confluence.atlassian.com/x/ahLpNw) for a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProject<T = Models.Project>(\n    parameters: Parameters.GetProject | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the [project details](https://confluence.atlassian.com/x/ahLpNw) for a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProject<T = Models.Project>(parameters: Parameters.GetProject | string, callback?: never): Promise<T>;\n  async getProject<T = Models.Project>(\n    parameters: Parameters.GetProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' ? parameters.expand : undefined,\n        properties: typeof parameters !== 'string' ? parameters.properties : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the [project details](https://confluence.atlassian.com/x/ahLpNw) of a project.\n   *\n   * All parameters are optional in the body of the request. Schemes will only be updated if they are included in the\n   * request, any omitted schemes will be left unchanged.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). is only needed when changing the\n   * schemes or project key. Otherwise you will only need _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateProject<T = Models.Project>(parameters: Parameters.UpdateProject, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates the [project details](https://confluence.atlassian.com/x/ahLpNw) of a project.\n   *\n   * All parameters are optional in the body of the request. Schemes will only be updated if they are included in the\n   * request, any omitted schemes will be left unchanged.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). is only needed when changing the\n   * schemes or project key. Otherwise you will only need _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateProject<T = Models.Project>(parameters: Parameters.UpdateProject, callback?: never): Promise<T>;\n  async updateProject<T = Models.Project>(\n    parameters: Parameters.UpdateProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${parameters.projectIdOrKey}`,\n      method: 'PUT',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        assigneeType: parameters.assigneeType,\n        avatarId: parameters.avatarId,\n        categoryId: parameters.categoryId,\n        description: parameters.description,\n        issueSecurityScheme: parameters.issueSecurityScheme,\n        key: parameters.key,\n        leadAccountId: parameters.leadAccountId,\n        name: parameters.name,\n        notificationScheme: parameters.notificationScheme,\n        permissionScheme: parameters.permissionScheme,\n        projectTemplateKey: parameters.projectTemplateKey,\n        projectTypeKey: parameters.projectTypeKey,\n        releasedProjectKeys: parameters.releasedProjectKeys,\n        url: parameters.url,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a project.\n   *\n   * You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it.\n   * To restore a project, use the Jira UI.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProject<T = void>(parameters: Parameters.DeleteProject | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a project.\n   *\n   * You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it.\n   * To restore a project, use the Jira UI.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProject<T = void>(parameters: Parameters.DeleteProject | string, callback?: never): Promise<T>;\n  async deleteProject<T = void>(\n    parameters: Parameters.DeleteProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}`,\n      method: 'DELETE',\n      params: {\n        enableUndo: typeof parameters !== 'string' ? parameters.enableUndo : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Archives a project. You can't delete a project if it's archived. To delete an archived project, restore the project\n   * and then delete it. To restore a project, use the Jira UI.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async archiveProject<T = void>(parameters: Parameters.ArchiveProject | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Archives a project. You can't delete a project if it's archived. To delete an archived project, restore the project\n   * and then delete it. To restore a project, use the Jira UI.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async archiveProject<T = void>(parameters: Parameters.ArchiveProject | string, callback?: never): Promise<T>;\n  async archiveProject<T = void>(\n    parameters: Parameters.ArchiveProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/archive`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a project asynchronously.\n   *\n   * This operation is:\n   *\n   * - Transactional, that is, if part of the delete fails the project is not deleted.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectAsynchronously<T = unknown>(\n    parameters: Parameters.DeleteProjectAsynchronously | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a project asynchronously.\n   *\n   * This operation is:\n   *\n   * - Transactional, that is, if part of the delete fails the project is not deleted.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-2-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectAsynchronously<T = unknown>(\n    parameters: Parameters.DeleteProjectAsynchronously | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteProjectAsynchronously<T = unknown>(\n    parameters: Parameters.DeleteProjectAsynchronously | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/delete`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Restores a project that has been archived or placed in the Jira recycle bin.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)for Company managed projects.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project for Team managed projects.\n   */\n  async restore<T = Models.Project>(parameters: Parameters.Restore | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Restores a project that has been archived or placed in the Jira recycle bin.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)for Company managed projects.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project for Team managed projects.\n   */\n  async restore<T = Models.Project>(parameters: Parameters.Restore | string, callback?: never): Promise<T>;\n  async restore<T = Models.Project>(\n    parameters: Parameters.Restore | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/restore`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the valid statuses for a project. The statuses are grouped by issue type, as each project has a set of\n   * valid issue types and each issue type has a set of valid statuses.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getAllStatuses<T = Models.IssueTypeWithStatus[]>(\n    parameters: Parameters.GetAllStatuses | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the valid statuses for a project. The statuses are grouped by issue type, as each project has a set of\n   * valid issue types and each issue type has a set of valid statuses.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getAllStatuses<T = Models.IssueTypeWithStatus[]>(\n    parameters: Parameters.GetAllStatuses | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllStatuses<T = Models.IssueTypeWithStatus[]>(\n    parameters: Parameters.GetAllStatuses | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectIdOrKey}/statuses`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Get the issue type hierarchy for a next-gen project.\n   *\n   * The issue type hierarchy for a project consists of:\n   *\n   * - _Epic_ at level 1 (optional).\n   * - One or more issue types at level 0 such as _Story_, _Task_, or _Bug_. Where the issue type _Epic_ is defined, these\n   *   issue types are used to break down the content of an epic.\n   * - _Subtask_ at level -1 (optional). This issue type enables level 0 issue types to be broken down into components.\n   *   Issues based on a level -1 issue type must have a parent issue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getHierarchy<T = Models.ProjectIssueTypeHierarchy>(\n    parameters: Parameters.GetHierarchy | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Get the issue type hierarchy for a next-gen project.\n   *\n   * The issue type hierarchy for a project consists of:\n   *\n   * - _Epic_ at level 1 (optional).\n   * - One or more issue types at level 0 such as _Story_, _Task_, or _Bug_. Where the issue type _Epic_ is defined, these\n   *   issue types are used to break down the content of an epic.\n   * - _Subtask_ at level -1 (optional). This issue type enables level 0 issue types to be broken down into components.\n   *   Issues based on a level -1 issue type must have a parent issue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getHierarchy<T = Models.ProjectIssueTypeHierarchy>(\n    parameters: Parameters.GetHierarchy | string,\n    callback?: never,\n  ): Promise<T>;\n  async getHierarchy<T = Models.ProjectIssueTypeHierarchy>(\n    parameters: Parameters.GetHierarchy | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectId = typeof parameters === 'string' ? parameters : parameters.projectId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectId}/hierarchy`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets a [notification scheme](https://confluence.atlassian.com/x/8YdKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getNotificationSchemeForProject<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationSchemeForProject | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets a [notification scheme](https://confluence.atlassian.com/x/8YdKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getNotificationSchemeForProject<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationSchemeForProject | string,\n    callback?: never,\n  ): Promise<T>;\n  async getNotificationSchemeForProject<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationSchemeForProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectKeyOrId = typeof parameters === 'string' ? parameters : parameters.projectKeyOrId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/project/${projectKeyOrId}/notificationscheme`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' ? parameters.expand : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ScreenSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of screen\n   * schemes.\n   *\n   * Only screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreenSchemes<T = Models.PageScreenScheme>(\n    parameters: Parameters.GetScreenSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of screen\n   * schemes.\n   *\n   * Only screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreenSchemes<T = Models.PageScreenScheme>(\n    parameters?: Parameters.GetScreenSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getScreenSchemes<T = Models.PageScreenScheme>(\n    parameters?: Parameters.GetScreenSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/screenscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        expand: parameters?.expand,\n        queryString: parameters?.queryString,\n        orderBy: parameters?.orderBy,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createScreenScheme<T = Models.ScreenSchemeId>(\n    parameters: Parameters.CreateScreenScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createScreenScheme<T = Models.ScreenSchemeId>(\n    parameters: Parameters.CreateScreenScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async createScreenScheme<T = Models.ScreenSchemeId>(\n    parameters: Parameters.CreateScreenScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const name = typeof parameters === 'string' ? parameters : parameters.name;\n\n    const config: RequestConfig = {\n      url: '/rest/api/2/screenscheme',\n      method: 'POST',\n      data: {\n        name,\n        description: typeof parameters !== 'string' && parameters.description,\n        screens: typeof parameters !== 'string' && parameters.screens,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a screen scheme. Only screen schemes used in classic projects can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateScreenScheme<T = void>(parameters: Parameters.UpdateScreenScheme, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a screen scheme. Only screen schemes used in classic projects can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateScreenScheme<T = void>(parameters: Parameters.UpdateScreenScheme, callback?: never): Promise<T>;\n  async updateScreenScheme<T = void>(\n    parameters: Parameters.UpdateScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/screenscheme/${parameters.screenSchemeId}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        screens: parameters.screens,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a screen scheme. A screen scheme cannot be deleted if it is used in an issue type screen scheme.\n   *\n   * Only screens schemes used in classic projects can be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteScreenScheme<T = void>(\n    parameters: Parameters.DeleteScreenScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a screen scheme. A screen scheme cannot be deleted if it is used in an issue type screen scheme.\n   *\n   * Only screens schemes used in classic projects can be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteScreenScheme<T = void>(parameters: Parameters.DeleteScreenScheme | string, callback?: never): Promise<T>;\n  async deleteScreenScheme<T = void>(\n    parameters: Parameters.DeleteScreenScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const screenSchemeId = typeof parameters === 'string' ? parameters : parameters.screenSchemeId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/screenscheme/${screenSchemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ScreenTabFields {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all fields for a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is\n   *   specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen\n   *   Scheme.\n   */\n  async getAllScreenTabFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAllScreenTabFields,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all fields for a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is\n   *   specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen\n   *   Scheme.\n   */\n  async getAllScreenTabFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAllScreenTabFields,\n    callback?: never,\n  ): Promise<T>;\n  async getAllScreenTabFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAllScreenTabFields,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${parameters.screenId}/tabs/${parameters.tabId}/fields`,\n      method: 'GET',\n      params: {\n        projectKey: parameters.projectKey,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a field to a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addScreenTabField<T = Models.ScreenableField>(\n    parameters: Parameters.AddScreenTabField,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds a field to a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addScreenTabField<T = Models.ScreenableField>(\n    parameters: Parameters.AddScreenTabField,\n    callback?: never,\n  ): Promise<T>;\n  async addScreenTabField<T = Models.ScreenableField>(\n    parameters: Parameters.AddScreenTabField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${parameters.screenId}/tabs/${parameters.tabId}/fields`,\n      method: 'POST',\n      data: {\n        fieldId: parameters.fieldId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a field from a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeScreenTabField<T = void>(\n    parameters: Parameters.RemoveScreenTabField,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a field from a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeScreenTabField<T = void>(parameters: Parameters.RemoveScreenTabField, callback?: never): Promise<T>;\n  async removeScreenTabField<T = void>(\n    parameters: Parameters.RemoveScreenTabField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${parameters.screenId}/tabs/${parameters.tabId}/fields/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves a screen tab field.\n   *\n   * If `after` and `position` are provided in the request, `position` is ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveScreenTabField<T = void>(parameters: Parameters.MoveScreenTabField, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves a screen tab field.\n   *\n   * If `after` and `position` are provided in the request, `position` is ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveScreenTabField<T = void>(parameters: Parameters.MoveScreenTabField, callback?: never): Promise<T>;\n  async moveScreenTabField<T = void>(\n    parameters: Parameters.MoveScreenTabField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${parameters.screenId}/tabs/${parameters.tabId}/fields/${parameters.id}/move`,\n      method: 'POST',\n      data: {\n        after: parameters.after,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ScreenTabs {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the list of tabs for a bulk of screens.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getBulkScreenTabs<T = unknown>(\n    parameters: Parameters.GetBulkScreenTabs | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the list of tabs for a bulk of screens.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getBulkScreenTabs<T = unknown>(parameters?: Parameters.GetBulkScreenTabs, callback?: never): Promise<T>;\n  async getBulkScreenTabs<T = unknown>(\n    parameters?: Parameters.GetBulkScreenTabs,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/screens/tabs',\n      method: 'GET',\n      params: {\n        screenId: parameters?.screenId,\n        tabId: parameters?.tabId,\n        startAt: parameters?.startAt,\n        maxResult: parameters?.maxResult,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the list of tabs for a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is\n   *   specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen\n   *   Scheme.\n   */\n  async getAllScreenTabs<T = Models.ScreenableTab[]>(\n    parameters: Parameters.GetAllScreenTabs | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the list of tabs for a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is\n   *   specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen\n   *   Scheme.\n   */\n  async getAllScreenTabs<T = Models.ScreenableTab[]>(\n    parameters: Parameters.GetAllScreenTabs | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllScreenTabs<T = Models.ScreenableTab[]>(\n    parameters: Parameters.GetAllScreenTabs | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const screenId = typeof parameters === 'string' ? parameters : parameters.screenId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${screenId}/tabs`,\n      method: 'GET',\n      params: {\n        projectKey: typeof parameters !== 'string' && parameters.projectKey,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a tab for a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addScreenTab<T = Models.ScreenableTab>(\n    parameters: Parameters.AddScreenTab,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a tab for a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addScreenTab<T = Models.ScreenableTab>(parameters: Parameters.AddScreenTab, callback?: never): Promise<T>;\n  async addScreenTab<T = Models.ScreenableTab>(\n    parameters: Parameters.AddScreenTab,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${parameters.screenId}/tabs`,\n      method: 'POST',\n      data: {\n        id: parameters.id,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the name of a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async renameScreenTab<T = Models.ScreenableTab>(\n    parameters: Parameters.RenameScreenTab,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the name of a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async renameScreenTab<T = Models.ScreenableTab>(parameters: Parameters.RenameScreenTab, callback?: never): Promise<T>;\n  async renameScreenTab<T = Models.ScreenableTab>(\n    parameters: Parameters.RenameScreenTab,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${parameters.screenId}/tabs/${parameters.tabId}`,\n      method: 'PUT',\n      data: {\n        id: parameters.id,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteScreenTab<T = void>(parameters: Parameters.DeleteScreenTab, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteScreenTab<T = void>(parameters: Parameters.DeleteScreenTab, callback?: never): Promise<T>;\n  async deleteScreenTab<T = void>(parameters: Parameters.DeleteScreenTab, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${parameters.screenId}/tabs/${parameters.tabId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveScreenTab<T = void>(parameters: Parameters.MoveScreenTab, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveScreenTab<T = void>(parameters: Parameters.MoveScreenTab, callback?: never): Promise<T>;\n  async moveScreenTab<T = void>(parameters: Parameters.MoveScreenTab, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${parameters.screenId}/tabs/${parameters.tabId}/move/${parameters.pos}`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Screens {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of the\n   * screens a field is used in.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreensForField<T = Models.PageScreenWithTab>(\n    parameters: Parameters.GetScreensForField | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of the\n   * screens a field is used in.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreensForField<T = Models.PageScreenWithTab>(\n    parameters: Parameters.GetScreensForField | string,\n    callback?: never,\n  ): Promise<T>;\n  async getScreensForField<T = Models.PageScreenWithTab>(\n    parameters: Parameters.GetScreensForField | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/field/${fieldId}/screens`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * screens or those specified by one or more screen IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreens<T = Models.PageScreen>(\n    parameters: Parameters.GetScreens | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * screens or those specified by one or more screen IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreens<T = Models.PageScreen>(parameters?: Parameters.GetScreens, callback?: never): Promise<T>;\n  async getScreens<T = Models.PageScreen>(\n    parameters?: Parameters.GetScreens,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/screens',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        queryString: parameters?.queryString,\n        scope: parameters?.scope,\n        orderBy: parameters?.orderBy,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a screen with a default field tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createScreen<T = Models.Screen>(parameters: Parameters.CreateScreen, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a screen with a default field tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createScreen<T = Models.Screen>(parameters: Parameters.CreateScreen, callback?: never): Promise<T>;\n  async createScreen<T = Models.Screen>(\n    parameters: Parameters.CreateScreen,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/screens',\n      method: 'POST',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a field to the default tab of the default screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addFieldToDefaultScreen<T = unknown>(\n    parameters: Parameters.AddFieldToDefaultScreen | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds a field to the default tab of the default screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addFieldToDefaultScreen<T = unknown>(\n    parameters: Parameters.AddFieldToDefaultScreen | string,\n    callback?: never,\n  ): Promise<T>;\n  async addFieldToDefaultScreen<T = unknown>(\n    parameters: Parameters.AddFieldToDefaultScreen | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/addToDefault/${fieldId}`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a screen. Only screens used in classic projects can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateScreen<T = Models.Screen>(parameters: Parameters.UpdateScreen, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a screen. Only screens used in classic projects can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateScreen<T = Models.Screen>(parameters: Parameters.UpdateScreen, callback?: never): Promise<T>;\n  async updateScreen<T = Models.Screen>(\n    parameters: Parameters.UpdateScreen,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${parameters.screenId}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a screen. A screen cannot be deleted if it is used in a screen scheme, workflow, or workflow draft.\n   *\n   * Only screens used in classic projects can be deleted.\n   */\n  async deleteScreen<T = void>(parameters: Parameters.DeleteScreen | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a screen. A screen cannot be deleted if it is used in a screen scheme, workflow, or workflow draft.\n   *\n   * Only screens used in classic projects can be deleted.\n   */\n  async deleteScreen<T = void>(parameters: Parameters.DeleteScreen | string, callback?: never): Promise<T>;\n  async deleteScreen<T = void>(\n    parameters: Parameters.DeleteScreen | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const screenId = typeof parameters === 'string' ? parameters : parameters.screenId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${screenId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the fields that can be added to a tab on a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAvailableScreenFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAvailableScreenFields | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the fields that can be added to a tab on a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAvailableScreenFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAvailableScreenFields | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAvailableScreenFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAvailableScreenFields | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const screenId = typeof parameters === 'string' ? parameters : parameters.screenId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/screens/${screenId}/availableFields`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ServerInfo {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns information about the Jira instance.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getServerInfo<T = Models.ServerInformation>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns information about the Jira instance.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async getServerInfo<T = Models.ServerInformation>(callback?: never): Promise<T>;\n  async getServerInfo<T = Models.ServerInformation>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/serverInfo',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ServiceRegistry {\n  constructor(private client: Client) {}\n\n  /**\n   * Retrieve the attributes of given service registries.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can make this request and the servicesIds belong to the tenant you are requesting\n   */\n  async services<T = Models.ServiceRegistry[]>(parameters: Parameters.Services, callback: Callback<T>): Promise<void>;\n  /**\n   * Retrieve the attributes of given service registries.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can make this request and the servicesIds belong to the tenant you are requesting\n   */\n  async services<T = Models.ServiceRegistry[]>(parameters: Parameters.Services, callback?: never): Promise<T>;\n  async services<T = Models.ServiceRegistry[]>(\n    parameters: Parameters.Services,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/service-registry',\n      method: 'GET',\n      params: {\n        serviceIds: parameters.serviceIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Status {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of the statuses specified by one or more status IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async getStatusesById<T = Models.JiraStatus[]>(\n    parameters: Parameters.GetStatusesById | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of the statuses specified by one or more status IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async getStatusesById<T = Models.JiraStatus[]>(\n    parameters: Parameters.GetStatusesById | string,\n    callback?: never,\n  ): Promise<T>;\n  async getStatusesById<T = Models.JiraStatus[]>(\n    parameters: Parameters.GetStatusesById | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: '/rest/api/2/statuses',\n      method: 'GET',\n      params: {\n        id,\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates statuses for a global or project scope.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async createStatuses<T = Models.JiraStatus[]>(\n    parameters: Parameters.CreateStatuses,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates statuses for a global or project scope.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async createStatuses<T = Models.JiraStatus[]>(parameters: Parameters.CreateStatuses, callback?: never): Promise<T>;\n  async createStatuses<T = Models.JiraStatus[]>(\n    parameters: Parameters.CreateStatuses,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/statuses',\n      method: 'POST',\n      data: {\n        statuses: parameters.statuses,\n        scope: parameters.scope,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates statuses by ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateStatuses<T = void>(parameters: Parameters.UpdateStatuses, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates statuses by ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateStatuses<T = void>(parameters: Parameters.UpdateStatuses, callback?: never): Promise<T>;\n  async updateStatuses<T = void>(parameters: Parameters.UpdateStatuses, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/statuses',\n      method: 'PUT',\n      data: {\n        statuses: parameters.statuses,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes statuses by ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async deleteStatusesById<T = void>(\n    parameters: Parameters.DeleteStatusesById | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes statuses by ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async deleteStatusesById<T = void>(parameters: Parameters.DeleteStatusesById | string, callback?: never): Promise<T>;\n  async deleteStatusesById<T = void>(\n    parameters: Parameters.DeleteStatusesById | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: '/rest/api/2/statuses',\n      method: 'DELETE',\n      params: {\n        id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * statuses that match a search on name or project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async search<T = Models.PageOfStatuses>(\n    parameters: Parameters.Search | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * statuses that match a search on name or project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async search<T = Models.PageOfStatuses>(parameters?: Parameters.Search, callback?: never): Promise<T>;\n  async search<T = Models.PageOfStatuses>(parameters?: Parameters.Search, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/statuses/search',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n        projectId: parameters?.projectId,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        searchString: parameters?.searchString,\n        statusCategory: parameters?.statusCategory,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of issue types in a project using a given status. */\n  async getProjectIssueTypeUsagesForStatus<T = Models.StatusProjectIssueTypeUsageDTO>(\n    parameters: Parameters.GetProjectIssueTypeUsagesForStatus,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of issue types in a project using a given status. */\n  async getProjectIssueTypeUsagesForStatus<T = Models.StatusProjectIssueTypeUsageDTO>(\n    parameters: Parameters.GetProjectIssueTypeUsagesForStatus,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectIssueTypeUsagesForStatus<T = Models.StatusProjectIssueTypeUsageDTO>(\n    parameters: Parameters.GetProjectIssueTypeUsagesForStatus,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/statuses/${parameters.statusId}/project/${parameters.projectId}/issueTypeUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of projects using a given status. */\n  async getProjectUsagesForStatus<T = Models.StatusProjectUsageDTO>(\n    parameters: Parameters.GetProjectUsagesForStatus,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of projects using a given status. */\n  async getProjectUsagesForStatus<T = Models.StatusProjectUsageDTO>(\n    parameters: Parameters.GetProjectUsagesForStatus,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectUsagesForStatus<T = Models.StatusProjectUsageDTO>(\n    parameters: Parameters.GetProjectUsagesForStatus,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/statuses/${parameters.statusId}/projectUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of workflows using a given status. */\n  async getWorkflowUsagesForStatus<T = Models.StatusWorkflowUsageDTO>(\n    parameters: Parameters.GetWorkflowUsagesForStatus,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of workflows using a given status. */\n  async getWorkflowUsagesForStatus<T = Models.StatusWorkflowUsageDTO>(\n    parameters: Parameters.GetWorkflowUsagesForStatus,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowUsagesForStatus<T = Models.StatusWorkflowUsageDTO>(\n    parameters: Parameters.GetWorkflowUsagesForStatus,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/statuses/${parameters.statusId}/workflowUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Tasks {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the status of a [long-running asynchronous\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations).\n   *\n   * When a task has finished, this operation returns the JSON blob applicable to the task. See the documentation of the\n   * operation that created the task for details. Task details are not permanently retained. As of September 2019,\n   * details are retained for 14 days although this period may change without notice.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - `read:jira-work`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - Creator of the task.\n   */\n  async getTask<T = Models.TaskProgressObject>(\n    parameters: Parameters.GetTask | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the status of a [long-running asynchronous\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations).\n   *\n   * When a task has finished, this operation returns the JSON blob applicable to the task. See the documentation of the\n   * operation that created the task for details. Task details are not permanently retained. As of September 2019,\n   * details are retained for 14 days although this period may change without notice.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - `read:jira-work`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - Creator of the task.\n   */\n  async getTask<T = Models.TaskProgressObject>(parameters: Parameters.GetTask | string, callback?: never): Promise<T>;\n  async getTask<T = Models.TaskProgressObject>(\n    parameters: Parameters.GetTask | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const taskId = typeof parameters === 'string' ? parameters : parameters.taskId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/task/${taskId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Cancels a task.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - Creator of the task.\n   */\n  async cancelTask<T = unknown>(parameters: Parameters.CancelTask | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Cancels a task.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - Creator of the task.\n   */\n  async cancelTask<T = unknown>(parameters: Parameters.CancelTask | string, callback?: never): Promise<T>;\n  async cancelTask<T = unknown>(parameters: Parameters.CancelTask | string, callback?: Callback<T>): Promise<void | T> {\n    const taskId = typeof parameters === 'string' ? parameters : parameters.taskId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/task/${taskId}/cancel`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class TeamsInPlan {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * plan-only and Atlassian teams in a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getTeams<T = Models.PageWithCursorGetTeamResponseForPage>(\n    parameters: Parameters.GetTeams,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * plan-only and Atlassian teams in a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getTeams<T = Models.PageWithCursorGetTeamResponseForPage>(\n    parameters: Parameters.GetTeams,\n    callback?: never,\n  ): Promise<T>;\n  async getTeams<T = Models.PageWithCursorGetTeamResponseForPage>(\n    parameters: Parameters.GetTeams,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/team`,\n      method: 'GET',\n      params: {\n        cursor: parameters.cursor,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds an existing Atlassian team to a plan and configures their plannning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addAtlassianTeam<T = void>(parameters: Parameters.AddAtlassianTeam, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds an existing Atlassian team to a plan and configures their plannning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addAtlassianTeam<T = void>(parameters: Parameters.AddAtlassianTeam, callback?: never): Promise<T>;\n  async addAtlassianTeam<T = void>(parameters: Parameters.AddAtlassianTeam, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/team/atlassian`,\n      method: 'POST',\n      data: {\n        capacity: parameters.capacity,\n        id: parameters.id,\n        issueSourceId: parameters.issueSourceId,\n        planningStyle: parameters.planningStyle,\n        sprintLength: parameters.sprintLength,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns planning settings for an Atlassian team in a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAtlassianTeam<T = Models.GetAtlassianTeamResponse>(\n    parameters: Parameters.GetAtlassianTeam,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns planning settings for an Atlassian team in a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAtlassianTeam<T = Models.GetAtlassianTeamResponse>(\n    parameters: Parameters.GetAtlassianTeam,\n    callback?: never,\n  ): Promise<T>;\n  async getAtlassianTeam<T = Models.GetAtlassianTeamResponse>(\n    parameters: Parameters.GetAtlassianTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/team/atlassian/${parameters.atlassianTeamId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates any of the following planning settings of an Atlassian team in a plan using [JSON\n   * Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * - PlanningStyle\n   * - IssueSourceId\n   * - SprintLength\n   * - Capacity\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get Atlassian team in plan\"\n   * endpoint to find out the order of array elements._\n   */\n  async updateAtlassianTeam<T = void>(parameters: Parameters.UpdateAtlassianTeam, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates any of the following planning settings of an Atlassian team in a plan using [JSON\n   * Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * - PlanningStyle\n   * - IssueSourceId\n   * - SprintLength\n   * - Capacity\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get Atlassian team in plan\"\n   * endpoint to find out the order of array elements._\n   */\n  async updateAtlassianTeam<T = void>(parameters: Parameters.UpdateAtlassianTeam, callback?: never): Promise<T>;\n  async updateAtlassianTeam<T = void>(\n    parameters: Parameters.UpdateAtlassianTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/team/atlassian/${parameters.atlassianTeamId}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes an Atlassian team from a plan and deletes their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeAtlassianTeam<T = void>(parameters: Parameters.RemoveAtlassianTeam, callback: Callback<T>): Promise<void>;\n  /**\n   * Removes an Atlassian team from a plan and deletes their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeAtlassianTeam<T = void>(parameters: Parameters.RemoveAtlassianTeam, callback?: never): Promise<T>;\n  async removeAtlassianTeam<T = void>(\n    parameters: Parameters.RemoveAtlassianTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/team/atlassian/${parameters.atlassianTeamId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a plan-only team and configures their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPlanOnlyTeam<T = unknown>(\n    parameters: Parameters.CreatePlanOnlyTeam,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a plan-only team and configures their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPlanOnlyTeam<T = unknown>(parameters: Parameters.CreatePlanOnlyTeam, callback?: never): Promise<T>;\n  async createPlanOnlyTeam<T = unknown>(\n    parameters: Parameters.CreatePlanOnlyTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/team/planonly`,\n      method: 'POST',\n      data: {\n        capacity: parameters.capacity,\n        issueSourceId: parameters.issueSourceId,\n        memberAccountIds: parameters.memberAccountIds,\n        name: parameters.name,\n        planningStyle: parameters.planningStyle,\n        sprintLength: parameters.sprintLength,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns planning settings for a plan-only team.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlanOnlyTeam<T = Models.GetPlanOnlyTeamResponse>(\n    parameters: Parameters.GetPlanOnlyTeam,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns planning settings for a plan-only team.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlanOnlyTeam<T = Models.GetPlanOnlyTeamResponse>(\n    parameters: Parameters.GetPlanOnlyTeam,\n    callback?: never,\n  ): Promise<T>;\n  async getPlanOnlyTeam<T = Models.GetPlanOnlyTeamResponse>(\n    parameters: Parameters.GetPlanOnlyTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/team/planonly/${parameters.planOnlyTeamId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates any of the following planning settings of a plan-only team using [JSON\n   * Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * - Name\n   * - PlanningStyle\n   * - IssueSourceId\n   * - SprintLength\n   * - Capacity\n   * - MemberAccountIds\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get plan-only team\"\n   * endpoint to find out the order of array elements._\n   */\n  async updatePlanOnlyTeam<T = void>(parameters: Parameters.UpdatePlanOnlyTeam, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates any of the following planning settings of a plan-only team using [JSON\n   * Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * - Name\n   * - PlanningStyle\n   * - IssueSourceId\n   * - SprintLength\n   * - Capacity\n   * - MemberAccountIds\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get plan-only team\"\n   * endpoint to find out the order of array elements._\n   */\n  async updatePlanOnlyTeam<T = void>(parameters: Parameters.UpdatePlanOnlyTeam, callback?: never): Promise<T>;\n  async updatePlanOnlyTeam<T = void>(\n    parameters: Parameters.UpdatePlanOnlyTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/team/planonly/${parameters.planOnlyTeamId}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a plan-only team and their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePlanOnlyTeam<T = void>(parameters: Parameters.DeletePlanOnlyTeam, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a plan-only team and their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePlanOnlyTeam<T = void>(parameters: Parameters.DeletePlanOnlyTeam, callback?: never): Promise<T>;\n  async deletePlanOnlyTeam<T = void>(\n    parameters: Parameters.DeletePlanOnlyTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/plans/plan/${parameters.planId}/team/planonly/${parameters.planOnlyTeamId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class TimeTracking {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the time tracking provider that is currently selected. Note that if time tracking is disabled, then a\n   * successful but empty response is returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSelectedTimeTrackingImplementation<T = void>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the time tracking provider that is currently selected. Note that if time tracking is disabled, then a\n   * successful but empty response is returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSelectedTimeTrackingImplementation<T = void>(callback?: never): Promise<T>;\n  async getSelectedTimeTrackingImplementation<T = void>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/configuration/timetracking',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Selects a time tracking provider.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async selectTimeTrackingImplementation<T = void>(\n    parameters: Parameters.SelectTimeTrackingImplementation | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Selects a time tracking provider.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async selectTimeTrackingImplementation<T = void>(\n    parameters?: Parameters.SelectTimeTrackingImplementation,\n    callback?: never,\n  ): Promise<T>;\n  async selectTimeTrackingImplementation<T = void>(\n    parameters?: Parameters.SelectTimeTrackingImplementation,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/configuration/timetracking',\n      method: 'PUT',\n      data: {\n        key: parameters?.key,\n        name: parameters?.name,\n        url: parameters?.url,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all time tracking providers. By default, Jira only has one time tracking provider: _JIRA provided time\n   * tracking_. However, you can install other time tracking providers via apps from the Atlassian Marketplace. For more\n   * information on time tracking providers, see the documentation for the [ Time Tracking\n   * Provider](https://developer.atlassian.com/cloud/jira/platform/modules/time-tracking-provider/) module.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAvailableTimeTrackingImplementations<T = Models.TimeTrackingProvider[]>(\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all time tracking providers. By default, Jira only has one time tracking provider: _JIRA provided time\n   * tracking_. However, you can install other time tracking providers via apps from the Atlassian Marketplace. For more\n   * information on time tracking providers, see the documentation for the [ Time Tracking\n   * Provider](https://developer.atlassian.com/cloud/jira/platform/modules/time-tracking-provider/) module.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAvailableTimeTrackingImplementations<T = Models.TimeTrackingProvider[]>(callback?: never): Promise<T>;\n  async getAvailableTimeTrackingImplementations<T = Models.TimeTrackingProvider[]>(\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/configuration/timetracking/list',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the time tracking settings. This includes settings such as the time format, default time unit, and others.\n   * For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the time tracking settings. This includes settings such as the time format, default time unit, and others.\n   * For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(callback?: never): Promise<T>;\n  async getSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/configuration/timetracking/options',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the time tracking settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(\n    parameters: Parameters.SetSharedTimeTrackingConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the time tracking settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(\n    parameters: Parameters.SetSharedTimeTrackingConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async setSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(\n    parameters: Parameters.SetSharedTimeTrackingConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/configuration/timetracking/options',\n      method: 'PUT',\n      data: {\n        workingHoursPerDay: parameters.workingHoursPerDay,\n        workingDaysPerWeek: parameters.workingDaysPerWeek,\n        timeFormat: parameters.timeFormat,\n        defaultUnit: parameters.defaultUnit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class UIModificationsApps {\n  constructor(private client: Client) {}\n\n  /**\n   * Gets UI modifications. UI modifications can only be retrieved by Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getUiModifications<T = Models.PageUiModificationDetails>(\n    parameters: Parameters.GetUiModifications | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets UI modifications. UI modifications can only be retrieved by Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getUiModifications<T = Models.PageUiModificationDetails>(\n    parameters?: Parameters.GetUiModifications,\n    callback?: never,\n  ): Promise<T>;\n  async getUiModifications<T = Models.PageUiModificationDetails>(\n    parameters?: Parameters.GetUiModifications,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/uiModifications',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a UI modification. UI modification can only be created by Forge apps.\n   *\n   * Each app can define up to 3000 UI modifications. Each UI modification can define up to 1000 contexts. The same\n   * context can be assigned to maximum 100 UI modifications.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _None_ if the UI modification is created without contexts.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the\n   *   UI modification is created with contexts.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async createUiModification<T = Models.UiModificationIdentifiers>(\n    parameters: Parameters.CreateUiModification,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a UI modification. UI modification can only be created by Forge apps.\n   *\n   * Each app can define up to 3000 UI modifications. Each UI modification can define up to 1000 contexts. The same\n   * context can be assigned to maximum 100 UI modifications.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _None_ if the UI modification is created without contexts.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the\n   *   UI modification is created with contexts.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async createUiModification<T = Models.UiModificationIdentifiers>(\n    parameters: Parameters.CreateUiModification,\n    callback?: never,\n  ): Promise<T>;\n  async createUiModification<T = Models.UiModificationIdentifiers>(\n    parameters: Parameters.CreateUiModification,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/uiModifications',\n      method: 'POST',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        data: parameters.data,\n        contexts: parameters.contexts,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a UI modification. UI modification can only be updated by Forge apps.\n   *\n   * Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI\n   * modifications.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _None_ if the UI modification is created without contexts.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the\n   *   UI modification is created with contexts.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateUiModification<T = void>(\n    parameters: Parameters.UpdateUiModification,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a UI modification. UI modification can only be updated by Forge apps.\n   *\n   * Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI\n   * modifications.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _None_ if the UI modification is created without contexts.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the\n   *   UI modification is created with contexts.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateUiModification<T = void>(parameters: Parameters.UpdateUiModification, callback?: never): Promise<T>;\n  async updateUiModification<T = void>(\n    parameters: Parameters.UpdateUiModification,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/uiModifications/${parameters.uiModificationId}`,\n      method: 'PUT',\n      data: {\n        contexts: parameters.contexts,\n        data: parameters.data,\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a UI modification. All the contexts that belong to the UI modification are deleted too. UI modification can\n   * only be deleted by Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async deleteUiModification<T = void>(\n    parameters: Parameters.DeleteUiModification | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a UI modification. All the contexts that belong to the UI modification are deleted too. UI modification can\n   * only be deleted by Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async deleteUiModification<T = void>(\n    parameters: Parameters.DeleteUiModification | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteUiModification<T = void>(\n    parameters: Parameters.DeleteUiModification | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const uiModificationId = typeof parameters === 'string' ? parameters : parameters.uiModificationId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/uiModifications/${uiModificationId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class UserProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the keys of all properties for a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to access the property keys on\n   *   any user.\n   * - Access to Jira, to access the calling user's property keys.\n   */\n  async getUserPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetUserPropertyKeys | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all properties for a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to access the property keys on\n   *   any user.\n   * - Access to Jira, to access the calling user's property keys.\n   */\n  async getUserPropertyKeys<T = Models.PropertyKeys>(\n    parameters?: Parameters.GetUserPropertyKeys,\n    callback?: never,\n  ): Promise<T>;\n  async getUserPropertyKeys<T = Models.PropertyKeys>(\n    parameters?: Parameters.GetUserPropertyKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/properties',\n      method: 'GET',\n      params: {\n        accountId: parameters?.accountId,\n        userKey: parameters?.userKey,\n        username: parameters?.username,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of a user's property. If no property key is provided [Get user property\n   * keys](#api-rest-api-2-user-properties-get) is called.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user.\n   * - Access to Jira, to get a property from the calling user's record.\n   */\n  async getUserProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetUserProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a user's property. If no property key is provided [Get user property\n   * keys](#api-rest-api-2-user-properties-get) is called.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user.\n   * - Access to Jira, to get a property from the calling user's record.\n   */\n  async getUserProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetUserProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getUserProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetUserProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/user/properties/${parameters.propertyKey}`,\n      method: 'GET',\n      params: {\n        accountId: parameters.accountId,\n        userKey: parameters.userKey,\n        username: parameters.username,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a user's property. Use this resource to store custom data against a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user.\n   * - Access to Jira, to set a property on the calling user's record.\n   */\n  async setUserProperty<T = unknown>(parameters: Parameters.SetUserProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the value of a user's property. Use this resource to store custom data against a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user.\n   * - Access to Jira, to set a property on the calling user's record.\n   */\n  async setUserProperty<T = unknown>(parameters: Parameters.SetUserProperty, callback?: never): Promise<T>;\n  async setUserProperty<T = unknown>(\n    parameters: Parameters.SetUserProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/user/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      params: {\n        accountId: parameters.accountId,\n      },\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a property from a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to delete a property from any\n   *   user.\n   * - Access to Jira, to delete a property from the calling user's record.\n   */\n  async deleteUserProperty<T = void>(parameters: Parameters.DeleteUserProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a property from a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to delete a property from any\n   *   user.\n   * - Access to Jira, to delete a property from the calling user's record.\n   */\n  async deleteUserProperty<T = void>(parameters: Parameters.DeleteUserProperty, callback?: never): Promise<T>;\n  async deleteUserProperty<T = void>(\n    parameters: Parameters.DeleteUserProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/user/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n      params: {\n        accountId: parameters.accountId,\n        userKey: parameters.userKey,\n        username: parameters.username,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport { paramSerializer } from '../paramSerializer';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class UserSearch {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of users who can be assigned issues in one or more projects. The list may be restricted to users\n   * whose attributes match a string.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that can be assigned issues in the projects. This means the operation\n   * usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned issues in the\n   * projects, use [Get all users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async findBulkAssignableUsers<T = Models.User[]>(\n    parameters: Parameters.FindBulkAssignableUsers,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users who can be assigned issues in one or more projects. The list may be restricted to users\n   * whose attributes match a string.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that can be assigned issues in the projects. This means the operation\n   * usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned issues in the\n   * projects, use [Get all users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** None.\n   */\n  async findBulkAssignableUsers<T = Models.User[]>(\n    parameters: Parameters.FindBulkAssignableUsers,\n    callback?: never,\n  ): Promise<T>;\n  async findBulkAssignableUsers<T = Models.User[]>(\n    parameters: Parameters.FindBulkAssignableUsers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/assignable/multiProjectSearch',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        username: parameters.username,\n        accountId: parameters.accountId,\n        projectKeys: parameters.projectKeys,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of users that can be assigned to an issue. Use this operation to find the list of users who can be\n   * assigned to:\n   *\n   * - A new issue, by providing the `projectKeyOrId`.\n   * - An updated issue, by providing the `issueKey` or `issueId`.\n   * - To an issue during a transition (workflow action), by providing the `issueKey` or `issueId` and the transition id\n   *   in `actionDescriptorId`. You can obtain the IDs of an issue's valid transitions using the `transitions` option in\n   *   the `expand` parameter of [ Get issue](#api-rest-api-2-issue-issueIdOrKey-get).\n   *\n   * In all these cases, you can pass an account ID to determine if a user can be assigned to an issue. The user is\n   * returned in the response if they can be assigned to the issue or issue transition.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that can be assigned the issue. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who can be assigned the issue, use [Get\n   * all users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Assign issues_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async findAssignableUsers<T = Models.User[]>(\n    parameters: Parameters.FindAssignableUsers | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users that can be assigned to an issue. Use this operation to find the list of users who can be\n   * assigned to:\n   *\n   * - A new issue, by providing the `projectKeyOrId`.\n   * - An updated issue, by providing the `issueKey` or `issueId`.\n   * - To an issue during a transition (workflow action), by providing the `issueKey` or `issueId` and the transition id\n   *   in `actionDescriptorId`. You can obtain the IDs of an issue's valid transitions using the `transitions` option in\n   *   the `expand` parameter of [ Get issue](#api-rest-api-2-issue-issueIdOrKey-get).\n   *\n   * In all these cases, you can pass an account ID to determine if a user can be assigned to an issue. The user is\n   * returned in the response if they can be assigned to the issue or issue transition.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that can be assigned the issue. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who can be assigned the issue, use [Get\n   * all users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Assign issues_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async findAssignableUsers<T = Models.User[]>(\n    parameters?: Parameters.FindAssignableUsers,\n    callback?: never,\n  ): Promise<T>;\n  async findAssignableUsers<T = Models.User[]>(\n    parameters?: Parameters.FindAssignableUsers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/assignable/search',\n      method: 'GET',\n      params: {\n        query: parameters?.query,\n        sessionId: parameters?.sessionId,\n        username: parameters?.username,\n        accountId: parameters?.accountId,\n        project: parameters?.project,\n        issueKey: parameters?.issueKey,\n        issueId: parameters?.issueId,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        actionDescriptorId: parameters?.actionDescriptorId,\n        recommend: parameters?.recommend,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of users who fulfill these criteria:\n   *\n   * - Their user attributes match a search string.\n   * - They have a set of permissions for a project or issue.\n   *\n   * If no search string is provided, a list of all users with the permissions is returned.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the search string and have permission for the project or\n   * issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users\n   * who match the search string and have permission for the project or issue, use [Get all\n   * users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get users for any project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project, to get users\n   *   for that project.\n   */\n  async findUsersWithAllPermissions<T = Models.User[]>(\n    parameters: Parameters.FindUsersWithAllPermissions,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users who fulfill these criteria:\n   *\n   * - Their user attributes match a search string.\n   * - They have a set of permissions for a project or issue.\n   *\n   * If no search string is provided, a list of all users with the permissions is returned.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the search string and have permission for the project or\n   * issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users\n   * who match the search string and have permission for the project or issue, use [Get all\n   * users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get users for any project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project, to get users\n   *   for that project.\n   */\n  async findUsersWithAllPermissions<T = Models.User[]>(\n    parameters: Parameters.FindUsersWithAllPermissions,\n    callback?: never,\n  ): Promise<T>;\n  async findUsersWithAllPermissions<T = Models.User[]>(\n    parameters: Parameters.FindUsersWithAllPermissions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/permission/search',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        username: parameters.username,\n        accountId: parameters.accountId,\n        permissions: parameters.permissions,\n        issueKey: parameters.issueKey,\n        projectKey: parameters.projectKey,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of users whose attributes match the query term. The returned object includes the `html` field where\n   * the matched query term is highlighted with the HTML strong tag. A list of account IDs can be provided to exclude\n   * users from the results.\n   *\n   * This operation takes the users in the range defined by `maxResults`, up to the thousandth user, and then returns\n   * only the users from that range that match the query term. This means the operation usually returns fewer users than\n   * specified in `maxResults`. To get all the users who match the query term, use [Get all\n   * users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by\n   * users without the required permission return search results for an exact name match only.\n   */\n  async findUsersForPicker<T = Models.FoundUsers>(\n    parameters: Parameters.FindUsersForPicker,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users whose attributes match the query term. The returned object includes the `html` field where\n   * the matched query term is highlighted with the HTML strong tag. A list of account IDs can be provided to exclude\n   * users from the results.\n   *\n   * This operation takes the users in the range defined by `maxResults`, up to the thousandth user, and then returns\n   * only the users from that range that match the query term. This means the operation usually returns fewer users than\n   * specified in `maxResults`. To get all the users who match the query term, use [Get all\n   * users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by\n   * users without the required permission return search results for an exact name match only.\n   */\n  async findUsersForPicker<T = Models.FoundUsers>(\n    parameters: Parameters.FindUsersForPicker,\n    callback?: never,\n  ): Promise<T>;\n  async findUsersForPicker<T = Models.FoundUsers>(\n    parameters: Parameters.FindUsersForPicker,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/picker',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        maxResults: parameters.maxResults,\n        showAvatar: parameters.showAvatar,\n        excludeAccountIds: paramSerializer('excludeAccountIds', parameters.excludeAccountIds),\n        avatarSize: parameters.avatarSize,\n        excludeConnectUsers: parameters.excludeConnectUsers,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of active users that match the search string and property.\n   *\n   * This operation first applies a filter to match the search string and property, and then takes the filtered users in\n   * the range defined by `startAt` and `maxResults`, up to the thousandth user. To get all the users who match the\n   * search string and property, use [Get all users](#api-rest-api-2-users-search-get) and filter the records in your\n   * code.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls or calls by users\n   * without the required permission return empty search results.\n   */\n  async findUsers<T = Models.User[]>(\n    parameters: Parameters.FindUsers | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of active users that match the search string and property.\n   *\n   * This operation first applies a filter to match the search string and property, and then takes the filtered users in\n   * the range defined by `startAt` and `maxResults`, up to the thousandth user. To get all the users who match the\n   * search string and property, use [Get all users](#api-rest-api-2-users-search-get) and filter the records in your\n   * code.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls or calls by users\n   * without the required permission return empty search results.\n   */\n  async findUsers<T = Models.User[]>(parameters?: Parameters.FindUsers, callback?: never): Promise<T>;\n  async findUsers<T = Models.User[]>(parameters?: Parameters.FindUsers, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/search',\n      method: 'GET',\n      params: {\n        query: parameters?.query,\n        username: parameters?.username,\n        accountId: parameters?.accountId,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        property: parameters?.property,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Finds users with a structured query and returns a\n   * [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of user details.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the structured query. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get\n   * all users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * The query statements are:\n   *\n   * - `is assignee of PROJ` Returns the users that are assignees of at least one issue in project _PROJ_.\n   * - `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues _PROJ-1_ or\n   *   _PROJ-2_.\n   * - `[propertyKey].entity.property.path is \"property value\"` Returns users with the entity property value. For example,\n   *   if user property `location` is set to value `{\"office\": {\"country\": \"AU\", \"city\": \"Sydney\"}}`, then it's possible\n   *   to use `[location].office.city is \"Sydney\"` to match the user.\n   *\n   * The list of issues can be extended as needed, as in _(PROJ-1, PROJ-2, ... PROJ-n)_. Statements can be combined\n   * using the `AND` and `OR` operators to form more complex queries. For example:\n   *\n   * `is assignee of PROJ AND [propertyKey].entity.property.path is \"property value\"`\n   */\n  async findUsersByQuery<T = Models.PageUser>(\n    parameters: Parameters.FindUsersByQuery,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Finds users with a structured query and returns a\n   * [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of user details.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the structured query. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get\n   * all users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * The query statements are:\n   *\n   * - `is assignee of PROJ` Returns the users that are assignees of at least one issue in project _PROJ_.\n   * - `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues _PROJ-1_ or\n   *   _PROJ-2_.\n   * - `[propertyKey].entity.property.path is \"property value\"` Returns users with the entity property value. For example,\n   *   if user property `location` is set to value `{\"office\": {\"country\": \"AU\", \"city\": \"Sydney\"}}`, then it's possible\n   *   to use `[location].office.city is \"Sydney\"` to match the user.\n   *\n   * The list of issues can be extended as needed, as in _(PROJ-1, PROJ-2, ... PROJ-n)_. Statements can be combined\n   * using the `AND` and `OR` operators to form more complex queries. For example:\n   *\n   * `is assignee of PROJ AND [propertyKey].entity.property.path is \"property value\"`\n   */\n  async findUsersByQuery<T = Models.PageUser>(parameters: Parameters.FindUsersByQuery, callback?: never): Promise<T>;\n  async findUsersByQuery<T = Models.PageUser>(\n    parameters: Parameters.FindUsersByQuery,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/search/query',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Finds users with a structured query and returns a\n   * [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of user keys.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the structured query. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get\n   * all users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * The query statements are:\n   *\n   * - `is assignee of PROJ` Returns the users that are assignees of at least one issue in project _PROJ_.\n   * - `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues _PROJ-1_ or\n   *   _PROJ-2_.\n   * - `[propertyKey].entity.property.path is \"property value\"` Returns users with the entity property value. For example,\n   *   if user property `location` is set to value `{\"office\": {\"country\": \"AU\", \"city\": \"Sydney\"}}`, then it's possible\n   *   to use `[location].office.city is \"Sydney\"` to match the user.\n   *\n   * The list of issues can be extended as needed, as in _(PROJ-1, PROJ-2, ... PROJ-n)_. Statements can be combined\n   * using the `AND` and `OR` operators to form more complex queries. For example:\n   *\n   * `is assignee of PROJ AND [propertyKey].entity.property.path is \"property value\"`\n   */\n  async findUserKeysByQuery<T = Models.PageUserKey>(\n    parameters: Parameters.FindUserKeysByQuery,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Finds users with a structured query and returns a\n   * [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of user keys.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the structured query. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get\n   * all users](#api-rest-api-2-users-search-get) and filter the records in your code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * The query statements are:\n   *\n   * - `is assignee of PROJ` Returns the users that are assignees of at least one issue in project _PROJ_.\n   * - `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues _PROJ-1_ or\n   *   _PROJ-2_.\n   * - `[propertyKey].entity.property.path is \"property value\"` Returns users with the entity property value. For example,\n   *   if user property `location` is set to value `{\"office\": {\"country\": \"AU\", \"city\": \"Sydney\"}}`, then it's possible\n   *   to use `[location].office.city is \"Sydney\"` to match the user.\n   *\n   * The list of issues can be extended as needed, as in _(PROJ-1, PROJ-2, ... PROJ-n)_. Statements can be combined\n   * using the `AND` and `OR` operators to form more complex queries. For example:\n   *\n   * `is assignee of PROJ AND [propertyKey].entity.property.path is \"property value\"`\n   */\n  async findUserKeysByQuery<T = Models.PageUserKey>(\n    parameters: Parameters.FindUserKeysByQuery,\n    callback?: never,\n  ): Promise<T>;\n  async findUserKeysByQuery<T = Models.PageUserKey>(\n    parameters: Parameters.FindUserKeysByQuery,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/search/query/key',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        startAt: parameters.startAt,\n        maxResult: parameters.maxResult || parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of users who fulfill these criteria:\n   *\n   * - Their user attributes match a search string.\n   * - They have permission to browse issues.\n   *\n   * Use this resource to find users who can browse:\n   *\n   * - An issue, by providing the `issueKey`.\n   * - Any issue in a project, by providing the `projectKey`.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the search string and have permission to browse issues. This\n   * means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the\n   * search string and have permission to browse issues, use [Get all users](#api-rest-api-2-users-search-get) and\n   * filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by\n   * users without the required permission return empty search results.\n   */\n  async findUsersWithBrowsePermission<T = Models.User[]>(\n    parameters: Parameters.FindUsersWithBrowsePermission | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users who fulfill these criteria:\n   *\n   * - Their user attributes match a search string.\n   * - They have permission to browse issues.\n   *\n   * Use this resource to find users who can browse:\n   *\n   * - An issue, by providing the `issueKey`.\n   * - Any issue in a project, by providing the `projectKey`.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the search string and have permission to browse issues. This\n   * means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the\n   * search string and have permission to browse issues, use [Get all users](#api-rest-api-2-users-search-get) and\n   * filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by\n   * users without the required permission return empty search results.\n   */\n  async findUsersWithBrowsePermission<T = Models.User[]>(\n    parameters?: Parameters.FindUsersWithBrowsePermission,\n    callback?: never,\n  ): Promise<T>;\n  async findUsersWithBrowsePermission<T = Models.User[]>(\n    parameters?: Parameters.FindUsersWithBrowsePermission,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/viewissue/search',\n      method: 'GET',\n      params: {\n        query: parameters?.query,\n        username: parameters?.username,\n        accountId: parameters?.accountId,\n        issueKey: parameters?.issueKey,\n        projectKey: parameters?.projectKey,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class UserNavProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the value of a user nav preference.\n   *\n   * Note: This operation fetches the property key value directly from RbacClient.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user.\n   * - Access to Jira, to get a property from the calling user's record.\n   */\n  async getUserNavProperty<T = Models.UserNavProperty>(\n    parameters: Parameters.GetUserNavProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a user nav preference.\n   *\n   * Note: This operation fetches the property key value directly from RbacClient.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user.\n   * - Access to Jira, to get a property from the calling user's record.\n   */\n  async getUserNavProperty<T = Models.UserNavProperty>(\n    parameters: Parameters.GetUserNavProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getUserNavProperty<T = Models.UserNavProperty>(\n    parameters: Parameters.GetUserNavProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/user/nav4-opt-property/${parameters.propertyKey}`,\n      method: 'GET',\n      params: {\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a Nav4 preference. Use this resource to store Nav4 preference data against a user in the Identity\n   * service.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user.\n   * - Access to Jira, to set a property on the calling user's record.\n   */\n  async setUserNavProperty<T = unknown>(\n    parameters: Parameters.SetUserNavProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of a Nav4 preference. Use this resource to store Nav4 preference data against a user in the Identity\n   * service.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user.\n   * - Access to Jira, to set a property on the calling user's record.\n   */\n  async setUserNavProperty<T = unknown>(parameters: Parameters.SetUserNavProperty, callback?: never): Promise<T>;\n  async setUserNavProperty<T = unknown>(\n    parameters: Parameters.SetUserNavProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/user/nav4-opt-property/${parameters.propertyKey}`,\n      method: 'PUT',\n      params: {\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport { paramSerializer } from '../paramSerializer';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Users {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a user.\n   *\n   * Privacy controls are applied to the response based on the user's preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUser<T = Models.User>(parameters: Parameters.GetUser, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a user.\n   *\n   * Privacy controls are applied to the response based on the user's preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUser<T = Models.User>(parameters: Parameters.GetUser, callback?: never): Promise<T>;\n  async getUser<T = Models.User>(parameters: Parameters.GetUser, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user',\n      method: 'GET',\n      params: {\n        accountId: parameters.accountId,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a user. This resource is retained for legacy compatibility. As soon as a more suitable alternative is\n   * available this resource will be deprecated.\n   *\n   * If the user exists and has access to Jira, the operation returns a 201 status. If the user exists but does not have\n   * access to Jira, the operation returns a 400 status.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createUser<T = Models.User>(parameters: Parameters.CreateUser, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a user. This resource is retained for legacy compatibility. As soon as a more suitable alternative is\n   * available this resource will be deprecated.\n   *\n   * If the user exists and has access to Jira, the operation returns a 201 status. If the user exists but does not have\n   * access to Jira, the operation returns a 400 status.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createUser<T = Models.User>(parameters: Parameters.CreateUser, callback?: never): Promise<T>;\n  async createUser<T = Models.User>(parameters: Parameters.CreateUser, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user',\n      method: 'POST',\n      data: {\n        emailAddress: parameters.emailAddress,\n        key: parameters.key,\n        name: parameters.name,\n        password: parameters.password,\n        products: parameters.products,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a user. If the operation completes successfully then the user is removed from Jira's user base. This\n   * operation does not delete the user's Atlassian account.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Site\n   * administration (that is, membership of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeUser<T = void>(parameters: Parameters.RemoveUser, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a user. If the operation completes successfully then the user is removed from Jira's user base. This\n   * operation does not delete the user's Atlassian account.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Site\n   * administration (that is, membership of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeUser<T = void>(parameters: Parameters.RemoveUser, callback?: never): Promise<T>;\n  async removeUser<T = void>(parameters: Parameters.RemoveUser, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user',\n      method: 'DELETE',\n      params: {\n        accountId: parameters.accountId,\n        username: parameters.username,\n        key: parameters.key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of the\n   * users specified by one or more account IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async bulkGetUsers<T = Models.PageUser>(parameters: Parameters.BulkGetUsers, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of the\n   * users specified by one or more account IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async bulkGetUsers<T = Models.PageUser>(parameters: Parameters.BulkGetUsers, callback?: never): Promise<T>;\n  async bulkGetUsers<T = Models.PageUser>(\n    parameters: Parameters.BulkGetUsers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/bulk',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        accountId: paramSerializer('accountId', parameters.accountId),\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the account IDs for the users specified in the `key` or `username` parameters. Note that multiple `key` or\n   * `username` parameters can be specified.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async bulkGetUsersMigration<T = Models.UserMigration[]>(\n    parameters: Parameters.BulkGetUsersMigration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the account IDs for the users specified in the `key` or `username` parameters. Note that multiple `key` or\n   * `username` parameters can be specified.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async bulkGetUsersMigration<T = Models.UserMigration[]>(\n    parameters: Parameters.BulkGetUsersMigration,\n    callback?: never,\n  ): Promise<T>;\n  async bulkGetUsersMigration<T = Models.UserMigration[]>(\n    parameters: Parameters.BulkGetUsersMigration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/bulk/migration',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        username: paramSerializer('username', parameters.username),\n        key: paramSerializer('key', parameters.key),\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the default [issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If `accountId`\n   * is not passed in the request, the calling user's details are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLgl), to get the column details for\n   *   any user.\n   * - Permission to access Jira, to get the calling user's column details.\n   */\n  async getUserDefaultColumns<T = Models.ColumnItem[]>(\n    parameters: Parameters.GetUserDefaultColumns | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the default [issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If `accountId`\n   * is not passed in the request, the calling user's details are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLgl), to get the column details for\n   *   any user.\n   * - Permission to access Jira, to get the calling user's column details.\n   */\n  async getUserDefaultColumns<T = Models.ColumnItem[]>(\n    parameters?: Parameters.GetUserDefaultColumns,\n    callback?: never,\n  ): Promise<T>;\n  async getUserDefaultColumns<T = Models.ColumnItem[]>(\n    parameters?: Parameters.GetUserDefaultColumns,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/columns',\n      method: 'GET',\n      params: {\n        accountId: parameters?.accountId,\n        username: parameters?.username,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If an account ID\n   * is not passed, the calling user's default columns are set. If no column details are sent, then all default columns\n   * are removed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user.\n   * - Permission to access Jira, to set the calling user's columns.\n   */\n  async setUserColumns<T = string>(parameters: Parameters.SetUserColumns, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If an account ID\n   * is not passed, the calling user's default columns are set. If no column details are sent, then all default columns\n   * are removed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user.\n   * - Permission to access Jira, to set the calling user's columns.\n   */\n  async setUserColumns<T = string>(parameters: Parameters.SetUserColumns, callback?: never): Promise<T>;\n  async setUserColumns<T = string>(parameters: Parameters.SetUserColumns, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/columns',\n      method: 'PUT',\n      params: {\n        accountId: parameters.accountId,\n      },\n      data: parameters.columns,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Resets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user to the system\n   * default. If `accountId` is not passed, the calling user's default columns are reset.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user.\n   * - Permission to access Jira, to set the calling user's columns.\n   */\n  async resetUserColumns<T = void>(parameters: Parameters.ResetUserColumns, callback: Callback<T>): Promise<void>;\n  /**\n   * Resets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user to the system\n   * default. If `accountId` is not passed, the calling user's default columns are reset.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user.\n   * - Permission to access Jira, to set the calling user's columns.\n   */\n  async resetUserColumns<T = void>(parameters: Parameters.ResetUserColumns, callback?: never): Promise<T>;\n  async resetUserColumns<T = void>(parameters: Parameters.ResetUserColumns, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/columns',\n      method: 'DELETE',\n      params: {\n        accountId: parameters.accountId,\n        username: parameters.username,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a user's email address regardless of the user's profile visibility settings. For Connect apps, this API is\n   * only available to apps approved by Atlassian, according to these\n   * [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603).\n   * For Forge apps, this API only supports access via asApp() requests.\n   */\n  async getUserEmail<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmail | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a user's email address regardless of the user's profile visibility settings. For Connect apps, this API is\n   * only available to apps approved by Atlassian, according to these\n   * [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603).\n   * For Forge apps, this API only supports access via asApp() requests.\n   */\n  async getUserEmail<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmail | string,\n    callback?: never,\n  ): Promise<T>;\n  async getUserEmail<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmail | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const accountId = typeof parameters === 'string' ? parameters : parameters.accountId;\n\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/email',\n      method: 'GET',\n      params: {\n        accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a user's email address regardless of the user's profile visibility settings. For Connect apps, this API is\n   * only available to apps approved by Atlassian, according to these\n   * [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603).\n   * For Forge apps, this API only supports access via asApp() requests.\n   */\n  async getUserEmailBulk<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmailBulk | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a user's email address regardless of the user's profile visibility settings. For Connect apps, this API is\n   * only available to apps approved by Atlassian, according to these\n   * [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603).\n   * For Forge apps, this API only supports access via asApp() requests.\n   */\n  async getUserEmailBulk<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmailBulk | string,\n    callback?: never,\n  ): Promise<T>;\n  async getUserEmailBulk<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmailBulk | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const accountId = typeof parameters === 'string' ? parameters : parameters.accountId;\n\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/email/bulk',\n      method: 'GET',\n      params: {\n        accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the groups to which a user belongs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUserGroups<T = Models.GroupName[]>(\n    parameters: Parameters.GetUserGroups,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the groups to which a user belongs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUserGroups<T = Models.GroupName[]>(parameters: Parameters.GetUserGroups, callback?: never): Promise<T>;\n  async getUserGroups<T = Models.GroupName[]>(\n    parameters: Parameters.GetUserGroups,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/user/groups',\n      method: 'GET',\n      params: {\n        accountId: parameters.accountId,\n        username: parameters.username,\n        key: parameters.key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of all users, including active users, inactive users and previously deleted users that have an\n   * Atlassian account.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllUsersDefault<T = Models.User[]>(\n    parameters: Parameters.GetAllUsersDefault | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of all users, including active users, inactive users and previously deleted users that have an\n   * Atlassian account.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllUsersDefault<T = Models.User[]>(parameters?: Parameters.GetAllUsersDefault, callback?: never): Promise<T>;\n  async getAllUsersDefault<T = Models.User[]>(\n    parameters?: Parameters.GetAllUsersDefault,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/users',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of all users, including active users, inactive users and previously deleted users that have an\n   * Atlassian account.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllUsers<T = Models.User[]>(\n    parameters: Parameters.GetAllUsers | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of all users, including active users, inactive users and previously deleted users that have an\n   * Atlassian account.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllUsers<T = Models.User[]>(parameters?: Parameters.GetAllUsers, callback?: never): Promise<T>;\n  async getAllUsers<T = Models.User[]>(parameters?: Parameters.GetAllUsers, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/users/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Webhooks {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of the\n   * webhooks registered by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async getDynamicWebhooksForApp<T = Models.PageWebhook>(\n    parameters: Parameters.GetDynamicWebhooksForApp | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of the\n   * webhooks registered by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async getDynamicWebhooksForApp<T = Models.PageWebhook>(\n    parameters?: Parameters.GetDynamicWebhooksForApp,\n    callback?: never,\n  ): Promise<T>;\n  async getDynamicWebhooksForApp<T = Models.PageWebhook>(\n    parameters?: Parameters.GetDynamicWebhooksForApp,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/webhook',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Registers webhooks.\n   *\n   * **NOTE:** for non-public OAuth apps, webhooks are delivered only if there is a match between the app owner and the\n   * user who registered a dynamic webhook.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async registerDynamicWebhooks<T = Models.ContainerForRegisteredWebhooks>(\n    parameters: Parameters.RegisterDynamicWebhooks,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Registers webhooks.\n   *\n   * **NOTE:** for non-public OAuth apps, webhooks are delivered only if there is a match between the app owner and the\n   * user who registered a dynamic webhook.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async registerDynamicWebhooks<T = Models.ContainerForRegisteredWebhooks>(\n    parameters: Parameters.RegisterDynamicWebhooks,\n    callback?: never,\n  ): Promise<T>;\n  async registerDynamicWebhooks<T = Models.ContainerForRegisteredWebhooks>(\n    parameters: Parameters.RegisterDynamicWebhooks,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/webhook',\n      method: 'POST',\n      data: {\n        webhooks: parameters.webhooks,\n        url: parameters.url,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes webhooks by ID. Only webhooks registered by the calling app are removed. If webhooks created by other apps\n   * are specified, they are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async deleteWebhookById<T = unknown>(parameters: Parameters.DeleteWebhookById, callback: Callback<T>): Promise<void>;\n  /**\n   * Removes webhooks by ID. Only webhooks registered by the calling app are removed. If webhooks created by other apps\n   * are specified, they are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async deleteWebhookById<T = unknown>(parameters: Parameters.DeleteWebhookById, callback?: never): Promise<T>;\n  async deleteWebhookById<T = unknown>(\n    parameters: Parameters.DeleteWebhookById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/webhook',\n      method: 'DELETE',\n      data: {\n        webhookIds: parameters.webhookIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns webhooks that have recently failed to be delivered to the requesting app after the maximum number of\n   * retries.\n   *\n   * After 72 hours the failure may no longer be returned by this operation.\n   *\n   * The oldest failure is returned first.\n   *\n   * This method uses a cursor-based pagination. To request the next page use the failure time of the last webhook on\n   * the list as the `failedAfter` value or use the URL provided in `next`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect apps](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) can use this operation.\n   */\n  async getFailedWebhooks<T = Models.FailedWebhooks>(\n    parameters: Parameters.GetFailedWebhooks | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns webhooks that have recently failed to be delivered to the requesting app after the maximum number of\n   * retries.\n   *\n   * After 72 hours the failure may no longer be returned by this operation.\n   *\n   * The oldest failure is returned first.\n   *\n   * This method uses a cursor-based pagination. To request the next page use the failure time of the last webhook on\n   * the list as the `failedAfter` value or use the URL provided in `next`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect apps](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) can use this operation.\n   */\n  async getFailedWebhooks<T = Models.FailedWebhooks>(\n    parameters?: Parameters.GetFailedWebhooks,\n    callback?: never,\n  ): Promise<T>;\n  async getFailedWebhooks<T = Models.FailedWebhooks>(\n    parameters?: Parameters.GetFailedWebhooks,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/webhook/failed',\n      method: 'GET',\n      params: {\n        maxResults: parameters?.maxResults,\n        after: parameters?.after,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Extends the life of webhook. Webhooks registered through the REST API expire after 30 days. Call this operation to\n   * keep them alive.\n   *\n   * Unrecognized webhook IDs (those that are not found or belong to other apps) are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async refreshWebhooks<T = Models.WebhooksExpirationDate>(\n    parameters: Parameters.RefreshWebhooks,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Extends the life of webhook. Webhooks registered through the REST API expire after 30 days. Call this operation to\n   * keep them alive.\n   *\n   * Unrecognized webhook IDs (those that are not found or belong to other apps) are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async refreshWebhooks<T = Models.WebhooksExpirationDate>(\n    parameters: Parameters.RefreshWebhooks,\n    callback?: never,\n  ): Promise<T>;\n  async refreshWebhooks<T = Models.WebhooksExpirationDate>(\n    parameters: Parameters.RefreshWebhooks,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/webhook/refresh',\n      method: 'PUT',\n      data: {\n        webhookIds: parameters.webhookIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowSchemeDrafts {\n  constructor(private client: Client) {}\n\n  /**\n   * Create a draft workflow scheme from an active workflow scheme, by copying the active workflow scheme. Note that an\n   * active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowSchemeDraftFromParent<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowSchemeDraftFromParent | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Create a draft workflow scheme from an active workflow scheme, by copying the active workflow scheme. Note that an\n   * active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowSchemeDraftFromParent<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowSchemeDraftFromParent | string,\n    callback?: never,\n  ): Promise<T>;\n  async createWorkflowSchemeDraftFromParent<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowSchemeDraftFromParent | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}/createdraft`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the draft workflow scheme for an active workflow scheme. Draft workflow schemes allow changes to be made to\n   * the active workflow schemes: When an active workflow scheme is updated, a draft copy is created. The draft is\n   * modified, then the changes in the draft are copied back to the active workflow scheme. See [Configuring workflow\n   * schemes](https://confluence.atlassian.com/x/tohKLg) for more information.\\\n   * Note that:\n   *\n   * - Only active workflow schemes can have draft workflow schemes.\n   * - An active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowSchemeDraft | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the draft workflow scheme for an active workflow scheme. Draft workflow schemes allow changes to be made to\n   * the active workflow schemes: When an active workflow scheme is updated, a draft copy is created. The draft is\n   * modified, then the changes in the draft are copied back to the active workflow scheme. See [Configuring workflow\n   * schemes](https://confluence.atlassian.com/x/tohKLg) for more information.\\\n   * Note that:\n   *\n   * - Only active workflow schemes can have draft workflow schemes.\n   * - An active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowSchemeDraft | string,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowSchemeDraft | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}/draft`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a draft workflow scheme. If a draft workflow scheme does not exist for the active workflow scheme, then a\n   * draft is created. Note that an active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowSchemeDraft,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a draft workflow scheme. If a draft workflow scheme does not exist for the active workflow scheme, then a\n   * draft is created. Note that an active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowSchemeDraft,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowSchemeDraft,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/draft`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        defaultWorkflow: parameters.defaultWorkflow,\n        issueTypeMappings: parameters.issueTypeMappings,\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeDraft<T = void>(\n    parameters: Parameters.DeleteWorkflowSchemeDraft | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeDraft<T = void>(\n    parameters: Parameters.DeleteWorkflowSchemeDraft | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowSchemeDraft<T = void>(\n    parameters: Parameters.DeleteWorkflowSchemeDraft | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}/draft`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the default workflow for a workflow scheme's draft. The default workflow is the workflow that is assigned\n   * any issue types that have not been mapped to any other workflow. The default workflow has _All Unassigned Issue\n   * Types_ listed in its issue types for the workflow scheme in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDraftDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDraftDefaultWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the default workflow for a workflow scheme's draft. The default workflow is the workflow that is assigned\n   * any issue types that have not been mapped to any other workflow. The default workflow has _All Unassigned Issue\n   * Types_ listed in its issue types for the workflow scheme in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDraftDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDraftDefaultWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async getDraftDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDraftDefaultWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}/draft/default`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the default workflow for a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftDefaultWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the default workflow for a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftDefaultWorkflow,\n    callback?: never,\n  ): Promise<T>;\n  async updateDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftDefaultWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/draft/default`,\n      method: 'PUT',\n      data: {\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n        workflow: parameters.workflow,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Resets the default workflow for a workflow scheme's draft. That is, the default workflow is set to Jira's system\n   * workflow (the _jira_ workflow).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDraftDefaultWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Resets the default workflow for a workflow scheme's draft. That is, the default workflow is set to Jira's system\n   * workflow (the _jira_ workflow).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDraftDefaultWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDraftDefaultWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}/draft/default`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the issue type-workflow mapping for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeDraftIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeDraftIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the issue type-workflow mapping for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeDraftIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeDraftIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowSchemeDraftIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeDraftIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/draft/issuetype/${parameters.issueType}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the workflow for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeDraftIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the workflow for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeDraftIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async setWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeDraftIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/draft/issuetype/${parameters.issueType}`,\n      method: 'PUT',\n      data: parameters.details,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the issue type-workflow mapping for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeDraftIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the issue type-workflow mapping for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeDraftIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeDraftIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/draft/issuetype/${parameters.issueType}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Publishes a draft workflow scheme.\n   *\n   * Where the draft workflow includes new workflow statuses for an issue type, mappings are provided to update issues\n   * with the original workflow status to the new workflow status.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async publishDraftWorkflowScheme<T = void>(\n    parameters: Parameters.PublishDraftWorkflowScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Publishes a draft workflow scheme.\n   *\n   * Where the draft workflow includes new workflow statuses for an issue type, mappings are provided to update issues\n   * with the original workflow status to the new workflow status.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-2-task-taskId-get) to obtain updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async publishDraftWorkflowScheme<T = void>(\n    parameters: Parameters.PublishDraftWorkflowScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async publishDraftWorkflowScheme<T = void>(\n    parameters: Parameters.PublishDraftWorkflowScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}/draft/publish`,\n      method: 'POST',\n      params: {\n        validateOnly: typeof parameters !== 'string' && parameters.validateOnly,\n      },\n      data: {\n        statusMappings: typeof parameters !== 'string' && parameters.statusMappings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the workflow-issue type mappings for a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDraftWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetDraftWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the workflow-issue type mappings for a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDraftWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetDraftWorkflow,\n    callback?: never,\n  ): Promise<T>;\n  async getDraftWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetDraftWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/draft/workflow`,\n      method: 'GET',\n      params: {\n        workflowName: parameters.workflowName,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the issue types for a workflow in a workflow scheme's draft. The workflow can also be set as the default\n   * workflow for the draft workflow scheme. Unmapped issues types are mapped to the default workflow.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDraftWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftWorkflowMapping,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the issue types for a workflow in a workflow scheme's draft. The workflow can also be set as the default\n   * workflow for the draft workflow scheme. Unmapped issues types are mapped to the default workflow.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDraftWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftWorkflowMapping,\n    callback?: never,\n  ): Promise<T>;\n  async updateDraftWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftWorkflowMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/draft/workflow`,\n      method: 'PUT',\n      params: {\n        workflowName: parameters.workflowName,\n      },\n      data: {\n        defaultMapping: parameters.defaultMapping,\n        issueTypes: parameters.issueTypes,\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n        workflow: parameters.workflow,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the workflow-issue type mapping for a workflow in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDraftWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteDraftWorkflowMapping,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the workflow-issue type mapping for a workflow in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDraftWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteDraftWorkflowMapping,\n    callback?: never,\n  ): Promise<T>;\n  async deleteDraftWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteDraftWorkflowMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/draft/workflow`,\n      method: 'DELETE',\n      params: {\n        workflowName: parameters.workflowName,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowSchemeProjectAssociations {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of the workflow schemes associated with a list of projects. Each returned workflow scheme includes a\n   * list of the requested projects associated with it. Any team-managed or non-existent projects in the request are\n   * ignored and no errors are returned.\n   *\n   * If the project is associated with the `Default Workflow Scheme` no ID is returned. This is because the way the\n   * `Default Workflow Scheme` is stored means it has no ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeProjectAssociations<T = Models.ContainerOfWorkflowSchemeAssociations>(\n    parameters: Parameters.GetWorkflowSchemeProjectAssociations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of the workflow schemes associated with a list of projects. Each returned workflow scheme includes a\n   * list of the requested projects associated with it. Any team-managed or non-existent projects in the request are\n   * ignored and no errors are returned.\n   *\n   * If the project is associated with the `Default Workflow Scheme` no ID is returned. This is because the way the\n   * `Default Workflow Scheme` is stored means it has no ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeProjectAssociations<T = Models.ContainerOfWorkflowSchemeAssociations>(\n    parameters: Parameters.GetWorkflowSchemeProjectAssociations,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowSchemeProjectAssociations<T = Models.ContainerOfWorkflowSchemeAssociations>(\n    parameters: Parameters.GetWorkflowSchemeProjectAssociations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflowscheme/project',\n      method: 'GET',\n      params: {\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns a workflow scheme to a project. This operation is performed only when there are no issues in the project.\n   *\n   * Workflow schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignSchemeToProject<T = void>(\n    parameters: Parameters.AssignSchemeToProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns a workflow scheme to a project. This operation is performed only when there are no issues in the project.\n   *\n   * Workflow schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignSchemeToProject<T = void>(parameters: Parameters.AssignSchemeToProject, callback?: never): Promise<T>;\n  async assignSchemeToProject<T = void>(\n    parameters: Parameters.AssignSchemeToProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflowscheme/project',\n      method: 'PUT',\n      data: {\n        workflowSchemeId: parameters.workflowSchemeId,\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * workflow schemes, not including draft workflow schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllWorkflowSchemes<T = Models.PageWorkflowScheme>(\n    parameters: Parameters.GetAllWorkflowSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of all\n   * workflow schemes, not including draft workflow schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllWorkflowSchemes<T = Models.PageWorkflowScheme>(\n    parameters?: Parameters.GetAllWorkflowSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getAllWorkflowSchemes<T = Models.PageWorkflowScheme>(\n    parameters?: Parameters.GetAllWorkflowSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflowscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflowscheme',\n      method: 'POST',\n      data: {\n        defaultWorkflow: parameters.defaultWorkflow,\n        description: parameters.description,\n        draft: parameters.draft,\n        id: parameters.id,\n        issueTypeMappings: parameters.issueTypeMappings,\n        issueTypes: parameters.issueTypes,\n        lastModified: parameters.lastModified,\n        lastModifiedUser: parameters.lastModifiedUser,\n        name: parameters.name,\n        originalDefaultWorkflow: parameters.originalDefaultWorkflow,\n        originalIssueTypeMappings: parameters.originalIssueTypeMappings,\n        self: parameters.self,\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of workflow schemes by providing workflow scheme IDs or project IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflow schemes\n   * - _Administer projects_ project permissions to access project-scoped workflow schemes\n   */\n  async readWorkflowSchemes<T = Models.WorkflowSchemeReadResponse[]>(\n    parameters: Parameters.ReadWorkflowSchemes,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of workflow schemes by providing workflow scheme IDs or project IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflow schemes\n   * - _Administer projects_ project permissions to access project-scoped workflow schemes\n   */\n  async readWorkflowSchemes<T = Models.WorkflowSchemeReadResponse[]>(\n    parameters: Parameters.ReadWorkflowSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async readWorkflowSchemes<T = Models.WorkflowSchemeReadResponse[]>(\n    parameters: Parameters.ReadWorkflowSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflowscheme/read',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        projectIds: parameters.projectIds,\n        workflowSchemeIds: parameters.workflowSchemeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates company-managed and team-managed project workflow schemes. This API doesn't have a concept of draft, so any\n   * changes made to a workflow scheme are immediately available. When changing the available statuses for issue types,\n   * an [asynchronous task](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations)\n   * migrates the issues as defined in the provided mappings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to update all, including global-scoped, workflow schemes.\n   * - _Administer projects_ project permission to update project-scoped workflow schemes.\n   */\n  async updateSchemes<T = unknown>(parameters: Parameters.UpdateSchemes, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates company-managed and team-managed project workflow schemes. This API doesn't have a concept of draft, so any\n   * changes made to a workflow scheme are immediately available. When changing the available statuses for issue types,\n   * an [asynchronous task](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#async-operations)\n   * migrates the issues as defined in the provided mappings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to update all, including global-scoped, workflow schemes.\n   * - _Administer projects_ project permission to update project-scoped workflow schemes.\n   */\n  async updateSchemes<T = unknown>(parameters: Parameters.UpdateSchemes, callback?: never): Promise<T>;\n  async updateSchemes<T = unknown>(parameters: Parameters.UpdateSchemes, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflowscheme/update',\n      method: 'POST',\n      data: {\n        defaultWorkflowId: parameters.defaultWorkflowId,\n        description: parameters.description,\n        id: parameters.id,\n        name: parameters.name,\n        statusMappingsByIssueTypeOverride: parameters.statusMappingsByIssueTypeOverride,\n        statusMappingsByWorkflows: parameters.statusMappingsByWorkflows,\n        version: parameters.version,\n        workflowsForIssueTypes: parameters.workflowsForIssueTypes,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets the required status mappings for the desired changes to a workflow scheme. The results are provided per issue\n   * type and workflow. When updating a workflow scheme, status mappings can be provided per issue type, per workflow,\n   * or both.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ permission to update all, including global-scoped, workflow schemes.\n   * - _Administer projects_ project permission to update project-scoped workflow schemes.\n   */\n  async updateWorkflowSchemeMappings<T = Models.WorkflowSchemeUpdateRequiredMappingsResponse>(\n    parameters: Parameters.UpdateWorkflowSchemeMappings,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets the required status mappings for the desired changes to a workflow scheme. The results are provided per issue\n   * type and workflow. When updating a workflow scheme, status mappings can be provided per issue type, per workflow,\n   * or both.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ permission to update all, including global-scoped, workflow schemes.\n   * - _Administer projects_ project permission to update project-scoped workflow schemes.\n   */\n  async updateWorkflowSchemeMappings<T = Models.WorkflowSchemeUpdateRequiredMappingsResponse>(\n    parameters: Parameters.UpdateWorkflowSchemeMappings,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowSchemeMappings<T = Models.WorkflowSchemeUpdateRequiredMappingsResponse>(\n    parameters: Parameters.UpdateWorkflowSchemeMappings,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflowscheme/update/mappings',\n      method: 'POST',\n      data: {\n        defaultWorkflowId: parameters.defaultWorkflowId,\n        id: parameters.id,\n        workflowsForIssueTypes: parameters.workflowsForIssueTypes,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}`,\n      method: 'GET',\n      params: {\n        returnDraftIfExists: typeof parameters !== 'string' && parameters.returnDraftIfExists,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a company-manged project workflow scheme, including the name, default workflow, issue type to project\n   * mappings, and more. If the workflow scheme is active (that is, being used by at least one project), then a draft\n   * workflow scheme is created or updated instead, provided that `updateDraftIfNeeded` is set to `true`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a company-manged project workflow scheme, including the name, default workflow, issue type to project\n   * mappings, and more. If the workflow scheme is active (that is, being used by at least one project), then a draft\n   * workflow scheme is created or updated instead, provided that `updateDraftIfNeeded` is set to `true`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        defaultWorkflow: parameters.defaultWorkflow,\n        issueTypeMappings: parameters.issueTypeMappings,\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a workflow scheme. Note that a workflow scheme cannot be deleted if it is active (that is, being used by at\n   * least one project).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowScheme<T = void>(\n    parameters: Parameters.DeleteWorkflowScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a workflow scheme. Note that a workflow scheme cannot be deleted if it is active (that is, being used by at\n   * least one project).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowScheme<T = void>(\n    parameters: Parameters.DeleteWorkflowScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowScheme<T = void>(\n    parameters: Parameters.DeleteWorkflowScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the default workflow for a workflow scheme. The default workflow is the workflow that is assigned any issue\n   * types that have not been mapped to any other workflow. The default workflow has _All Unassigned Issue Types_ listed\n   * in its issue types for the workflow scheme in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDefaultWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the default workflow for a workflow scheme. The default workflow is the workflow that is assigned any issue\n   * types that have not been mapped to any other workflow. The default workflow has _All Unassigned Issue Types_ listed\n   * in its issue types for the workflow scheme in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDefaultWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async getDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDefaultWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}/default`,\n      method: 'GET',\n      params: {\n        returnDraftIfExists: typeof parameters !== 'string' && parameters.returnDraftIfExists,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the default workflow for a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request object and a draft workflow scheme is created or updated with the new default workflow. The\n   * draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDefaultWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the default workflow for a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request object and a draft workflow scheme is created or updated with the new default workflow. The\n   * draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDefaultWorkflow,\n    callback?: never,\n  ): Promise<T>;\n  async updateDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDefaultWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/default`,\n      method: 'PUT',\n      data: {\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n        workflow: parameters.workflow,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Resets the default workflow for a workflow scheme. That is, the default workflow is set to Jira's system workflow\n   * (the _jira_ workflow).\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the default workflow reset. The draft workflow scheme\n   * can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDefaultWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Resets the default workflow for a workflow scheme. That is, the default workflow is set to Jira's system workflow\n   * (the _jira_ workflow).\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the default workflow reset. The draft workflow scheme\n   * can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDefaultWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDefaultWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}/default`,\n      method: 'DELETE',\n      params: {\n        updateDraftIfNeeded: typeof parameters !== 'string' && parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the issue type-workflow mapping for an issue type in a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the issue type-workflow mapping for an issue type in a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowSchemeIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/issuetype/${parameters.issueType}`,\n      method: 'GET',\n      params: {\n        returnDraftIfExists: parameters.returnDraftIfExists,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the workflow for an issue type in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request body and a draft workflow scheme is created or updated with the new issue type-workflow\n   * mapping. The draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the workflow for an issue type in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request body and a draft workflow scheme is created or updated with the new issue type-workflow\n   * mapping. The draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async setWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/issuetype/${parameters.issueType}`,\n      method: 'PUT',\n      data: parameters.details,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the issue type-workflow mapping for an issue type in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the issue type-workflow mapping deleted. The draft\n   * workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the issue type-workflow mapping for an issue type in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the issue type-workflow mapping deleted. The draft\n   * workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/issuetype/${parameters.issueType}`,\n      method: 'DELETE',\n      params: {\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the workflow-issue type mappings for a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the workflow-issue type mappings for a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}/workflow`,\n      method: 'GET',\n      params: {\n        workflowName: typeof parameters !== 'string' && parameters.workflowName,\n        returnDraftIfExists: typeof parameters !== 'string' && parameters.returnDraftIfExists,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the issue types for a workflow in a workflow scheme. The workflow can also be set as the default workflow for\n   * the workflow scheme. Unmapped issues types are mapped to the default workflow.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request body and a draft workflow scheme is created or updated with the new workflow-issue types\n   * mappings. The draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowMapping,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the issue types for a workflow in a workflow scheme. The workflow can also be set as the default workflow for\n   * the workflow scheme. Unmapped issues types are mapped to the default workflow.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request body and a draft workflow scheme is created or updated with the new workflow-issue types\n   * mappings. The draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowMapping,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.id}/workflow`,\n      method: 'PUT',\n      params: {\n        workflowName: parameters.workflowName,\n      },\n      data: {\n        defaultMapping: parameters.defaultMapping,\n        issueTypes: parameters.issueTypes,\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n        workflow: parameters.workflow,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the workflow-issue type mapping for a workflow in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the workflow-issue type mapping deleted. The draft\n   * workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteWorkflowMapping | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the workflow-issue type mapping for a workflow in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the workflow-issue type mapping deleted. The draft\n   * workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteWorkflowMapping | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteWorkflowMapping | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${id}/workflow`,\n      method: 'DELETE',\n      params: {\n        workflowName: typeof parameters !== 'string' && parameters.workflowName,\n        updateDraftIfNeeded: typeof parameters !== 'string' && parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of projects using a given workflow scheme. */\n  async getProjectUsagesForWorkflowScheme<T = Models.WorkflowSchemeProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForWorkflowScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of projects using a given workflow scheme. */\n  async getProjectUsagesForWorkflowScheme<T = Models.WorkflowSchemeProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForWorkflowScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectUsagesForWorkflowScheme<T = Models.WorkflowSchemeProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForWorkflowScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflowscheme/${parameters.workflowSchemeId}/projectUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowStatusCategories {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of all status categories.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getStatusCategories<T = Models.StatusCategory[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a list of all status categories.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getStatusCategories<T = Models.StatusCategory[]>(callback?: never): Promise<T>;\n  async getStatusCategories<T = Models.StatusCategory[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/statuscategory',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a status category. Status categories provided a mechanism for categorizing\n   * [statuses](#api-rest-api-2-status-idOrName-get).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getStatusCategory<T = Models.StatusCategory>(\n    parameters: Parameters.GetStatusCategory | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a status category. Status categories provided a mechanism for categorizing\n   * [statuses](#api-rest-api-2-status-idOrName-get).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getStatusCategory<T = Models.StatusCategory>(\n    parameters: Parameters.GetStatusCategory | string,\n    callback?: never,\n  ): Promise<T>;\n  async getStatusCategory<T = Models.StatusCategory>(\n    parameters: Parameters.GetStatusCategory | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const idOrKey = typeof parameters === 'string' ? parameters : parameters.idOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/statuscategory/${idOrKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowStatuses {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of all statuses associated with active workflows.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * [Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required: _Browse\n   * projects_ [project\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) for the\n   * project.\n   */\n  async getStatuses<T = Models.StatusDetails[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a list of all statuses associated with active workflows.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * [Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required: _Browse\n   * projects_ [project\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) for the\n   * project.\n   */\n  async getStatuses<T = Models.StatusDetails[]>(callback?: never): Promise<T>;\n  async getStatuses<T = Models.StatusDetails[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/status',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a status. The status must be associated with an active workflow to be returned.\n   *\n   * If a name is used on more than one status, only the status found first is returned. Therefore, identifying the\n   * status by its ID may be preferable.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * [Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required: _Browse\n   * projects_ [project\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) for the\n   * project.\n   */\n  async getStatus<T = Models.StatusDetails>(\n    parameters: Parameters.GetStatus | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a status. The status must be associated with an active workflow to be returned.\n   *\n   * If a name is used on more than one status, only the status found first is returned. Therefore, identifying the\n   * status by its ID may be preferable.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * [Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required: _Browse\n   * projects_ [project\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) for the\n   * project.\n   */\n  async getStatus<T = Models.StatusDetails>(parameters: Parameters.GetStatus | string, callback?: never): Promise<T>;\n  async getStatus<T = Models.StatusDetails>(\n    parameters: Parameters.GetStatus | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const idOrName = typeof parameters === 'string' ? parameters : parameters.idOrName;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/status/${idOrName}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowTransitionProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the properties on a workflow transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowTransitionProperties<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.GetWorkflowTransitionProperties,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the properties on a workflow transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowTransitionProperties<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.GetWorkflowTransitionProperties,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowTransitionProperties<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.GetWorkflowTransitionProperties,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflow/transitions/${parameters.transitionId}/properties`,\n      method: 'GET',\n      params: {\n        includeReservedKeys: parameters.includeReservedKeys,\n        key: parameters.key,\n        workflowName: parameters.workflowName,\n        workflowMode: parameters.workflowMode,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a property to a workflow transition. Transition properties are used to change the behavior of a transition.\n   * For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.CreateWorkflowTransitionProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds a property to a workflow transition. Transition properties are used to change the behavior of a transition.\n   * For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.CreateWorkflowTransitionProperty,\n    callback?: never,\n  ): Promise<T>;\n  async createWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.CreateWorkflowTransitionProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflow/transitions/${parameters.transitionId}/properties`,\n      method: 'POST',\n      params: {\n        key: parameters.key,\n        workflowName: parameters.workflowName,\n        workflowMode: parameters.workflowMode,\n      },\n      data: {\n        ...parameters,\n        transitionId: undefined,\n        key: undefined,\n        workflowName: undefined,\n        workflowMode: undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a workflow transition by changing the property value. Trying to update a property that does not exist\n   * results in a new property being added to the transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.UpdateWorkflowTransitionProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a workflow transition by changing the property value. Trying to update a property that does not exist\n   * results in a new property being added to the transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.UpdateWorkflowTransitionProperty,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.UpdateWorkflowTransitionProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflow/transitions/${parameters.transitionId}/properties`,\n      method: 'PUT',\n      params: {\n        key: parameters.key,\n        workflowName: parameters.workflowName,\n        workflowMode: parameters.workflowMode,\n      },\n      data: {\n        ...parameters,\n        transitionId: undefined,\n        key: undefined,\n        workflowName: undefined,\n        workflowMode: undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a property from a workflow transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowTransitionProperty<T = unknown>(\n    parameters: Parameters.DeleteWorkflowTransitionProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a property from a workflow transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowTransitionProperty<T = unknown>(\n    parameters: Parameters.DeleteWorkflowTransitionProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowTransitionProperty<T = unknown>(\n    parameters: Parameters.DeleteWorkflowTransitionProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflow/transitions/${parameters.transitionId}/properties`,\n      method: 'DELETE',\n      params: {\n        key: parameters.key,\n        workflowName: parameters.workflowName,\n        workflowMode: parameters.workflowMode,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowTransitionRules {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * workflows with transition rules. The workflows can be filtered to return only those containing workflow transition\n   * rules:\n   *\n   * - Of one or more transition rule types, such as [workflow post\n   *   functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/).\n   * - Matching one or more transition rule keys.\n   *\n   * Only workflows containing transition rules created by the calling\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app are returned.\n   *\n   * Due to server-side optimizations, workflows with an empty list of rules may be returned; these workflows can be\n   * ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation.\n   */\n  async getWorkflowTransitionRuleConfigurations<T = Models.PageWorkflowTransitionRules>(\n    parameters: Parameters.GetWorkflowTransitionRuleConfigurations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * workflows with transition rules. The workflows can be filtered to return only those containing workflow transition\n   * rules:\n   *\n   * - Of one or more transition rule types, such as [workflow post\n   *   functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/).\n   * - Matching one or more transition rule keys.\n   *\n   * Only workflows containing transition rules created by the calling\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app are returned.\n   *\n   * Due to server-side optimizations, workflows with an empty list of rules may be returned; these workflows can be\n   * ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation.\n   */\n  async getWorkflowTransitionRuleConfigurations<T = Models.PageWorkflowTransitionRules>(\n    parameters: Parameters.GetWorkflowTransitionRuleConfigurations,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowTransitionRuleConfigurations<T = Models.PageWorkflowTransitionRules>(\n    parameters: Parameters.GetWorkflowTransitionRuleConfigurations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflow/rule/config',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        types: parameters.types,\n        keys: parameters.keys,\n        workflowNames: parameters.workflowNames,\n        withTags: parameters.withTags,\n        draft: parameters.draft,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates configuration of workflow transition rules. The following rule types are supported:\n   *\n   * - [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/)\n   * - [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/)\n   * - [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/)\n   *\n   * Only rules created by the calling\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app can be updated.\n   *\n   * To assist with app migration, this operation can be used to:\n   *\n   * - Disable a rule.\n   * - Add a `tag`. Use this to filter rules in the [Get workflow transition rule\n   *   configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-workflow-transition-rules/#api-rest-api-2-workflow-rule-config-get).\n   *\n   * Rules are enabled if the `disabled` parameter is not provided.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation.\n   */\n  async updateWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters: Parameters.UpdateWorkflowTransitionRuleConfigurations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates configuration of workflow transition rules. The following rule types are supported:\n   *\n   * - [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/)\n   * - [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/)\n   * - [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/)\n   *\n   * Only rules created by the calling\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app can be updated.\n   *\n   * To assist with app migration, this operation can be used to:\n   *\n   * - Disable a rule.\n   * - Add a `tag`. Use this to filter rules in the [Get workflow transition rule\n   *   configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-workflow-transition-rules/#api-rest-api-2-workflow-rule-config-get).\n   *\n   * Rules are enabled if the `disabled` parameter is not provided.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation.\n   */\n  async updateWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters: Parameters.UpdateWorkflowTransitionRuleConfigurations,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters: Parameters.UpdateWorkflowTransitionRuleConfigurations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflow/rule/config',\n      method: 'PUT',\n      data: {\n        workflows: parameters.workflows,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes workflow transition rules from one or more workflows. These rule types are supported:\n   *\n   * - [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/)\n   * - [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/)\n   * - [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/)\n   *\n   * Only rules created by the calling Connect app can be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can use this operation.\n   */\n  async deleteWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters: Parameters.DeleteWorkflowTransitionRuleConfigurations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes workflow transition rules from one or more workflows. These rule types are supported:\n   *\n   * - [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/)\n   * - [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/)\n   * - [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/)\n   *\n   * Only rules created by the calling Connect app can be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:** Only\n   * Connect apps can use this operation.\n   */\n  async deleteWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters?: Parameters.DeleteWorkflowTransitionRuleConfigurations,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters?: Parameters.DeleteWorkflowTransitionRuleConfigurations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflow/rule/config/delete',\n      method: 'PUT',\n      data: {\n        workflows: parameters?.workflows,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport { paramSerializer } from '../paramSerializer';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Workflows {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a workflow. You can define transition rules using the shapes detailed in the following sections. If no\n   * transitional rules are specified the default system transition rules are used. Note: This only applies to\n   * company-managed scoped workflows. Use [bulk create\n   * workflows](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-workflows/#api-rest-api-2-workflows-create-post)\n   * to create both team and company-managed scoped workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflow<T = Models.WorkflowId>(\n    parameters: Parameters.CreateWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a workflow. You can define transition rules using the shapes detailed in the following sections. If no\n   * transitional rules are specified the default system transition rules are used. Note: This only applies to\n   * company-managed scoped workflows. Use [bulk create\n   * workflows](https://developer.atlassian.com/cloud/jira/platform/rest/v2/api-group-workflows/#api-rest-api-2-workflows-create-post)\n   * to create both team and company-managed scoped workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflow<T = Models.WorkflowId>(parameters: Parameters.CreateWorkflow, callback?: never): Promise<T>;\n  async createWorkflow<T = Models.WorkflowId>(\n    parameters: Parameters.CreateWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflow',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n        statuses: parameters.statuses,\n        transitions: parameters.transitions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * published classic workflows. When workflow names are specified, details of those workflows are returned. Otherwise,\n   * all published classic workflows are returned.\n   *\n   * This operation does not return next-gen workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowsPaginated<T = Models.PageWorkflow>(\n    parameters: Parameters.GetWorkflowsPaginated | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of\n   * published classic workflows. When workflow names are specified, details of those workflows are returned. Otherwise,\n   * all published classic workflows are returned.\n   *\n   * This operation does not return next-gen workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowsPaginated<T = Models.PageWorkflow>(\n    parameters?: Parameters.GetWorkflowsPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowsPaginated<T = Models.PageWorkflow>(\n    parameters?: Parameters.GetWorkflowsPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflow/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        workflowName: paramSerializer('workflowName', parameters?.workflowName),\n        expand: parameters?.expand,\n        queryString: parameters?.queryString,\n        orderBy: parameters?.orderBy,\n        isActive: parameters?.isActive,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a workflow.\n   *\n   * The workflow cannot be deleted if it is:\n   *\n   * - An active workflow.\n   * - A system workflow.\n   * - Associated with any workflow scheme.\n   * - Associated with any draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteInactiveWorkflow<T = void>(\n    parameters: Parameters.DeleteInactiveWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a workflow.\n   *\n   * The workflow cannot be deleted if it is:\n   *\n   * - An active workflow.\n   * - A system workflow.\n   * - Associated with any workflow scheme.\n   * - Associated with any draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteInactiveWorkflow<T = void>(\n    parameters: Parameters.DeleteInactiveWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteInactiveWorkflow<T = void>(\n    parameters: Parameters.DeleteInactiveWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const entityId = typeof parameters === 'string' ? parameters : parameters.entityId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflow/${entityId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of issue types using a given workflow within a project. */\n  async getWorkflowProjectIssueTypeUsages<T = Models.WorkflowProjectIssueTypeUsageDTO>(\n    parameters: Parameters.GetWorkflowProjectIssueTypeUsages,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of issue types using a given workflow within a project. */\n  async getWorkflowProjectIssueTypeUsages<T = Models.WorkflowProjectIssueTypeUsageDTO>(\n    parameters: Parameters.GetWorkflowProjectIssueTypeUsages,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowProjectIssueTypeUsages<T = Models.WorkflowProjectIssueTypeUsageDTO>(\n    parameters: Parameters.GetWorkflowProjectIssueTypeUsages,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflow/${parameters.workflowId}/project/${parameters.projectId}/issueTypeUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of projects using a given workflow. */\n  async getProjectUsagesForWorkflow<T = Models.WorkflowProjectUsageDTO>(\n    parameters: Parameters.GetProjectUsagesForWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of projects using a given workflow. */\n  async getProjectUsagesForWorkflow<T = Models.WorkflowProjectUsageDTO>(\n    parameters: Parameters.GetProjectUsagesForWorkflow,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectUsagesForWorkflow<T = Models.WorkflowProjectUsageDTO>(\n    parameters: Parameters.GetProjectUsagesForWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflow/${parameters.workflowId}/projectUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of workflow schemes using a given workflow. */\n  async getWorkflowSchemeUsagesForWorkflow<T = Models.WorkflowSchemeUsageDTO>(\n    parameters: Parameters.GetWorkflowSchemeUsagesForWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of workflow schemes using a given workflow. */\n  async getWorkflowSchemeUsagesForWorkflow<T = Models.WorkflowSchemeUsageDTO>(\n    parameters: Parameters.GetWorkflowSchemeUsagesForWorkflow,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowSchemeUsagesForWorkflow<T = Models.WorkflowSchemeUsageDTO>(\n    parameters: Parameters.GetWorkflowSchemeUsagesForWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/2/workflow/${parameters.workflowId}/workflowSchemes`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of workflows and related statuses by providing workflow names, workflow IDs, or project and issue\n   * types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflows\n   * - At least one of the _Administer projects_ and _View (read-only) workflow_ project permissions to access\n   *   project-scoped workflows\n   */\n  async readWorkflows<T = Models.WorkflowRead>(\n    parameters: Parameters.ReadWorkflows,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of workflows and related statuses by providing workflow names, workflow IDs, or project and issue\n   * types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflows\n   * - At least one of the _Administer projects_ and _View (read-only) workflow_ project permissions to access\n   *   project-scoped workflows\n   */\n  async readWorkflows<T = Models.WorkflowRead>(parameters: Parameters.ReadWorkflows, callback?: never): Promise<T>;\n  async readWorkflows<T = Models.WorkflowRead>(\n    parameters: Parameters.ReadWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflows',\n      method: 'POST',\n      params: {\n        useTransitionLinksFormat: parameters.useTransitionLinksFormat,\n        useApprovalConfiguration: parameters.useApprovalConfiguration,\n      },\n      data: {\n        projectAndIssueTypes: parameters.projectAndIssueTypes,\n        workflowIds: parameters.workflowIds,\n        workflowNames: parameters.workflowNames,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Get the list of workflow capabilities for a specific workflow using either the workflow ID, or the project and\n   * issue type ID pair. The response includes the scope of the workflow, defined as global/project-based, and a list of\n   * project types that the workflow is scoped to. It also includes all rules organised into their broad categories\n   * (conditions, validators, actions, triggers, screens) as well as the source location (Atlassian-provided, Connect,\n   * Forge).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to access all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to access project-scoped workflows\n   */\n  async workflowCapabilities<T = Models.WorkflowCapabilities>(\n    parameters: Parameters.WorkflowCapabilities,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Get the list of workflow capabilities for a specific workflow using either the workflow ID, or the project and\n   * issue type ID pair. The response includes the scope of the workflow, defined as global/project-based, and a list of\n   * project types that the workflow is scoped to. It also includes all rules organised into their broad categories\n   * (conditions, validators, actions, triggers, screens) as well as the source location (Atlassian-provided, Connect,\n   * Forge).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to access all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to access project-scoped workflows\n   */\n  async workflowCapabilities<T = Models.WorkflowCapabilities>(\n    parameters: Parameters.WorkflowCapabilities,\n    callback?: never,\n  ): Promise<T>;\n  async workflowCapabilities<T = Models.WorkflowCapabilities>(\n    parameters: Parameters.WorkflowCapabilities,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflows/capabilities',\n      method: 'GET',\n      params: {\n        workflowId: parameters.workflowId,\n        projectId: parameters.projectId,\n        issueTypeId: parameters.issueTypeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Create workflows and related statuses.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async createWorkflows<T = Models.WorkflowCreate>(\n    parameters: Parameters.CreateWorkflows,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Create workflows and related statuses.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async createWorkflows<T = Models.WorkflowCreate>(\n    parameters: Parameters.CreateWorkflows,\n    callback?: never,\n  ): Promise<T>;\n  async createWorkflows<T = Models.WorkflowCreate>(\n    parameters: Parameters.CreateWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflows/create',\n      method: 'POST',\n      data: {\n        scope: parameters.scope,\n        statuses: parameters.statuses,\n        workflows: parameters.workflows,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Validate the payload for bulk create workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async validateCreateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateCreateWorkflows,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Validate the payload for bulk create workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async validateCreateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateCreateWorkflows,\n    callback?: never,\n  ): Promise<T>;\n  async validateCreateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateCreateWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflows/create/validation',\n      method: 'POST',\n      data: {\n        payload: parameters.payload,\n        validationOptions: parameters.validationOptions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of global\n   * and project workflows. If workflow names are specified in query string, details of those workflows are returned.\n   * Otherwise, all workflows are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflows\n   * - At least one of the _Administer projects_ and _View (read-only) workflow_ project permissions to access\n   *   project-scoped workflows\n   */\n  async searchWorkflows<T = Models.WorkflowSearchResponse>(\n    parameters: Parameters.SearchWorkflows | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#pagination) list of global\n   * and project workflows. If workflow names are specified in query string, details of those workflows are returned.\n   * Otherwise, all workflows are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflows\n   * - At least one of the _Administer projects_ and _View (read-only) workflow_ project permissions to access\n   *   project-scoped workflows\n   */\n  async searchWorkflows<T = Models.WorkflowSearchResponse>(\n    parameters?: Parameters.SearchWorkflows,\n    callback?: never,\n  ): Promise<T>;\n  async searchWorkflows<T = Models.WorkflowSearchResponse>(\n    parameters?: Parameters.SearchWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflows/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        expand: parameters?.expand,\n        queryString: parameters?.queryString,\n        orderBy: parameters?.orderBy,\n        scope: parameters?.scope,\n        isActive: parameters?.isActive,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Update workflows and related statuses.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async updateWorkflows<T = Models.WorkflowUpdate>(\n    parameters: Parameters.UpdateWorkflows,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update workflows and related statuses.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async updateWorkflows<T = Models.WorkflowUpdate>(\n    parameters: Parameters.UpdateWorkflows,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflows<T = Models.WorkflowUpdate>(\n    parameters: Parameters.UpdateWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflows/update',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        statuses: parameters.statuses,\n        workflows: parameters.workflows,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Validate the payload for bulk update workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async validateUpdateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateUpdateWorkflows,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Validate the payload for bulk update workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v2/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async validateUpdateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateUpdateWorkflows,\n    callback?: never,\n  ): Promise<T>;\n  async validateUpdateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateUpdateWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/2/workflows/update/validation',\n      method: 'POST',\n      data: {\n        payload: parameters.payload,\n        validationOptions: parameters.validationOptions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import { BaseClient } from '../../clients/baseClient';\nimport { AnnouncementBanner } from '../announcementBanner';\nimport { AppDataPolicies } from '../appDataPolicies';\nimport { ApplicationRoles } from '../applicationRoles';\nimport { AppMigration } from '../appMigration';\nimport { AppProperties } from '../appProperties';\nimport { AuditRecords } from '../auditRecords';\nimport { Avatars } from '../avatars';\nimport { ClassificationLevels } from '../classificationLevels';\nimport { Dashboards } from '../dashboards';\nimport { DynamicModules } from '../dynamicModules';\nimport { Filters } from '../filters';\nimport { FilterSharing } from '../filterSharing';\nimport { GroupAndUserPicker } from '../groupAndUserPicker';\nimport { Groups } from '../groups';\nimport { IssueAttachments } from '../issueAttachments';\nimport { IssueCommentProperties } from '../issueCommentProperties';\nimport { IssueComments } from '../issueComments';\nimport { IssueCustomFieldAssociations } from '../issueCustomFieldAssociations';\nimport { IssueCustomFieldConfigurationApps } from '../issueCustomFieldConfigurationApps';\nimport { IssueCustomFieldContexts } from '../issueCustomFieldContexts';\nimport { IssueCustomFieldOptions } from '../issueCustomFieldOptions';\nimport { IssueCustomFieldOptionsApps } from '../issueCustomFieldOptionsApps';\nimport { IssueCustomFieldValuesApps } from '../issueCustomFieldValuesApps';\nimport { IssueFieldConfigurations } from '../issueFieldConfigurations';\nimport { IssueFields } from '../issueFields';\nimport { IssueLinks } from '../issueLinks';\nimport { IssueLinkTypes } from '../issueLinkTypes';\nimport { IssueNavigatorSettings } from '../issueNavigatorSettings';\nimport { IssueNotificationSchemes } from '../issueNotificationSchemes';\nimport { IssuePriorities } from '../issuePriorities';\nimport { IssueProperties } from '../issueProperties';\nimport { IssueRemoteLinks } from '../issueRemoteLinks';\nimport { IssueResolutions } from '../issueResolutions';\nimport { Issues } from '../issues';\nimport { IssueSearch } from '../issueSearch';\nimport { IssueSecurityLevel } from '../issueSecurityLevel';\nimport { IssueSecuritySchemes } from '../issueSecuritySchemes';\nimport { IssueTypeProperties } from '../issueTypeProperties';\nimport { IssueTypes } from '../issueTypes';\nimport { IssueTypeSchemes } from '../issueTypeSchemes';\nimport { IssueTypeScreenSchemes } from '../issueTypeScreenSchemes';\nimport { IssueVotes } from '../issueVotes';\nimport { IssueWatchers } from '../issueWatchers';\nimport { IssueWorklogProperties } from '../issueWorklogProperties';\nimport { IssueWorklogs } from '../issueWorklogs';\nimport { JiraExpressions } from '../jiraExpressions';\nimport { JiraSettings } from '../jiraSettings';\nimport { JQL } from '../jQL';\nimport { JqlFunctionsApps } from '../jqlFunctionsApps';\nimport { Labels } from '../labels';\nimport { LicenseMetrics } from '../licenseMetrics';\nimport { Myself } from '../myself';\nimport { Permissions } from '../permissions';\nimport { PermissionSchemes } from '../permissionSchemes';\nimport { Plans } from '../plans';\nimport { PrioritySchemes } from '../prioritySchemes';\nimport { ProjectAvatars } from '../projectAvatars';\nimport { ProjectCategories } from '../projectCategories';\nimport { ProjectClassificationLevels } from '../projectClassificationLevels';\nimport { ProjectComponents } from '../projectComponents';\nimport { ProjectEmail } from '../projectEmail';\nimport { ProjectFeatures } from '../projectFeatures';\nimport { ProjectKeyAndNameValidation } from '../projectKeyAndNameValidation';\nimport { ProjectPermissionSchemes } from '../projectPermissionSchemes';\nimport { ProjectProperties } from '../projectProperties';\nimport { ProjectRoleActors } from '../projectRoleActors';\nimport { ProjectRoles } from '../projectRoles';\nimport { Projects } from '../projects';\nimport { ProjectTemplates } from '../projectTemplates';\nimport { ProjectTypes } from '../projectTypes';\nimport { ProjectVersions } from '../projectVersions';\nimport { Screens } from '../screens';\nimport { ScreenSchemes } from '../screenSchemes';\nimport { ScreenTabFields } from '../screenTabFields';\nimport { ScreenTabs } from '../screenTabs';\nimport { ServerInfo } from '../serverInfo';\nimport { ServiceRegistry } from '../serviceRegistry';\nimport { Status } from '../status';\nimport { Tasks } from '../tasks';\nimport { TeamsInPlan } from '../teamsInPlan';\nimport { TimeTracking } from '../timeTracking';\nimport { UIModificationsApps } from '../uIModificationsApps';\nimport { UserNavProperties } from '../userNavProperties';\nimport { UserProperties } from '../userProperties';\nimport { Users } from '../users';\nimport { UserSearch } from '../userSearch';\nimport { Webhooks } from '../webhooks';\nimport { Workflows } from '../workflows';\nimport { WorkflowSchemeDrafts } from '../workflowSchemeDrafts';\nimport { WorkflowSchemeProjectAssociations } from '../workflowSchemeProjectAssociations';\nimport { WorkflowSchemes } from '../workflowSchemes';\nimport { WorkflowStatusCategories } from '../workflowStatusCategories';\nimport { WorkflowStatuses } from '../workflowStatuses';\nimport { WorkflowTransitionProperties } from '../workflowTransitionProperties';\nimport { WorkflowTransitionRules } from '../workflowTransitionRules';\n\nexport class Version2Client extends BaseClient {\n  announcementBanner = new AnnouncementBanner(this);\n  appDataPolicies = new AppDataPolicies(this);\n  applicationRoles = new ApplicationRoles(this);\n  appMigration = new AppMigration(this);\n  appProperties = new AppProperties(this);\n  auditRecords = new AuditRecords(this);\n  avatars = new Avatars(this);\n  classificationLevels = new ClassificationLevels(this);\n  dashboards = new Dashboards(this);\n  dynamicModules = new DynamicModules(this);\n  filters = new Filters(this);\n  filterSharing = new FilterSharing(this);\n  groupAndUserPicker = new GroupAndUserPicker(this);\n  groups = new Groups(this);\n  issueAttachments = new IssueAttachments(this);\n  issueCommentProperties = new IssueCommentProperties(this);\n  issueComments = new IssueComments(this);\n  issueCustomFieldAssociations = new IssueCustomFieldAssociations(this);\n  issueCustomFieldConfigurationApps = new IssueCustomFieldConfigurationApps(this);\n  issueCustomFieldContexts = new IssueCustomFieldContexts(this);\n  issueCustomFieldOptions = new IssueCustomFieldOptions(this);\n  issueCustomFieldOptionsApps = new IssueCustomFieldOptionsApps(this);\n  issueCustomFieldValuesApps = new IssueCustomFieldValuesApps(this);\n  issueFieldConfigurations = new IssueFieldConfigurations(this);\n  issueFields = new IssueFields(this);\n  issueLinks = new IssueLinks(this);\n  issueLinkTypes = new IssueLinkTypes(this);\n  issueNavigatorSettings = new IssueNavigatorSettings(this);\n  issueNotificationSchemes = new IssueNotificationSchemes(this);\n  issuePriorities = new IssuePriorities(this);\n  issueProperties = new IssueProperties(this);\n  issueRemoteLinks = new IssueRemoteLinks(this);\n  issueResolutions = new IssueResolutions(this);\n  issues = new Issues(this);\n  issueSearch = new IssueSearch(this);\n  issueSecurityLevel = new IssueSecurityLevel(this);\n  issueSecuritySchemes = new IssueSecuritySchemes(this);\n  issueTypeProperties = new IssueTypeProperties(this);\n  issueTypes = new IssueTypes(this);\n  issueTypeSchemes = new IssueTypeSchemes(this);\n  issueTypeScreenSchemes = new IssueTypeScreenSchemes(this);\n  issueVotes = new IssueVotes(this);\n  issueWatchers = new IssueWatchers(this);\n  issueWorklogProperties = new IssueWorklogProperties(this);\n  issueWorklogs = new IssueWorklogs(this);\n  jiraExpressions = new JiraExpressions(this);\n  jiraSettings = new JiraSettings(this);\n  jql = new JQL(this);\n  jqlFunctionsApps = new JqlFunctionsApps(this);\n  labels = new Labels(this);\n  licenseMetrics = new LicenseMetrics(this);\n  myself = new Myself(this);\n  permissions = new Permissions(this);\n  permissionSchemes = new PermissionSchemes(this);\n  plans = new Plans(this);\n  prioritySchemes = new PrioritySchemes(this);\n  projectAvatars = new ProjectAvatars(this);\n  projectCategories = new ProjectCategories(this);\n  projectClassificationLevels = new ProjectClassificationLevels(this);\n  projectComponents = new ProjectComponents(this);\n  projectEmail = new ProjectEmail(this);\n  projectFeatures = new ProjectFeatures(this);\n  projectKeyAndNameValidation = new ProjectKeyAndNameValidation(this);\n  projectPermissionSchemes = new ProjectPermissionSchemes(this);\n  projectProperties = new ProjectProperties(this);\n  projectRoleActors = new ProjectRoleActors(this);\n  projectRoles = new ProjectRoles(this);\n  projects = new Projects(this);\n  projectTemplates = new ProjectTemplates(this);\n  projectTypes = new ProjectTypes(this);\n  projectVersions = new ProjectVersions(this);\n  screens = new Screens(this);\n  screenSchemes = new ScreenSchemes(this);\n  screenTabFields = new ScreenTabFields(this);\n  screenTabs = new ScreenTabs(this);\n  serverInfo = new ServerInfo(this);\n  serviceRegistry = new ServiceRegistry(this);\n  status = new Status(this);\n  tasks = new Tasks(this);\n  teamsInPlan = new TeamsInPlan(this);\n  timeTracking = new TimeTracking(this);\n  uiModificationsApps = new UIModificationsApps(this);\n  userNavProperties = new UserNavProperties(this);\n  userProperties = new UserProperties(this);\n  users = new Users(this);\n  userSearch = new UserSearch(this);\n  webhooks = new Webhooks(this);\n  workflows = new Workflows(this);\n  workflowSchemeDrafts = new WorkflowSchemeDrafts(this);\n  workflowSchemeProjectAssociations = new WorkflowSchemeProjectAssociations(this);\n  workflowSchemes = new WorkflowSchemes(this);\n  workflowStatusCategories = new WorkflowStatusCategories(this);\n  workflowStatuses = new WorkflowStatuses(this);\n  workflowTransitionProperties = new WorkflowTransitionProperties(this);\n  workflowTransitionRules = new WorkflowTransitionRules(this);\n}\n","export * from './actorInput';\nexport * from './actorsMap';\nexport * from './addAtlassianTeamRequest';\nexport * from './addField';\nexport * from './addGroup';\nexport * from './addNotificationsDetails';\nexport * from './addSecuritySchemeLevelsRequest';\nexport * from './announcementBannerConfiguration';\nexport * from './announcementBannerConfigurationUpdate';\nexport * from './application';\nexport * from './applicationProperty';\nexport * from './applicationRole';\nexport * from './associatedItem';\nexport * from './associateFieldConfigurationsWithIssueTypesRequest';\nexport * from './attachment';\nexport * from './attachmentArchiveEntry';\nexport * from './attachmentArchiveImpl';\nexport * from './attachmentArchiveItemReadable';\nexport * from './attachmentArchiveMetadataReadable';\nexport * from './attachmentMetadata';\nexport * from './attachmentSettings';\nexport * from './auditRecord';\nexport * from './auditRecords';\nexport * from './autoCompleteSuggestion';\nexport * from './autoCompleteSuggestions';\nexport * from './availableDashboardGadget';\nexport * from './availableDashboardGadgetsResponse';\nexport * from './availableWorkflowConnectRule';\nexport * from './availableWorkflowForgeRule';\nexport * from './availableWorkflowSystemRule';\nexport * from './availableWorkflowTriggers';\nexport * from './availableWorkflowTriggerTypes';\nexport * from './avatar';\nexport * from './avatars';\nexport * from './avatarUrls';\nexport * from './avatarWithDetails';\nexport * from './bulkChangelog';\nexport * from './bulkChangelogRequest';\nexport * from './bulkChangeOwnerDetails';\nexport * from './bulkContextualConfiguration';\nexport * from './bulkCustomFieldOptionCreateRequest';\nexport * from './bulkCustomFieldOptionUpdateRequest';\nexport * from './bulkEditShareableEntity';\nexport * from './bulkIssue';\nexport * from './bulkIssueIsWatching';\nexport * from './bulkIssuePropertyUpdateRequest';\nexport * from './bulkOperationErrorResult';\nexport * from './bulkPermissionGrants';\nexport * from './bulkPermissionsRequest';\nexport * from './bulkProjectPermissionGrants';\nexport * from './bulkProjectPermissions';\nexport * from './changeDetails';\nexport * from './changedValue';\nexport * from './changedWorklog';\nexport * from './changedWorklogs';\nexport * from './changelog';\nexport * from './columnItem';\nexport * from './comment';\nexport * from './component';\nexport * from './componentIssuesCount';\nexport * from './componentWithIssueCount';\nexport * from './conditionGroupConfiguration';\nexport * from './conditionGroupUpdate';\nexport * from './configuration';\nexport * from './configurationsListParameters';\nexport * from './connectCustomFieldValue';\nexport * from './connectCustomFieldValues';\nexport * from './connectModule';\nexport * from './connectModules';\nexport * from './connectWorkflowTransitionRule';\nexport * from './containerForProjectFeatures';\nexport * from './containerForRegisteredWebhooks';\nexport * from './containerForWebhookIDs';\nexport * from './containerOfWorkflowSchemeAssociations';\nexport * from './contextForProjectAndIssueType';\nexport * from './contextualConfiguration';\nexport * from './convertedJQLQueries';\nexport * from './createCrossProjectReleaseRequest';\nexport * from './createCustomFieldContext';\nexport * from './createCustomFieldRequest';\nexport * from './createDateFieldRequest';\nexport * from './createdIssue';\nexport * from './createdIssues';\nexport * from './createExclusionRulesRequest';\nexport * from './createIssueSecuritySchemeDetails';\nexport * from './createIssueSourceRequest';\nexport * from './createNotificationSchemeDetails';\nexport * from './createPermissionHolderRequest';\nexport * from './createPermissionRequest';\nexport * from './createPlanOnlyTeamRequest';\nexport * from './createPlanRequest';\nexport * from './createPriorityDetails';\nexport * from './createPrioritySchemeDetails';\nexport * from './createProjectDetails';\nexport * from './createResolutionDetails';\nexport * from './createSchedulingRequest';\nexport * from './createUiModificationDetails';\nexport * from './createUpdateRoleRequest';\nexport * from './createWorkflowCondition';\nexport * from './createWorkflowDetails';\nexport * from './createWorkflowStatusDetails';\nexport * from './createWorkflowTransitionDetails';\nexport * from './createWorkflowTransitionRule';\nexport * from './createWorkflowTransitionRulesDetails';\nexport * from './createWorkflowTransitionScreenDetails';\nexport * from './customContextVariable';\nexport * from './customFieldConfigurations';\nexport * from './customFieldContext';\nexport * from './customFieldContextDefaultValue';\nexport * from './customFieldContextDefaultValueUpdate';\nexport * from './customFieldContextOption';\nexport * from './customFieldContextProjectMapping';\nexport * from './customFieldContextUpdateDetails';\nexport * from './customFieldCreatedContextOptionsList';\nexport * from './customFieldDefinitionJson';\nexport * from './customFieldOption';\nexport * from './customFieldOptionCreate';\nexport * from './customFieldOptionUpdate';\nexport * from './customFieldReplacement';\nexport * from './customFieldUpdatedContextOptionsList';\nexport * from './customFieldValueUpdate';\nexport * from './customFieldValueUpdateDetails';\nexport * from './dashboard';\nexport * from './dashboardDetails';\nexport * from './dashboardGadget';\nexport * from './dashboardGadgetPosition';\nexport * from './dashboardGadgetResponse';\nexport * from './dashboardGadgetSettings';\nexport * from './dashboardGadgetUpdateRequest';\nexport * from './dashboardUser';\nexport * from './dataClassificationLevels';\nexport * from './dataClassificationTag';\nexport * from './dateRangeFilter';\nexport * from './defaultLevelValue';\nexport * from './defaultShareScope';\nexport * from './defaultWorkflow';\nexport * from './documentVersion';\nexport * from './duplicatePlanRequest';\nexport * from './enhancedSearchRequest';\nexport * from './entityProperty';\nexport * from './entityPropertyDetails';\nexport * from './error';\nexport * from './errorCollection';\nexport * from './errors';\nexport * from './evaluatedJiraExpression';\nexport * from './eventNotification';\nexport * from './exportArchivedIssuesTaskProgress';\nexport * from './exportArchivedIssuesTaskProgress';\nexport * from './failedWebhook';\nexport * from './failedWebhooks';\nexport * from './field';\nexport * from './fieldAssociationsRequest';\nexport * from './fieldConfiguration';\nexport * from './fieldConfigurationDetails';\nexport * from './fieldConfigurationIssueTypeItem';\nexport * from './fieldConfigurationItem';\nexport * from './fieldConfigurationItemsDetails';\nexport * from './fieldConfigurationScheme';\nexport * from './fieldConfigurationSchemeProjectAssociation';\nexport * from './fieldConfigurationSchemeProjects';\nexport * from './fieldConfigurationToIssueTypeMapping';\nexport * from './fieldCreateMetadata';\nexport * from './fieldDetails';\nexport * from './fieldLastUsed';\nexport * from './fieldMetadata';\nexport * from './fieldReferenceData';\nexport * from './fields';\nexport * from './filter';\nexport * from './filterDetails';\nexport * from './filterSubscription';\nexport * from './filterSubscriptionsList';\nexport * from './fixVersion';\nexport * from './foundGroup';\nexport * from './foundGroups';\nexport * from './foundUsers';\nexport * from './foundUsersAndGroups';\nexport * from './functionReferenceData';\nexport * from './getAtlassianTeamResponse';\nexport * from './getCrossProjectReleaseResponse';\nexport * from './getCustomFieldResponse';\nexport * from './getDateFieldResponse';\nexport * from './getExclusionRulesResponse';\nexport * from './getIssueSourceResponse';\nexport * from './getPermissionHolderResponse';\nexport * from './getPermissionResponse';\nexport * from './getPlanOnlyTeamResponse';\nexport * from './getPlanResponseForPage';\nexport * from './getSchedulingResponse';\nexport * from './getTeamResponseForPage';\nexport * from './globalScope';\nexport * from './group';\nexport * from './groupDetails';\nexport * from './groupLabel';\nexport * from './groupName';\nexport * from './hierarchy';\nexport * from './hierarchyLevel';\nexport * from './historyMetadata';\nexport * from './historyMetadataParticipant';\nexport * from './icon';\nexport * from './id';\nexport * from './idOrKey';\nexport * from './idSearchRequest';\nexport * from './idSearchResults';\nexport * from './includedFields';\nexport * from './issue';\nexport * from './issueArchivalSync';\nexport * from './issueChangeLog';\nexport * from './issueChangelogIds';\nexport * from './issueCommentListRequest';\nexport * from './issueContextVariable';\nexport * from './issueCreateMetadata';\nexport * from './issueEntityProperties';\nexport * from './issueEntityPropertiesForMultiUpdate';\nexport * from './issueError';\nexport * from './issueEvent';\nexport * from './issueFieldOption';\nexport * from './issueFieldOptionConfiguration';\nexport * from './issueFieldOptionCreate';\nexport * from './issueFieldOptionScope';\nexport * from './issueFilterForBulkPropertyDelete';\nexport * from './issueFilterForBulkPropertySet';\nexport * from './issueLimitReport';\nexport * from './issueLimitReportRequest';\nexport * from './issueLink';\nexport * from './issueLinkType';\nexport * from './issueLinkTypes';\nexport * from './issueList';\nexport * from './issueMatches';\nexport * from './issueMatchesForJQL';\nexport * from './issuePickerSuggestions';\nexport * from './issuePickerSuggestionsIssueType';\nexport * from './issuesAndJQLQueries';\nexport * from './issueSecurityLevelMember';\nexport * from './issueSecuritySchemeToProjectMapping';\nexport * from './issuesJqlMetaData';\nexport * from './issuesMeta';\nexport * from './issuesUpdate';\nexport * from './issueTransition';\nexport * from './issueTypeCreate';\nexport * from './issueTypeDetails';\nexport * from './issueTypeIds';\nexport * from './issueTypeIdsToRemove';\nexport * from './issueTypeInfo';\nexport * from './issueTypeIssueCreateMetadata';\nexport * from './issueTypeScheme';\nexport * from './issueTypeSchemeDetails';\nexport * from './issueTypeSchemeID';\nexport * from './issueTypeSchemeMapping';\nexport * from './issueTypeSchemeProjectAssociation';\nexport * from './issueTypeSchemeProjects';\nexport * from './issueTypeSchemeUpdateDetails';\nexport * from './issueTypeScreenScheme';\nexport * from './issueTypeScreenSchemeDetails';\nexport * from './issueTypeScreenSchemeId';\nexport * from './issueTypeScreenSchemeItem';\nexport * from './issueTypeScreenSchemeMapping';\nexport * from './issueTypeScreenSchemeMappingDetails';\nexport * from './issueTypeScreenSchemeProjectAssociation';\nexport * from './issueTypeScreenSchemesProjects';\nexport * from './issueTypeScreenSchemeUpdateDetails';\nexport * from './issueTypesWorkflowMapping';\nexport * from './issueTypeToContextMapping';\nexport * from './issueTypeUpdate';\nexport * from './issueTypeWithStatus';\nexport * from './issueTypeWorkflowMapping';\nexport * from './issueUpdateDetails';\nexport * from './issueUpdateMetadata';\nexport * from './jexpEvaluateCtxIssues';\nexport * from './jexpEvaluateCtxJqlIssues';\nexport * from './jExpEvaluateIssuesJqlMetaData';\nexport * from './jExpEvaluateIssuesMeta';\nexport * from './jExpEvaluateMetaData';\nexport * from './jexpIssues';\nexport * from './jexpJqlIssues';\nexport * from './jiraExpressionAnalysis';\nexport * from './jiraExpressionComplexity';\nexport * from './jiraExpressionEvalContext';\nexport * from './jiraExpressionEvalRequest';\nexport * from './jiraExpressionEvaluateContext';\nexport * from './jiraExpressionEvaluationMetaData';\nexport * from './jiraExpressionEvalUsingEnhancedSearchRequest';\nexport * from './jiraExpressionForAnalysis';\nexport * from './jiraExpressionResult';\nexport * from './jiraExpressionsAnalysis';\nexport * from './jiraExpressionsComplexity';\nexport * from './jiraExpressionsComplexityValue';\nexport * from './jiraExpressionValidationError';\nexport * from './jiraStatus';\nexport * from './jiraWorkflow';\nexport * from './jiraWorkflowStatus';\nexport * from './jQLCount';\nexport * from './jQLCountRequest';\nexport * from './jqlFunctionPrecomputation';\nexport * from './jqlFunctionPrecomputationGetByIdRequest';\nexport * from './jqlFunctionPrecomputationGetByIdResponse';\nexport * from './jqlFunctionPrecomputationUpdate';\nexport * from './jqlFunctionPrecomputationUpdateRequest';\nexport * from './jQLPersonalDataMigrationRequest';\nexport * from './jqlQueriesToParse';\nexport * from './jqlQueriesToSanitize';\nexport * from './jqlQuery';\nexport * from './jqlQueryClause';\nexport * from './jqlQueryField';\nexport * from './jqlQueryFieldEntityProperty';\nexport * from './jqlQueryOrderByClause';\nexport * from './jqlQueryOrderByClauseElement';\nexport * from './jqlQueryToSanitize';\nexport * from './jQLQueryWithUnknownUsers';\nexport * from './jQLReferenceData';\nexport * from './jsonContextVariable';\nexport * from './jsonNode';\nexport * from './jsonType';\nexport * from './license';\nexport * from './licensedApplication';\nexport * from './licenseMetric';\nexport * from './linkedIssue';\nexport * from './linkGroup';\nexport * from './linkIssueRequestJson';\nexport * from './listWrapperCallbackApplicationRole';\nexport * from './listWrapperCallbackGroupName';\nexport * from './locale';\nexport * from './mappingsByIssueTypeOverride';\nexport * from './mappingsByWorkflow';\nexport * from './moveField';\nexport * from './multiIssueEntityProperties';\nexport * from './multipleCustomFieldValuesUpdate';\nexport * from './multipleCustomFieldValuesUpdateDetails';\nexport * from './nestedResponse';\nexport * from './newUserDetails';\nexport * from './notification';\nexport * from './notificationEvent';\nexport * from './notificationRecipients';\nexport * from './notificationRecipientsRestrictions';\nexport * from './notificationScheme';\nexport * from './notificationSchemeAndProjectMapping';\nexport * from './notificationSchemeAndProjectMappingPage';\nexport * from './notificationSchemeEvent';\nexport * from './notificationSchemeEventDetails';\nexport * from './notificationSchemeEventTypeId';\nexport * from './notificationSchemeId';\nexport * from './notificationSchemeNotificationDetails';\nexport * from './oldToNewSecurityLevelMappings';\nexport * from './operationMessage';\nexport * from './operations';\nexport * from './orderOfCustomFieldOptions';\nexport * from './orderOfIssueTypes';\nexport * from './pageBulkContextualConfiguration';\nexport * from './pageChangelog';\nexport * from './pageComment';\nexport * from './pageComponentWithIssueCount';\nexport * from './pageContextForProjectAndIssueType';\nexport * from './pageContextualConfiguration';\nexport * from './pageCustomFieldContext';\nexport * from './pageCustomFieldContextDefaultValue';\nexport * from './pageCustomFieldContextOption';\nexport * from './pageCustomFieldContextProjectMapping';\nexport * from './pageDashboard';\nexport * from './pagedListUserDetailsApplicationUser';\nexport * from './pageField';\nexport * from './pageFieldConfiguration';\nexport * from './pageFieldConfigurationIssueTypeItem';\nexport * from './pageFieldConfigurationItem';\nexport * from './pageFieldConfigurationScheme';\nexport * from './pageFieldConfigurationSchemeProjects';\nexport * from './pageFilterDetails';\nexport * from './pageGroupDetails';\nexport * from './pageIssueFieldOption';\nexport * from './pageIssueSecurityLevelMember';\nexport * from './pageIssueSecuritySchemeToProjectMapping';\nexport * from './pageIssueTypeScheme';\nexport * from './pageIssueTypeSchemeMapping';\nexport * from './pageIssueTypeSchemeProjects';\nexport * from './pageIssueTypeScreenScheme';\nexport * from './pageIssueTypeScreenSchemeItem';\nexport * from './pageIssueTypeScreenSchemesProjects';\nexport * from './pageIssueTypeToContextMapping';\nexport * from './pageJqlFunctionPrecomputation';\nexport * from './pageNotificationScheme';\nexport * from './pageOfChangelogs';\nexport * from './pageOfComments';\nexport * from './pageOfCreateMetaIssueTypes';\nexport * from './pageOfCreateMetaIssueTypeWithField';\nexport * from './pageOfDashboards';\nexport * from './pageOfStatuses';\nexport * from './pageOfWorklogs';\nexport * from './pagePriority';\nexport * from './pageProject';\nexport * from './pageProjectDetails';\nexport * from './pageResolution';\nexport * from './pageScreen';\nexport * from './pageScreenScheme';\nexport * from './pageScreenWithTab';\nexport * from './pageSecurityLevel';\nexport * from './pageSecurityLevelMember';\nexport * from './pageSecuritySchemeWithProjects';\nexport * from './pageString';\nexport * from './pageUiModificationDetails';\nexport * from './pageUser';\nexport * from './pageUserDetails';\nexport * from './pageUserKey';\nexport * from './pageVersion';\nexport * from './pageWebhook';\nexport * from './pageWithCursorGetPlanResponseForPage';\nexport * from './pageWithCursorGetTeamResponseForPage';\nexport * from './pageWorkflow';\nexport * from './pageWorkflowScheme';\nexport * from './pageWorkflowTransitionRules';\nexport * from './parsedJqlQueries';\nexport * from './parsedJqlQuery';\nexport * from './permissionDetails';\nexport * from './permissionGrant';\nexport * from './permissionGrants';\nexport * from './permissionHolder';\nexport * from './permissions';\nexport * from './permissionScheme';\nexport * from './permissionSchemes';\nexport * from './permissionsKeys';\nexport * from './permittedProjects';\nexport * from './plan';\nexport * from './priority';\nexport * from './priorityId';\nexport * from './priorityMapping';\nexport * from './prioritySchemeChangesWithoutMappings';\nexport * from './prioritySchemeId';\nexport * from './prioritySchemeWithPaginatedPrioritiesAndProjects';\nexport * from './priorityWithSequence';\nexport * from './project';\nexport * from './projectAndIssueTypePair';\nexport * from './projectAvatars';\nexport * from './projectCategory';\nexport * from './projectComponent';\nexport * from './projectCustomTemplateCreateRequest';\nexport * from './projectDataPolicies';\nexport * from './projectDataPolicy';\nexport * from './projectDetails';\nexport * from './projectEmailAddress';\nexport * from './projectFeature';\nexport * from './projectFeatureToggleRequest';\nexport * from './projectId';\nexport * from './projectIdentifier';\nexport * from './projectIdentifiers';\nexport * from './projectIds';\nexport * from './projectInsight';\nexport * from './projectIssueCreateMetadata';\nexport * from './projectIssueSecurityLevels';\nexport * from './projectIssueTypeHierarchy';\nexport * from './projectIssueTypeMapping';\nexport * from './projectIssueTypeMappings';\nexport * from './projectIssueTypes';\nexport * from './projectIssueTypesHierarchyLevel';\nexport * from './projectLandingPageInfo';\nexport * from './projectPermissions';\nexport * from './projectRole';\nexport * from './projectRoleActorsUpdate';\nexport * from './projectRoleDetails';\nexport * from './projectRoleGroup';\nexport * from './projectRoleUser';\nexport * from './projectScope';\nexport * from './projectType';\nexport * from './projectUsage';\nexport * from './projectUsagePage';\nexport * from './projectWithDataPolicy';\nexport * from './propertyKey';\nexport * from './propertyKeys';\nexport * from './publishedWorkflowId';\nexport * from './registeredWebhook';\nexport * from './remoteIssueLink';\nexport * from './remoteIssueLinkIdentifies';\nexport * from './remoteIssueLinkRequest';\nexport * from './remoteObject';\nexport * from './removeOptionFromIssuesResult';\nexport * from './reorderIssuePriorities';\nexport * from './reorderIssueResolutionsRequest';\nexport * from './requiredMappingByIssueType';\nexport * from './requiredMappingByWorkflows';\nexport * from './resolution';\nexport * from './resolutionId';\nexport * from './restrictedPermission';\nexport * from './richText';\nexport * from './roleActor';\nexport * from './ruleConfiguration';\nexport * from './sanitizedJqlQueries';\nexport * from './sanitizedJqlQuery';\nexport * from './scope';\nexport * from './screen';\nexport * from './screenableField';\nexport * from './screenableTab';\nexport * from './screenDetails';\nexport * from './screenScheme';\nexport * from './screenSchemeDetails';\nexport * from './screenSchemeId';\nexport * from './screenTypes';\nexport * from './screenWithTab';\nexport * from './searchAndReconcileResults';\nexport * from './searchAutoComplete';\nexport * from './searchRequest';\nexport * from './searchResults';\nexport * from './securityLevel';\nexport * from './securityLevelMember';\nexport * from './securityScheme';\nexport * from './securitySchemeId';\nexport * from './securitySchemeLevel';\nexport * from './securitySchemeLevelMember';\nexport * from './securitySchemeMembersRequest';\nexport * from './securitySchemes';\nexport * from './securitySchemeWithProjects';\nexport * from './serverInformation';\nexport * from './serviceRegistry';\nexport * from './serviceRegistryTier';\nexport * from './setDefaultLevelsRequest';\nexport * from './setDefaultPriorityRequest';\nexport * from './setDefaultResolutionRequest';\nexport * from './sharePermission';\nexport * from './sharePermissionInput';\nexport * from './simpleApplicationProperty';\nexport * from './simpleErrorCollection';\nexport * from './simpleLink';\nexport * from './simpleListWrapperApplicationRole';\nexport * from './simpleListWrapperGroupName';\nexport * from './simpleUsage';\nexport * from './status';\nexport * from './statusCategory';\nexport * from './statusCreate';\nexport * from './statusCreateRequest';\nexport * from './statusDetails';\nexport * from './statusesPerWorkflow';\nexport * from './statusLayoutUpdate';\nexport * from './statusMapping';\nexport * from './statusMappingDTO';\nexport * from './statusMetadata';\nexport * from './statusMigration';\nexport * from './statusProjectIssueTypeUsage';\nexport * from './statusProjectIssueTypeUsageDTO';\nexport * from './statusProjectIssueTypeUsagePage';\nexport * from './statusProjectUsage';\nexport * from './statusProjectUsageDTO';\nexport * from './statusProjectUsagePage';\nexport * from './statusReferenceAndPort';\nexport * from './statusScope';\nexport * from './statusUpdate';\nexport * from './statusUpdateRequest';\nexport * from './statusWorkflowUsageDTO';\nexport * from './statusWorkflowUsagePage';\nexport * from './statusWorkflowUsageWorkflow';\nexport * from './suggestedIssue';\nexport * from './suggestedMappingsForPrioritiesRequestBean';\nexport * from './suggestedMappingsForProjectsRequestBean';\nexport * from './suggestedMappingsRequest';\nexport * from './systemAvatars';\nexport * from './tabMetadata';\nexport * from './taskProgressNode';\nexport * from './taskProgressObject';\nexport * from './taskProgressRemoveOptionFromIssuesResult';\nexport * from './timeTrackingConfiguration';\nexport * from './timeTrackingDetails';\nexport * from './timeTrackingProvider';\nexport * from './transition';\nexport * from './transitions';\nexport * from './transitionScreenDetails';\nexport * from './transitionUpdateDTO';\nexport * from './uiModificationContextDetails';\nexport * from './uiModificationDetails';\nexport * from './uiModificationIdentifiers';\nexport * from './unrestrictedUserEmail';\nexport * from './updateCustomFieldDetails';\nexport * from './updateDefaultProjectClassification';\nexport * from './updatedProjectCategory';\nexport * from './updateFieldConfigurationSchemeDetails';\nexport * from './updateIssueSecurityLevelDetails';\nexport * from './updateIssueSecuritySchemeRequest';\nexport * from './updateNotificationSchemeDetails';\nexport * from './updatePrioritiesInSchemeRequest';\nexport * from './updatePriorityDetails';\nexport * from './updatePrioritySchemeRequest';\nexport * from './updatePrioritySchemeResponse';\nexport * from './updateProjectDetails';\nexport * from './updateProjectsInSchemeRequest';\nexport * from './updateResolutionDetails';\nexport * from './updateScreenDetails';\nexport * from './updateScreenSchemeDetails';\nexport * from './updateScreenTypes';\nexport * from './updateUiModificationDetails';\nexport * from './updateUserToGroup';\nexport * from './user';\nexport * from './userAvatarUrls';\nexport * from './userContextVariable';\nexport * from './userDetails';\nexport * from './userKey';\nexport * from './userList';\nexport * from './userMigration';\nexport * from './userNavProperty';\nexport * from './userPickerUser';\nexport * from './validationOptionsForCreate';\nexport * from './validationOptionsForUpdate';\nexport * from './version';\nexport * from './versionApprover';\nexport * from './versionIssueCounts';\nexport * from './versionIssuesStatus';\nexport * from './versionMove';\nexport * from './versionRelatedWork';\nexport * from './versionUnresolvedIssuesCount';\nexport * from './versionUsageInCustomField';\nexport * from './visibility';\nexport * from './votes';\nexport * from './warningCollection';\nexport * from './watchers';\nexport * from './webhook';\nexport * from './webhookDetails';\nexport * from './webhookRegistrationDetails';\nexport * from './webhooksExpirationDate';\nexport * from './workflow';\nexport * from './workflowAssociationStatusMapping';\nexport * from './workflowCapabilities';\nexport * from './workflowCondition';\nexport * from './workflowCreate';\nexport * from './workflowCreateRequest';\nexport * from './workflowElementReference';\nexport * from './workflowId';\nexport * from './workflowLayout';\nexport * from './workflowMetadataAndIssueTypeRestModel';\nexport * from './workflowMetadataRestModel';\nexport * from './workflowOperations';\nexport * from './workflowProjectIssueTypeUsage';\nexport * from './workflowProjectIssueTypeUsageDTO';\nexport * from './workflowProjectIssueTypeUsagePage';\nexport * from './workflowProjectUsageDTO';\nexport * from './workflowRead';\nexport * from './workflowReferenceStatus';\nexport * from './workflowRuleConfiguration';\nexport * from './workflowRules';\nexport * from './workflowRulesSearch';\nexport * from './workflowRulesSearchDetails';\nexport * from './workflowScheme';\nexport * from './workflowSchemeAssociation';\nexport * from './workflowSchemeAssociations';\nexport * from './workflowSchemeIdName';\nexport * from './workflowSchemeProjectAssociation';\nexport * from './workflowSchemeProjectUsage';\nexport * from './workflowSchemeReadRequest';\nexport * from './workflowSchemeReadResponse';\nexport * from './workflowSchemeUpdateRequest';\nexport * from './workflowSchemeUpdateRequiredMappingsRequest';\nexport * from './workflowSchemeUpdateRequiredMappingsResponse';\nexport * from './workflowSchemeUsage';\nexport * from './workflowSchemeUsageDTO';\nexport * from './workflowSchemeUsagePage';\nexport * from './workflowScope';\nexport * from './workflowSearchResponse';\nexport * from './workflowStatus';\nexport * from './workflowStatusAndPort';\nexport * from './workflowStatusLayout';\nexport * from './workflowStatusProperties';\nexport * from './workflowStatusUpdate';\nexport * from './workflowsWithTransitionRulesDetails';\nexport * from './workflowTransition';\nexport * from './workflowTransitionProperty';\nexport * from './workflowTransitionRule';\nexport * from './workflowTransitionRules';\nexport * from './workflowTransitionRulesDetails';\nexport * from './workflowTransitionRulesUpdate';\nexport * from './workflowTransitionRulesUpdateErrorDetails';\nexport * from './workflowTransitionRulesUpdateErrors';\nexport * from './workflowTransitions';\nexport * from './workflowTrigger';\nexport * from './workflowUpdate';\nexport * from './workflowUpdateRequest';\nexport * from './workflowValidationError';\nexport * from './workflowValidationErrorList';\nexport * from './worklog';\nexport * from './worklogIdsRequest';\nexport * from './worklogsMoveRequest';\nexport * from './workspaceDataPolicy';\n","export * from './addActorUsers';\nexport * from './addAtlassianTeam';\nexport * from './addAttachment';\nexport * from './addComment';\nexport * from './addFieldToDefaultScreen';\nexport * from './addGadget';\nexport * from './addIssueTypesToContext';\nexport * from './addIssueTypesToIssueTypeScheme';\nexport * from './addNotifications';\nexport * from './addProjectRoleActorsToRole';\nexport * from './addScreenTab';\nexport * from './addScreenTabField';\nexport * from './addSecurityLevel';\nexport * from './addSecurityLevelMembers';\nexport * from './addSharePermission';\nexport * from './addUserToGroup';\nexport * from './addVote';\nexport * from './addWatcher';\nexport * from './addWorklog';\nexport * from './analyseExpression';\nexport * from './appendMappingsForIssueTypeScreenScheme';\nexport * from './archiveIssues';\nexport * from './archiveIssuesAsync';\nexport * from './archivePlan';\nexport * from './archiveProject';\nexport * from './assignFieldConfigurationSchemeToProject';\nexport * from './assignIssue';\nexport * from './assignIssueTypeSchemeToProject';\nexport * from './assignIssueTypeScreenSchemeToProject';\nexport * from './assignPermissionScheme';\nexport * from './assignProjectsToCustomFieldContext';\nexport * from './assignSchemeToProject';\nexport * from './associateSchemesToProjects';\nexport * from './bulkDeleteIssueProperty';\nexport * from './bulkDeleteWorklogs';\nexport * from './bulkEditDashboards';\nexport * from './bulkFetchIssues';\nexport * from './bulkGetGroups';\nexport * from './bulkGetUsers';\nexport * from './bulkGetUsersMigration';\nexport * from './bulkMoveWorklogs';\nexport * from './bulkSetIssuePropertiesByIssue';\nexport * from './bulkSetIssueProperty';\nexport * from './bulkSetIssuesProperties';\nexport * from './cancelTask';\nexport * from './changeFilterOwner';\nexport * from './copyDashboard';\nexport * from './countIssues';\nexport * from './createAssociations';\nexport * from './createComponent';\nexport * from './createCustomField';\nexport * from './createCustomFieldContext';\nexport * from './createCustomFieldOption';\nexport * from './createDashboard';\nexport * from './createFieldConfiguration';\nexport * from './createFieldConfigurationScheme';\nexport * from './createFilter';\nexport * from './createGroup';\nexport * from './createIssue';\nexport * from './createIssueFieldOption';\nexport * from './createIssueLinkType';\nexport * from './createIssues';\nexport * from './createIssueSecurityScheme';\nexport * from './createIssueType';\nexport * from './createIssueTypeAvatar';\nexport * from './createIssueTypeScheme';\nexport * from './createIssueTypeScreenScheme';\nexport * from './createNotificationScheme';\nexport * from './createOrUpdateRemoteIssueLink';\nexport * from './createPermissionGrant';\nexport * from './createPermissionScheme';\nexport * from './createPlan';\nexport * from './createPlanOnlyTeam';\nexport * from './createPriority';\nexport * from './createPriorityScheme';\nexport * from './createProject';\nexport * from './createProjectAvatar';\nexport * from './createProjectCategory';\nexport * from './createProjectRole';\nexport * from './createProjectWithCustomTemplate';\nexport * from './createRelatedWork';\nexport * from './createResolution';\nexport * from './createScreen';\nexport * from './createScreenScheme';\nexport * from './createStatuses';\nexport * from './createUiModification';\nexport * from './createUser';\nexport * from './createVersion';\nexport * from './createWorkflow';\nexport * from './createWorkflows';\nexport * from './createWorkflowScheme';\nexport * from './createWorkflowSchemeDraftFromParent';\nexport * from './createWorkflowTransitionProperty';\nexport * from './deleteActor';\nexport * from './deleteAddonProperty';\nexport * from './deleteAndReplaceVersion';\nexport * from './deleteAppProperty';\nexport * from './deleteAvatar';\nexport * from './deleteComment';\nexport * from './deleteCommentProperty';\nexport * from './deleteComponent';\nexport * from './deleteCustomField';\nexport * from './deleteCustomFieldContext';\nexport * from './deleteCustomFieldOption';\nexport * from './deleteDashboard';\nexport * from './deleteDashboardItemProperty';\nexport * from './deleteDefaultWorkflow';\nexport * from './deleteDraftDefaultWorkflow';\nexport * from './deleteDraftWorkflowMapping';\nexport * from './deleteFavouriteForFilter';\nexport * from './deleteFieldConfiguration';\nexport * from './deleteFieldConfigurationScheme';\nexport * from './deleteFilter';\nexport * from './deleteInactiveWorkflow';\nexport * from './deleteIssue';\nexport * from './deleteIssueFieldOption';\nexport * from './deleteIssueLink';\nexport * from './deleteIssueLinkType';\nexport * from './deleteIssueProperty';\nexport * from './deleteIssueType';\nexport * from './deleteIssueTypeProperty';\nexport * from './deleteIssueTypeScheme';\nexport * from './deleteIssueTypeScreenScheme';\nexport * from './deleteNotificationScheme';\nexport * from './deletePermissionScheme';\nexport * from './deletePermissionSchemeEntity';\nexport * from './deletePlanOnlyTeam';\nexport * from './deletePriority';\nexport * from './deletePriorityScheme';\nexport * from './deleteProject';\nexport * from './deleteProjectAsynchronously';\nexport * from './deleteProjectAvatar';\nexport * from './deleteProjectProperty';\nexport * from './deleteProjectRole';\nexport * from './deleteProjectRoleActorsFromRole';\nexport * from './deleteRelatedWork';\nexport * from './deleteRemoteIssueLinkByGlobalId';\nexport * from './deleteRemoteIssueLinkById';\nexport * from './deleteResolution';\nexport * from './deleteScreen';\nexport * from './deleteScreenScheme';\nexport * from './deleteScreenTab';\nexport * from './deleteSecurityScheme';\nexport * from './deleteSharePermission';\nexport * from './deleteStatusesById';\nexport * from './deleteUiModification';\nexport * from './deleteUserProperty';\nexport * from './deleteWebhookById';\nexport * from './deleteWorkflowMapping';\nexport * from './deleteWorkflowScheme';\nexport * from './deleteWorkflowSchemeDraft';\nexport * from './deleteWorkflowSchemeDraftIssueType';\nexport * from './deleteWorkflowSchemeIssueType';\nexport * from './deleteWorkflowTransitionProperty';\nexport * from './deleteWorkflowTransitionRuleConfigurations';\nexport * from './deleteWorklog';\nexport * from './deleteWorklogProperty';\nexport * from './doTransition';\nexport * from './duplicatePlan';\nexport * from './editIssue';\nexport * from './evaluateJiraExpression';\nexport * from './evaluateJiraExpressionUsingEnhancedSearch';\nexport * from './expandAttachmentForHumans';\nexport * from './expandAttachmentForMachines';\nexport * from './exportArchivedIssues';\nexport * from './findAssignableUsers';\nexport * from './findBulkAssignableUsers';\nexport * from './findComponentsForProjects';\nexport * from './findGroups';\nexport * from './findUserKeysByQuery';\nexport * from './findUsers';\nexport * from './findUsersAndGroups';\nexport * from './findUsersByQuery';\nexport * from './findUsersForPicker';\nexport * from './findUsersWithAllPermissions';\nexport * from './findUsersWithBrowsePermission';\nexport * from './fullyUpdateProjectRole';\nexport * from './getAccessibleProjectTypeByKey';\nexport * from './getAddonProperties';\nexport * from './getAddonProperty';\nexport * from './getAllDashboards';\nexport * from './getAllFieldConfigurations';\nexport * from './getAllFieldConfigurationSchemes';\nexport * from './getAllGadgets';\nexport * from './getAllIssueFieldOptions';\nexport * from './getAllIssueTypeSchemes';\nexport * from './getAllLabels';\nexport * from './getAllPermissionSchemes';\nexport * from './getAllProjectAvatars';\nexport * from './getAllScreenTabFields';\nexport * from './getAllScreenTabs';\nexport * from './getAllStatuses';\nexport * from './getAllSystemAvatars';\nexport * from './getAllUserDataClassificationLevels';\nexport * from './getAllUsers';\nexport * from './getAllUsersDefault';\nexport * from './getAllWorkflowSchemes';\nexport * from './getAlternativeIssueTypes';\nexport * from './getApplicationProperty';\nexport * from './getApplicationRole';\nexport * from './getAssignedPermissionScheme';\nexport * from './getAtlassianTeam';\nexport * from './getAttachment';\nexport * from './getAttachmentContent';\nexport * from './getAttachmentThumbnail';\nexport * from './getAuditRecords';\nexport * from './getAutoCompletePost';\nexport * from './getAvailablePrioritiesByPriorityScheme';\nexport * from './getAvailableScreenFields';\nexport * from './getAvatarImageByID';\nexport * from './getAvatarImageByOwner';\nexport * from './getAvatarImageByType';\nexport * from './getAvatars';\nexport * from './getBulkChangelogs';\nexport * from './getBulkPermissions';\nexport * from './getBulkScreenTabs';\nexport * from './getChangeLogs';\nexport * from './getChangeLogsByIds';\nexport * from './getColumns';\nexport * from './getComment';\nexport * from './getCommentProperty';\nexport * from './getCommentPropertyKeys';\nexport * from './getComments';\nexport * from './getCommentsByIds';\nexport * from './getComponent';\nexport * from './getComponentRelatedIssues';\nexport * from './getContextsForField';\nexport * from './getCreateIssueMeta';\nexport * from './getCreateIssueMetaIssueTypeId';\nexport * from './getCreateIssueMetaIssueTypes';\nexport * from './getCurrentUser';\nexport * from './getCustomFieldConfiguration';\nexport * from './getCustomFieldContextsForProjectsAndIssueTypes';\nexport * from './getCustomFieldOption';\nexport * from './getCustomFieldsConfigurations';\nexport * from './getDashboard';\nexport * from './getDashboardItemProperty';\nexport * from './getDashboardItemPropertyKeys';\nexport * from './getDashboardsPaginated';\nexport * from './getDefaultProjectClassification';\nexport * from './getDefaultValues';\nexport * from './getDefaultWorkflow';\nexport * from './getDraftDefaultWorkflow';\nexport * from './getDraftWorkflow';\nexport * from './getDynamicWebhooksForApp';\nexport * from './getEditIssueMeta';\nexport * from './getFailedWebhooks';\nexport * from './getFavouriteFilters';\nexport * from './getFeaturesForProject';\nexport * from './getFieldAutoCompleteForQueryString';\nexport * from './getFieldConfigurationItems';\nexport * from './getFieldConfigurationSchemeMappings';\nexport * from './getFieldConfigurationSchemeProjectMapping';\nexport * from './getFieldsPaginated';\nexport * from './getFilter';\nexport * from './getFiltersPaginated';\nexport * from './getHierarchy';\nexport * from './getIdsOfWorklogsDeletedSince';\nexport * from './getIdsOfWorklogsModifiedSince';\nexport * from './getIssue';\nexport * from './getIssueFieldOption';\nexport * from './getIssueLimitReport';\nexport * from './getIssueLink';\nexport * from './getIssueLinkType';\nexport * from './getIssuePickerResource';\nexport * from './getIssueProperty';\nexport * from './getIssuePropertyKeys';\nexport * from './getIssueSecurityLevel';\nexport * from './getIssueSecurityLevelMembers';\nexport * from './getIssueSecurityScheme';\nexport * from './getIssueType';\nexport * from './getIssueTypeMappingsForContexts';\nexport * from './getIssueTypeProperty';\nexport * from './getIssueTypePropertyKeys';\nexport * from './getIssueTypeSchemeForProjects';\nexport * from './getIssueTypeSchemesMapping';\nexport * from './getIssueTypeScreenSchemeMappings';\nexport * from './getIssueTypeScreenSchemeProjectAssociations';\nexport * from './getIssueTypeScreenSchemes';\nexport * from './getIssueTypesForProject';\nexport * from './getIssueWatchers';\nexport * from './getIssueWorklog';\nexport * from './getIsWatchingIssueBulk';\nexport * from './getMyFilters';\nexport * from './getMyPermissions';\nexport * from './getNotificationScheme';\nexport * from './getNotificationSchemeForProject';\nexport * from './getNotificationSchemes';\nexport * from './getNotificationSchemeToProjectMappings';\nexport * from './getOptionsForContext';\nexport * from './getPermissionScheme';\nexport * from './getPermissionSchemeGrant';\nexport * from './getPermissionSchemeGrants';\nexport * from './getPermittedProjects';\nexport * from './getPlan';\nexport * from './getPlanOnlyTeam';\nexport * from './getPlans';\nexport * from './getPolicies';\nexport * from './getPrecomputations';\nexport * from './getPrecomputationsByID';\nexport * from './getPreference';\nexport * from './getPrioritiesByPriorityScheme';\nexport * from './getPriority';\nexport * from './getPrioritySchemes';\nexport * from './getProject';\nexport * from './getProjectCategoryById';\nexport * from './getProjectComponents';\nexport * from './getProjectComponentsPaginated';\nexport * from './getProjectContextMapping';\nexport * from './getProjectEmail';\nexport * from './getProjectIssueSecurityScheme';\nexport * from './getProjectIssueTypeUsagesForStatus';\nexport * from './getProjectProperty';\nexport * from './getProjectPropertyKeys';\nexport * from './getProjectRole';\nexport * from './getProjectRoleActorsForRole';\nexport * from './getProjectRoleById';\nexport * from './getProjectRoleDetails';\nexport * from './getProjectRoles';\nexport * from './getProjectsByPriorityScheme';\nexport * from './getProjectsForIssueTypeScreenScheme';\nexport * from './getProjectTypeByKey';\nexport * from './getProjectUsagesForStatus';\nexport * from './getProjectUsagesForWorkflow';\nexport * from './getProjectUsagesForWorkflowScheme';\nexport * from './getProjectVersions';\nexport * from './getProjectVersionsPaginated';\nexport * from './getRecent';\nexport * from './getRelatedWork';\nexport * from './getRemoteIssueLinkById';\nexport * from './getRemoteIssueLinks';\nexport * from './getResolution';\nexport * from './getScreens';\nexport * from './getScreenSchemes';\nexport * from './getScreensForField';\nexport * from './getSecurityLevelMembers';\nexport * from './getSecurityLevels';\nexport * from './getSecurityLevelsForProject';\nexport * from './getSelectableIssueFieldOptions';\nexport * from './getSharePermission';\nexport * from './getSharePermissions';\nexport * from './getStatus';\nexport * from './getStatusCategory';\nexport * from './getStatusesById';\nexport * from './getTask';\nexport * from './getTeams';\nexport * from './getTransitions';\nexport * from './getTrashedFieldsPaginated';\nexport * from './getUiModifications';\nexport * from './getUser';\nexport * from './getUserDefaultColumns';\nexport * from './getUserEmail';\nexport * from './getUserEmailBulk';\nexport * from './getUserGroups';\nexport * from './getUserNavProperty';\nexport * from './getUserProperty';\nexport * from './getUserPropertyKeys';\nexport * from './getUsersFromGroup';\nexport * from './getValidProjectKey';\nexport * from './getValidProjectName';\nexport * from './getVersion';\nexport * from './getVersionRelatedIssues';\nexport * from './getVersionUnresolvedIssues';\nexport * from './getVisibleIssueFieldOptions';\nexport * from './getVotes';\nexport * from './getWorkflow';\nexport * from './getWorkflowProjectIssueTypeUsages';\nexport * from './getWorkflowScheme';\nexport * from './getWorkflowSchemeDraft';\nexport * from './getWorkflowSchemeDraftIssueType';\nexport * from './getWorkflowSchemeIssueType';\nexport * from './getWorkflowSchemeProjectAssociations';\nexport * from './getWorkflowSchemeUsagesForWorkflow';\nexport * from './getWorkflowsPaginated';\nexport * from './getWorkflowTransitionProperties';\nexport * from './getWorkflowTransitionRuleConfigurations';\nexport * from './getWorkflowUsagesForStatus';\nexport * from './getWorklog';\nexport * from './getWorklogProperty';\nexport * from './getWorklogPropertyKeys';\nexport * from './getWorklogsForIds';\nexport * from './linkIssues';\nexport * from './matchIssues';\nexport * from './mergeVersions';\nexport * from './migrateQueries';\nexport * from './movePriorities';\nexport * from './moveResolutions';\nexport * from './moveScreenTab';\nexport * from './moveScreenTabField';\nexport * from './moveVersion';\nexport * from './notify';\nexport * from './parseJqlQueries';\nexport * from './partialUpdateProjectRole';\nexport * from './publishDraftWorkflowScheme';\nexport * from './putAddonProperty';\nexport * from './putAppProperty';\nexport * from './readWorkflows';\nexport * from './readWorkflowSchemes';\nexport * from './refreshWebhooks';\nexport * from './registerDynamicWebhooks';\nexport * from './registerModules';\nexport * from './removeAssociations';\nexport * from './removeAtlassianTeam';\nexport * from './removeAttachment';\nexport * from './removeCustomFieldContextFromProjects';\nexport * from './removeDefaultProjectClassification';\nexport * from './removeGadget';\nexport * from './removeGroup';\nexport * from './removeIssueTypeFromIssueTypeScheme';\nexport * from './removeIssueTypesFromContext';\nexport * from './removeIssueTypesFromGlobalFieldConfigurationScheme';\nexport * from './removeLevel';\nexport * from './removeMappingsFromIssueTypeScreenScheme';\nexport * from './removeMemberFromSecurityLevel';\nexport * from './removeModules';\nexport * from './removeNotificationFromNotificationScheme';\nexport * from './removePreference';\nexport * from './removeProjectCategory';\nexport * from './removeScreenTabField';\nexport * from './removeUser';\nexport * from './removeUserFromGroup';\nexport * from './removeVote';\nexport * from './removeWatcher';\nexport * from './renameScreenTab';\nexport * from './reorderCustomFieldOptions';\nexport * from './reorderIssueTypesInIssueTypeScheme';\nexport * from './replaceCustomFieldOption';\nexport * from './replaceIssueFieldOption';\nexport * from './resetColumns';\nexport * from './resetUserColumns';\nexport * from './restore';\nexport * from './restoreCustomField';\nexport * from './sanitiseJqlQueries';\nexport * from './search';\nexport * from './searchForIssuesIds';\nexport * from './searchForIssuesUsingJql';\nexport * from './searchForIssuesUsingJqlEnhancedSearch';\nexport * from './searchForIssuesUsingJqlEnhancedSearchPost';\nexport * from './searchForIssuesUsingJqlPost';\nexport * from './searchPriorities';\nexport * from './searchProjects';\nexport * from './searchProjectsUsingSecuritySchemes';\nexport * from './searchResolutions';\nexport * from './searchSecuritySchemes';\nexport * from './searchWorkflows';\nexport * from './selectTimeTrackingImplementation';\nexport * from './services';\nexport * from './setActors';\nexport * from './setApplicationProperty';\nexport * from './setBanner';\nexport * from './setColumns';\nexport * from './setCommentProperty';\nexport * from './setDashboardItemProperty';\nexport * from './setDefaultLevels';\nexport * from './setDefaultPriority';\nexport * from './setDefaultResolution';\nexport * from './setDefaultShareScope';\nexport * from './setDefaultValues';\nexport * from './setFavouriteForFilter';\nexport * from './setFieldConfigurationSchemeMapping';\nexport * from './setIssueProperty';\nexport * from './setIssueTypeProperty';\nexport * from './setPreference';\nexport * from './setProjectProperty';\nexport * from './setSharedTimeTrackingConfiguration';\nexport * from './setUserColumns';\nexport * from './setUserNavProperty';\nexport * from './setUserProperty';\nexport * from './setWorkflowSchemeDraftIssueType';\nexport * from './setWorkflowSchemeIssueType';\nexport * from './setWorklogProperty';\nexport * from './storeAvatar';\nexport * from './suggestedPrioritiesForMappings';\nexport * from './toggleFeatureForProject';\nexport * from './trashCustomField';\nexport * from './trashPlan';\nexport * from './unarchiveIssues';\nexport * from './updateAtlassianTeam';\nexport * from './updateComment';\nexport * from './updateComponent';\nexport * from './updateCustomField';\nexport * from './updateCustomFieldConfiguration';\nexport * from './updateCustomFieldContext';\nexport * from './updateCustomFieldOption';\nexport * from './updateCustomFieldValue';\nexport * from './updateDashboard';\nexport * from './updateDefaultProjectClassification';\nexport * from './updateDefaultScreenScheme';\nexport * from './updateDefaultWorkflow';\nexport * from './updateDraftDefaultWorkflow';\nexport * from './updateDraftWorkflowMapping';\nexport * from './updateEntityPropertiesValue';\nexport * from './updateFieldConfiguration';\nexport * from './updateFieldConfigurationItems';\nexport * from './updateFieldConfigurationScheme';\nexport * from './updateFilter';\nexport * from './updateGadget';\nexport * from './updateIssueFieldOption';\nexport * from './updateIssueFields';\nexport * from './updateIssueLinkType';\nexport * from './updateIssueSecurityScheme';\nexport * from './updateIssueType';\nexport * from './updateIssueTypeScheme';\nexport * from './updateIssueTypeScreenScheme';\nexport * from './updateMultipleCustomFieldValues';\nexport * from './updateNotificationScheme';\nexport * from './updatePermissionScheme';\nexport * from './updatePlan';\nexport * from './updatePlanOnlyTeam';\nexport * from './updatePrecomputations';\nexport * from './updatePriority';\nexport * from './updatePriorityScheme';\nexport * from './updateProject';\nexport * from './updateProjectAvatar';\nexport * from './updateProjectCategory';\nexport * from './updateProjectEmail';\nexport * from './updateRelatedWork';\nexport * from './updateRemoteIssueLink';\nexport * from './updateResolution';\nexport * from './updateSchemes';\nexport * from './updateScreen';\nexport * from './updateScreenScheme';\nexport * from './updateSecurityLevel';\nexport * from './updateStatuses';\nexport * from './updateUiModification';\nexport * from './updateVersion';\nexport * from './updateWorkflowMapping';\nexport * from './updateWorkflows';\nexport * from './updateWorkflowScheme';\nexport * from './updateWorkflowSchemeDraft';\nexport * from './updateWorkflowSchemeMappings';\nexport * from './updateWorkflowTransitionProperty';\nexport * from './updateWorkflowTransitionRuleConfigurations';\nexport * from './updateWorklog';\nexport * from './validateCreateWorkflows';\nexport * from './validateProjectKey';\nexport * from './validateUpdateWorkflows';\nexport * from './workflowCapabilities';\nexport * from './workflowRuleSearch';\n","export * from './announcementBanner';\nexport * from './appDataPolicies';\nexport * from './applicationRoles';\nexport * from './appMigration';\nexport * from './appProperties';\nexport * from './auditRecords';\nexport * from './avatars';\nexport * from './classificationLevels';\nexport * from './dashboards';\nexport * from './dynamicModules';\nexport * from './filters';\nexport * from './filterSharing';\nexport * from './groupAndUserPicker';\nexport * from './groups';\nexport * from './instanceInformation';\nexport * from './issueAttachments';\nexport * from './issueBulkOperations';\nexport * from './issueCommentProperties';\nexport * from './issueComments';\nexport * from './issueCustomFieldAssociations';\nexport * from './issueCustomFieldConfigurationApps';\nexport * from './issueCustomFieldContexts';\nexport * from './issueCustomFieldOptions';\nexport * from './issueCustomFieldOptionsApps';\nexport * from './issueCustomFieldValuesApps';\nexport * from './issueFieldConfigurations';\nexport * from './issueFields';\nexport * from './issueLinks';\nexport * from './issueLinkTypes';\nexport * from './issueNavigatorSettings';\nexport * from './issueNotificationSchemes';\nexport * from './issuePriorities';\nexport * from './issueProperties';\nexport * from './issueRemoteLinks';\nexport * from './issueResolutions';\nexport * from './issues';\nexport * from './issueSearch';\nexport * from './issueSecurityLevel';\nexport * from './issueSecuritySchemes';\nexport * from './issueTypeProperties';\nexport * from './issueTypes';\nexport * from './issueTypeSchemes';\nexport * from './issueTypeScreenSchemes';\nexport * from './issueVotes';\nexport * from './issueWatchers';\nexport * from './issueWorklogProperties';\nexport * from './issueWorklogs';\nexport * from './jiraExpressions';\nexport * from './jiraSettings';\nexport * from './jQL';\nexport * from './jqlFunctionsApps';\nexport * from './labels';\nexport * from './licenseMetrics';\nexport * from './myself';\nexport * from './permissions';\nexport * from './permissionSchemes';\nexport * from './plans';\nexport * from './prioritySchemes';\nexport * from './projectAvatars';\nexport * from './projectCategories';\nexport * from './projectClassificationLevels';\nexport * from './projectComponents';\nexport * from './projectEmail';\nexport * from './projectFeatures';\nexport * from './projectKeyAndNameValidation';\nexport * from './projectPermissionSchemes';\nexport * from './projectProperties';\nexport * from './projectRoleActors';\nexport * from './projectRoles';\nexport * from './projects';\nexport * from './projectTemplates';\nexport * from './projectTypes';\nexport * from './projectVersions';\nexport * from './screens';\nexport * from './screenSchemes';\nexport * from './screenTabFields';\nexport * from './screenTabs';\nexport * from './serverInfo';\nexport * from './serviceRegistry';\nexport * from './status';\nexport * from './tasks';\nexport * from './teamsInPlan';\nexport * from './timeTracking';\nexport * from './uIModificationsApps';\nexport * from './userNavProperties';\nexport * from './userProperties';\nexport * from './users';\nexport * from './userSearch';\nexport * from './webhooks';\nexport * from './workflows';\nexport * from './workflowSchemeDrafts';\nexport * from './workflowSchemeProjectAssociations';\nexport * from './workflowSchemes';\nexport * from './workflowStatusCategories';\nexport * from './workflowStatuses';\nexport * from './workflowTransitionProperties';\nexport * from './workflowTransitionRules';\n\nexport * from './client';\nexport * as Version3Models from './models';\nexport * as Version3Parameters from './parameters';\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class AnnouncementBanner {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the current announcement banner configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getBanner<T = Models.AnnouncementBannerConfiguration>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the current announcement banner configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getBanner<T = Models.AnnouncementBannerConfiguration>(callback?: never): Promise<T>;\n  async getBanner<T = Models.AnnouncementBannerConfiguration>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/announcementBanner',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the announcement banner configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setBanner<T = void>(parameters: Parameters.SetBanner | undefined, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates the announcement banner configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setBanner<T = void>(parameters?: Parameters.SetBanner, callback?: never): Promise<T>;\n  async setBanner<T = void>(parameters?: Parameters.SetBanner, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/announcementBanner',\n      method: 'PUT',\n      data: {\n        isDismissible: parameters?.isDismissible,\n        isEnabled: parameters?.isEnabled,\n        message: parameters?.message,\n        visibility: parameters?.visibility,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class AppDataPolicies {\n  constructor(private client: Client) {}\n\n  /** Returns data policy for the workspace. */\n  async getPolicy<T = Models.WorkspaceDataPolicy>(callback: Callback<T>): Promise<void>;\n  /** Returns data policy for the workspace. */\n  async getPolicy<T = Models.WorkspaceDataPolicy>(callback?: never): Promise<T>;\n  async getPolicy<T = Models.WorkspaceDataPolicy>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/data-policy',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns data policies for the projects specified in the request. */\n  async getPolicies<T = Models.ProjectDataPolicies>(\n    parameters: Parameters.GetPolicies,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns data policies for the projects specified in the request. */\n  async getPolicies<T = Models.ProjectDataPolicies>(parameters: Parameters.GetPolicies, callback?: never): Promise<T>;\n  async getPolicies<T = Models.ProjectDataPolicies>(\n    parameters: Parameters.GetPolicies,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/data-policy/project',\n      method: 'GET',\n      params: {\n        ids: typeof parameters.ids === 'string' ? parameters.ids : parameters.ids.join(','),\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ApplicationRoles {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all application roles. In Jira, application roles are managed using the [Application access\n   * configuration](https://confluence.atlassian.com/x/3YxjL) page.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllApplicationRoles<T = Models.ApplicationRole[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all application roles. In Jira, application roles are managed using the [Application access\n   * configuration](https://confluence.atlassian.com/x/3YxjL) page.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllApplicationRoles<T = Models.ApplicationRole[]>(callback?: never): Promise<T>;\n  async getAllApplicationRoles<T = Models.ApplicationRole[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/applicationrole',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an application role.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApplicationRole<T = Models.ApplicationRole>(\n    parameters: Parameters.GetApplicationRole | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an application role.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApplicationRole<T = Models.ApplicationRole>(\n    parameters: Parameters.GetApplicationRole | string,\n    callback?: never,\n  ): Promise<T>;\n  async getApplicationRole<T = Models.ApplicationRole>(\n    parameters: Parameters.GetApplicationRole | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const key = typeof parameters === 'string' ? parameters : parameters.key;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/applicationrole/${key}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class AppMigration {\n  constructor(private client: Client) {}\n\n  /**\n   * Updates the value of a custom field added by Connect apps on one or more issues. The values of up to 200 custom\n   * fields can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can make this request\n   */\n  async updateIssueFields<T = unknown>(parameters: Parameters.UpdateIssueFields, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates the value of a custom field added by Connect apps on one or more issues. The values of up to 200 custom\n   * fields can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can make this request\n   */\n  async updateIssueFields<T = unknown>(parameters: Parameters.UpdateIssueFields, callback?: never): Promise<T>;\n  async updateIssueFields<T = unknown>(\n    parameters: Parameters.UpdateIssueFields,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/migration/field',\n      method: 'PUT',\n      headers: {\n        'Atlassian-Account-Id': parameters.accountId,\n        'Atlassian-Transfer-Id': parameters.transferId,\n      },\n      data: {\n        updateValueList: parameters.updateValueList,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the values of multiple entity properties for an object, up to 50 updates per request. This operation is for\n   * use by Connect apps during app migration.\n   */\n  async updateEntityPropertiesValue<T = unknown>(\n    parameters: Parameters.UpdateEntityPropertiesValue,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the values of multiple entity properties for an object, up to 50 updates per request. This operation is for\n   * use by Connect apps during app migration.\n   */\n  async updateEntityPropertiesValue<T = unknown>(\n    parameters: Parameters.UpdateEntityPropertiesValue,\n    callback?: never,\n  ): Promise<T>;\n  async updateEntityPropertiesValue<T = unknown>(\n    parameters: Parameters.UpdateEntityPropertiesValue,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/atlassian-connect/1/migration/properties/${parameters.entityType}`,\n      method: 'PUT',\n      headers: {\n        'Atlassian-Account-Id': parameters.accountId,\n        'Atlassian-Transfer-Id': parameters.transferId,\n        'Content-Type': 'application/json',\n      },\n      data: parameters.entities,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns configurations for workflow transition rules migrated from server to cloud and owned by the calling Connect\n   * app.\n   */\n  async workflowRuleSearch<T = Models.WorkflowRulesSearchDetails>(\n    parameters: Parameters.WorkflowRuleSearch,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns configurations for workflow transition rules migrated from server to cloud and owned by the calling Connect\n   * app.\n   */\n  async workflowRuleSearch<T = Models.WorkflowRulesSearchDetails>(\n    parameters: Parameters.WorkflowRuleSearch,\n    callback?: never,\n  ): Promise<T>;\n  async workflowRuleSearch<T = Models.WorkflowRulesSearchDetails>(\n    parameters: Parameters.WorkflowRuleSearch,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/migration/workflow/rule/search',\n      method: 'POST',\n      headers: {\n        'Atlassian-Transfer-Id': parameters.transferId,\n      },\n      data: {\n        expand: parameters.expand,\n        ruleIds: parameters.ruleIds,\n        workflowEntityId: parameters.workflowEntityId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class AppProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Gets all the properties of an app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async getAddonProperties<T = Models.PropertyKeys>(\n    parameters: Parameters.GetAddonProperties | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets all the properties of an app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async getAddonProperties<T = Models.PropertyKeys>(\n    parameters: Parameters.GetAddonProperties | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAddonProperties<T = Models.PropertyKeys>(\n    parameters: Parameters.GetAddonProperties | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const addonKey = typeof parameters === 'string' ? parameters : parameters.addonKey;\n\n    const config: RequestConfig = {\n      url: `/rest/atlassian-connect/1/addons/${addonKey}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the key and value of an app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async getAddonProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetAddonProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the key and value of an app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async getAddonProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetAddonProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getAddonProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetAddonProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/atlassian-connect/1/addons/${parameters.addonKey}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of an app's property. Use this resource to store custom data for your app.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async putAddonProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAddonProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of an app's property. Use this resource to store custom data for your app.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async putAddonProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAddonProperty,\n    callback?: never,\n  ): Promise<T>;\n  async putAddonProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAddonProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/atlassian-connect/1/addons/${parameters.addonKey}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async deleteAddonProperty<T = void>(parameters: Parameters.DeleteAddonProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only a\n   * Connect app whose key matches `addonKey` can make this request. Additionally, Forge apps can access Connect app\n   * properties (stored against the same `app.connect.key`).\n   */\n  async deleteAddonProperty<T = void>(parameters: Parameters.DeleteAddonProperty, callback?: never): Promise<T>;\n  async deleteAddonProperty<T = void>(\n    parameters: Parameters.DeleteAddonProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/atlassian-connect/1/addons/${parameters.addonKey}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a Forge app's property. These values can be retrieved in [Jira\n   * expressions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) through the `app` [context\n   * variable](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables).\n   *\n   * For other use cases, use the [Storage\n   * API](https://developer.atlassian.com/platform/forge/runtime-reference/storage-api/).\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Forge apps can make this request.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async putAppProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAppProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of a Forge app's property. These values can be retrieved in [Jira\n   * expressions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) through the `app` [context\n   * variable](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#context-variables).\n   *\n   * For other use cases, use the [Storage\n   * API](https://developer.atlassian.com/platform/forge/runtime-reference/storage-api/).\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Forge apps can make this request.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async putAppProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAppProperty,\n    callback?: never,\n  ): Promise<T>;\n  async putAppProperty<T = Models.OperationMessage>(\n    parameters: Parameters.PutAppProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/forge/1/app/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a Forge app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Forge apps can make this request.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async deleteAppProperty<T = void>(parameters: Parameters.DeleteAppProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a Forge app's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Forge apps can make this request.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async deleteAppProperty<T = void>(parameters: Parameters.DeleteAppProperty, callback?: never): Promise<T>;\n  async deleteAppProperty<T = void>(\n    parameters: Parameters.DeleteAppProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/forge/1/app/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class AuditRecords {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of audit records. The list can be filtered to include items:\n   *\n   * - Where each item in `filter` has at least one match in any of these fields:\n   *\n   *   - `summary`\n   *   - `category`\n   *   - `eventSource`\n   *   - `objectItem.name` If the object is a user, account ID is available to filter.\n   *   - `objectItem.parentName`\n   *   - `objectItem.typeName`\n   *   - `changedValues.changedFrom`\n   *   - `changedValues.changedTo`\n   *   - `remoteAddress`\n   *\n   *   For example, if `filter` contains _man ed_, an audit record containing `summary\": \"User added to group\"` and\n   *   `\"category\": \"group management\"` is returned.\n   * - Created on or after a date and time.\n   * - Created on or before a date and time.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAuditRecords<T = Models.AuditRecords>(\n    parameters: Parameters.GetAuditRecords | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of audit records. The list can be filtered to include items:\n   *\n   * - Where each item in `filter` has at least one match in any of these fields:\n   *\n   *   - `summary`\n   *   - `category`\n   *   - `eventSource`\n   *   - `objectItem.name` If the object is a user, account ID is available to filter.\n   *   - `objectItem.parentName`\n   *   - `objectItem.typeName`\n   *   - `changedValues.changedFrom`\n   *   - `changedValues.changedTo`\n   *   - `remoteAddress`\n   *\n   *   For example, if `filter` contains _man ed_, an audit record containing `summary\": \"User added to group\"` and\n   *   `\"category\": \"group management\"` is returned.\n   * - Created on or after a date and time.\n   * - Created on or before a date and time.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAuditRecords<T = Models.AuditRecords>(parameters?: Parameters.GetAuditRecords, callback?: never): Promise<T>;\n  async getAuditRecords<T = Models.AuditRecords>(\n    parameters?: Parameters.GetAuditRecords,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/auditing/record',\n      method: 'GET',\n      params: {\n        offset: parameters?.offset,\n        limit: parameters?.limit,\n        filter: parameters?.filter,\n        from: parameters?.from,\n        to: parameters?.to,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Avatars {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of system avatar details by owner type, where the owner types are issue type, project, user or\n   * priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllSystemAvatars<T = Models.SystemAvatars>(\n    parameters: Parameters.GetAllSystemAvatars | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of system avatar details by owner type, where the owner types are issue type, project, user or\n   * priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllSystemAvatars<T = Models.SystemAvatars>(\n    parameters: Parameters.GetAllSystemAvatars | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllSystemAvatars<T = Models.SystemAvatars>(\n    parameters: Parameters.GetAllSystemAvatars | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const type = typeof parameters === 'string' ? parameters : parameters.type;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/avatar/${type}/system`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the system and custom avatars for a project, issue type or priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For system avatars, none.\n   * - For priority avatars, none.\n   */\n  async getAvatars<T = Models.Avatars>(parameters: Parameters.GetAvatars, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the system and custom avatars for a project, issue type or priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For system avatars, none.\n   * - For priority avatars, none.\n   */\n  async getAvatars<T = Models.Avatars>(parameters: Parameters.GetAvatars, callback?: never): Promise<T>;\n  async getAvatars<T = Models.Avatars>(parameters: Parameters.GetAvatars, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/universal_avatar/type/${parameters.type}/owner/${parameters.entityId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Loads a custom avatar for a project, issue type or priority.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar use:\n   *\n   * - [Update issue\n   *   type](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-types/#api-rest-api-3-issuetype-id-put)\n   *   to set it as the issue type's displayed avatar.\n   * - [Set project\n   *   avatar](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-avatars/#api-rest-api-3-project-projectidorkey-avatar-put)\n   *   to set it as the project's displayed avatar.\n   * - [Update\n   *   priority](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-priorities/#api-rest-api-3-priority-id-put)\n   *   to set it as the priority's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async storeAvatar<T = Models.Avatar>(parameters: Parameters.StoreAvatar, callback: Callback<T>): Promise<void>;\n  /**\n   * Loads a custom avatar for a project, issue type or priority.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar use:\n   *\n   * - [Update issue\n   *   type](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-types/#api-rest-api-3-issuetype-id-put)\n   *   to set it as the issue type's displayed avatar.\n   * - [Set project\n   *   avatar](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-avatars/#api-rest-api-3-project-projectidorkey-avatar-put)\n   *   to set it as the project's displayed avatar.\n   * - [Update\n   *   priority](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-priorities/#api-rest-api-3-priority-id-put)\n   *   to set it as the priority's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async storeAvatar<T = Models.Avatar>(parameters: Parameters.StoreAvatar, callback?: never): Promise<T>;\n  async storeAvatar<T = Models.Avatar>(parameters: Parameters.StoreAvatar, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/universal_avatar/type/${parameters.type}/owner/${parameters.entityId}`,\n      method: 'POST',\n      headers: {\n        'X-Atlassian-Token': 'no-check',\n        'Content-Type': parameters.mimeType,\n      },\n      params: {\n        x: parameters.x,\n        y: parameters.y,\n        size: parameters.size ?? 0,\n      },\n      data: parameters.avatar,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an avatar from a project, issue type or priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteAvatar<T = void>(parameters: Parameters.DeleteAvatar, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an avatar from a project, issue type or priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteAvatar<T = void>(parameters: Parameters.DeleteAvatar, callback?: never): Promise<T>;\n  async deleteAvatar<T = void>(parameters: Parameters.DeleteAvatar, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/universal_avatar/type/${parameters.type}/owner/${parameters.owningObjectId}/avatar/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the default project, issue type or priority avatar image.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAvatarImageByType<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByType | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the default project, issue type or priority avatar image.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAvatarImageByType<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByType | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAvatarImageByType<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByType | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const type = typeof parameters === 'string' ? parameters : parameters.type;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/universal_avatar/view/type/${type}`,\n      method: 'GET',\n      responseType: 'arraybuffer',\n      params: {\n        size: typeof parameters !== 'string' ? parameters.size : undefined,\n        format: typeof parameters !== 'string' ? parameters.format : undefined,\n      },\n    };\n\n    const {\n      data: avatar,\n      headers: { 'content-type': contentTypeWithEncoding },\n    } = await this.client.sendRequestFullResponse<T>(config);\n\n    const contentType = contentTypeWithEncoding.split(';')[0].trim();\n\n    return this.client.handleSuccessResponse({ contentType, avatar }, callback);\n  }\n\n  /**\n   * Returns a project, issue type or priority avatar image by ID.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - For system avatars, none.\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For priority avatars, none.\n   */\n  async getAvatarImageByID<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByID,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a project, issue type or priority avatar image by ID.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - For system avatars, none.\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For priority avatars, none.\n   */\n  async getAvatarImageByID<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByID,\n    callback?: never,\n  ): Promise<T>;\n  async getAvatarImageByID<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByID,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/universal_avatar/view/type/${parameters.type}/avatar/${parameters.id}`,\n      method: 'GET',\n      responseType: 'arraybuffer',\n      params: {\n        size: parameters.size,\n        format: parameters.format,\n      },\n    };\n\n    const {\n      data: avatar,\n      headers: { 'content-type': contentTypeWithEncoding },\n    } = await this.client.sendRequestFullResponse<T>(config);\n\n    const contentType = contentTypeWithEncoding.split(';')[0].trim();\n\n    return this.client.handleSuccessResponse({ contentType, avatar }, callback);\n  }\n\n  /**\n   * Returns the avatar image for a project, issue type or priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - For system avatars, none.\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For priority avatars, none.\n   */\n  async getAvatarImageByOwner<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByOwner,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the avatar image for a project, issue type or priority.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - For system avatars, none.\n   * - For custom project avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for\n   *   the project the avatar belongs to.\n   * - For custom issue type avatars, _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for at least one project the issue type is used in.\n   * - For priority avatars, none.\n   */\n  async getAvatarImageByOwner<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByOwner,\n    callback?: never,\n  ): Promise<T>;\n  async getAvatarImageByOwner<T = Models.AvatarWithDetails>(\n    parameters: Parameters.GetAvatarImageByOwner,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/universal_avatar/view/type/${parameters.type}/owner/${parameters.entityId}`,\n      method: 'GET',\n      responseType: 'arraybuffer',\n      params: {\n        size: parameters.size,\n        format: parameters.format,\n      },\n    };\n\n    const {\n      data: avatar,\n      headers: { 'content-type': contentTypeWithEncoding },\n    } = await this.client.sendRequestFullResponse<T>(config);\n\n    const contentType = contentTypeWithEncoding.split(';')[0].trim();\n\n    return this.client.handleSuccessResponse({ contentType, avatar }, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ClassificationLevels {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all classification levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllUserDataClassificationLevels<T = Models.DataClassificationLevels>(\n    parameters: Parameters.GetAllUserDataClassificationLevels | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all classification levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllUserDataClassificationLevels<T = Models.DataClassificationLevels>(\n    parameters?: Parameters.GetAllUserDataClassificationLevels,\n    callback?: never,\n  ): Promise<T>;\n  async getAllUserDataClassificationLevels<T = Models.DataClassificationLevels>(\n    parameters?: Parameters.GetAllUserDataClassificationLevels,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/classification-levels',\n      method: 'GET',\n      params: {\n        status: parameters?.status,\n        orderBy: parameters?.orderBy,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Dashboards {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of dashboards owned by or shared with the user. The list may be filtered to include only favorite or\n   * owned dashboards.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllDashboards<T = Models.PageOfDashboards>(\n    parameters: Parameters.GetAllDashboards | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of dashboards owned by or shared with the user. The list may be filtered to include only favorite or\n   * owned dashboards.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllDashboards<T = Models.PageOfDashboards>(\n    parameters?: Parameters.GetAllDashboards,\n    callback?: never,\n  ): Promise<T>;\n  async getAllDashboards<T = Models.PageOfDashboards>(\n    parameters?: Parameters.GetAllDashboards,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/dashboard',\n      method: 'GET',\n      params: {\n        filter: parameters?.filter,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async createDashboard<T = Models.Dashboard>(\n    parameters: Parameters.CreateDashboard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async createDashboard<T = Models.Dashboard>(parameters: Parameters.CreateDashboard, callback?: never): Promise<T>;\n  async createDashboard<T = Models.Dashboard>(\n    parameters: Parameters.CreateDashboard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/dashboard',\n      method: 'POST',\n      params: {\n        extendAdminPermissions: parameters.extendAdminPermissions,\n      },\n      data: {\n        description: parameters.description,\n        editPermissions: parameters.editPermissions,\n        name: parameters.name,\n        sharePermissions: parameters.sharePermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Bulk edit dashboards. Maximum number of dashboards to be edited at the same time is 100.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None\n   *\n   * The dashboards to be updated must be owned by the user, or the user must be an administrator.\n   */\n  async bulkEditDashboards<T = Models.BulkEditShareableEntity>(\n    parameters: Parameters.BulkEditDashboards,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk edit dashboards. Maximum number of dashboards to be edited at the same time is 100.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None\n   *\n   * The dashboards to be updated must be owned by the user, or the user must be an administrator.\n   */\n  async bulkEditDashboards<T = Models.BulkEditShareableEntity>(\n    parameters: Parameters.BulkEditDashboards,\n    callback?: never,\n  ): Promise<T>;\n  async bulkEditDashboards<T = Models.BulkEditShareableEntity>(\n    parameters: Parameters.BulkEditDashboards,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/dashboard/bulk/edit',\n      method: 'PUT',\n      data: {\n        action: parameters.action,\n        changeOwnerDetails: parameters.changeOwnerDetails,\n        entityIds: parameters.entityIds,\n        extendAdminPermissions: parameters.extendAdminPermissions,\n        permissionDetails: parameters.permissionDetails,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets a list of all available gadgets that can be added to all dashboards.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllAvailableDashboardGadgets<T = Models.AvailableDashboardGadgetsResponse>(\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets a list of all available gadgets that can be added to all dashboards.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllAvailableDashboardGadgets<T = Models.AvailableDashboardGadgetsResponse>(callback?: never): Promise<T>;\n  async getAllAvailableDashboardGadgets<T = Models.AvailableDashboardGadgetsResponse>(\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/dashboard/gadgets',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * dashboards. This operation is similar to [Get dashboards](#api-rest-api-3-dashboard-get) except that the results\n   * can be refined to include dashboards that have specific attributes. For example, dashboards with a particular name.\n   * When multiple attributes are specified only filters matching all attributes are returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * following dashboards that match the query parameters are returned:\n   *\n   * - Dashboards owned by the user. Not returned for anonymous users.\n   * - Dashboards shared with a group that the user is a member of. Not returned for anonymous users.\n   * - Dashboards shared with a private project that the user can browse. Not returned for anonymous users.\n   * - Dashboards shared with a public project.\n   * - Dashboards shared with the public.\n   */\n  async getDashboardsPaginated<T = Models.PageDashboard>(\n    parameters: Parameters.GetDashboardsPaginated | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * dashboards. This operation is similar to [Get dashboards](#api-rest-api-3-dashboard-get) except that the results\n   * can be refined to include dashboards that have specific attributes. For example, dashboards with a particular name.\n   * When multiple attributes are specified only filters matching all attributes are returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * following dashboards that match the query parameters are returned:\n   *\n   * - Dashboards owned by the user. Not returned for anonymous users.\n   * - Dashboards shared with a group that the user is a member of. Not returned for anonymous users.\n   * - Dashboards shared with a private project that the user can browse. Not returned for anonymous users.\n   * - Dashboards shared with a public project.\n   * - Dashboards shared with the public.\n   */\n  async getDashboardsPaginated<T = Models.PageDashboard>(\n    parameters?: Parameters.GetDashboardsPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getDashboardsPaginated<T = Models.PageDashboard>(\n    parameters?: Parameters.GetDashboardsPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/dashboard/search',\n      method: 'GET',\n      params: {\n        dashboardName: parameters?.dashboardName,\n        accountId: parameters?.accountId,\n        groupname: parameters?.groupname,\n        groupId: parameters?.groupId,\n        projectId: parameters?.projectId,\n        orderBy: parameters?.orderBy,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        status: parameters?.status,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of dashboard gadgets on a dashboard.\n   *\n   * This operation returns:\n   *\n   * - Gadgets from a list of IDs, when `id` is set.\n   * - Gadgets with a module key, when `moduleKey` is set.\n   * - Gadgets from a list of URIs, when `uri` is set.\n   * - All gadgets, when no other parameters are set.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllGadgets<T = Models.DashboardGadgetResponse>(\n    parameters: Parameters.GetAllGadgets | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of dashboard gadgets on a dashboard.\n   *\n   * This operation returns:\n   *\n   * - Gadgets from a list of IDs, when `id` is set.\n   * - Gadgets with a module key, when `moduleKey` is set.\n   * - Gadgets from a list of URIs, when `uri` is set.\n   * - All gadgets, when no other parameters are set.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllGadgets<T = Models.DashboardGadgetResponse>(\n    parameters: Parameters.GetAllGadgets | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllGadgets<T = Models.DashboardGadgetResponse>(\n    parameters: Parameters.GetAllGadgets | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const dashboardId = typeof parameters === 'string' ? parameters : parameters.dashboardId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${dashboardId}/gadget`,\n      method: 'GET',\n      params: {\n        moduleKey: typeof parameters !== 'string' && parameters.moduleKey,\n        uri: typeof parameters !== 'string' && parameters.uri,\n        gadgetId: typeof parameters !== 'string' && parameters.gadgetId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a gadget to a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async addGadget<T = Models.DashboardGadget>(parameters: Parameters.AddGadget, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds a gadget to a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async addGadget<T = Models.DashboardGadget>(parameters: Parameters.AddGadget, callback?: never): Promise<T>;\n  async addGadget<T = Models.DashboardGadget>(\n    parameters: Parameters.AddGadget,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${parameters.dashboardId}/gadget`,\n      method: 'POST',\n      data: {\n        color: parameters.color,\n        ignoreUriAndModuleKeyValidation: parameters.ignoreUriAndModuleKeyValidation,\n        moduleKey: parameters.moduleKey,\n        position: parameters.position,\n        title: parameters.title,\n        uri: parameters.uri,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the title, position, and color of the gadget on a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async updateGadget<T = void>(parameters: Parameters.UpdateGadget, callback: Callback<T>): Promise<void>;\n  /**\n   * Changes the title, position, and color of the gadget on a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async updateGadget<T = void>(parameters: Parameters.UpdateGadget, callback?: never): Promise<T>;\n  async updateGadget<T = void>(parameters: Parameters.UpdateGadget, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${parameters.dashboardId}/gadget/${parameters.gadgetId}`,\n      method: 'PUT',\n      data: {\n        color: parameters.color,\n        position: parameters.position,\n        title: parameters.title,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a dashboard gadget from a dashboard.\n   *\n   * When a gadget is removed from a dashboard, other gadgets in the same column are moved up to fill the emptied\n   * position.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async removeGadget<T = void>(parameters: Parameters.RemoveGadget, callback: Callback<T>): Promise<void>;\n  /**\n   * Removes a dashboard gadget from a dashboard.\n   *\n   * When a gadget is removed from a dashboard, other gadgets in the same column are moved up to fill the emptied\n   * position.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async removeGadget<T = void>(parameters: Parameters.RemoveGadget, callback?: never): Promise<T>;\n  async removeGadget<T = void>(parameters: Parameters.RemoveGadget, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${parameters.dashboardId}/gadget/${parameters.gadgetId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the keys of all properties for a dashboard item.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   * The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when\n   * Jira’s anonymous access is permitted.\n   */\n  async getDashboardItemPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetDashboardItemPropertyKeys,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all properties for a dashboard item.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   * The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when\n   * Jira’s anonymous access is permitted.\n   */\n  async getDashboardItemPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetDashboardItemPropertyKeys,\n    callback?: never,\n  ): Promise<T>;\n  async getDashboardItemPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetDashboardItemPropertyKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${parameters.dashboardId}/items/${parameters.itemId}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the key and value of a dashboard item property.\n   *\n   * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed\n   * to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding\n   * and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ).\n   *\n   * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires\n   * whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this\n   * resource to store the item's content or configuration details. For more information on working with dashboard\n   * items, see [ Building a dashboard item for a JIRA Connect\n   * add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/)\n   * and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/)\n   * documentation.\n   *\n   * There is no resource to set or get dashboard items.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   * The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when\n   * Jira’s anonymous access is permitted.\n   */\n  async getDashboardItemProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetDashboardItemProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the key and value of a dashboard item property.\n   *\n   * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed\n   * to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding\n   * and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ).\n   *\n   * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires\n   * whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this\n   * resource to store the item's content or configuration details. For more information on working with dashboard\n   * items, see [ Building a dashboard item for a JIRA Connect\n   * add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/)\n   * and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/)\n   * documentation.\n   *\n   * There is no resource to set or get dashboard items.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * user must be the owner of the dashboard or have the dashboard shared with them. Note, users with the _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   * The System dashboard is considered to be shared with all other users, and is accessible to anonymous users when\n   * Jira’s anonymous access is permitted.\n   */\n  async getDashboardItemProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetDashboardItemProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getDashboardItemProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetDashboardItemProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${parameters.dashboardId}/items/${parameters.itemId}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a dashboard item property. Use this resource in apps to store custom data against a dashboard\n   * item.\n   *\n   * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed\n   * to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding\n   * and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ).\n   *\n   * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires\n   * whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this\n   * resource to store the item's content or configuration details. For more information on working with dashboard\n   * items, see [ Building a dashboard item for a JIRA Connect\n   * add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/)\n   * and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/)\n   * documentation.\n   *\n   * There is no resource to set or get dashboard items.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * user must be the owner of the dashboard. Note, users with the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   */\n  async setDashboardItemProperty<T = unknown>(\n    parameters: Parameters.SetDashboardItemProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of a dashboard item property. Use this resource in apps to store custom data against a dashboard\n   * item.\n   *\n   * A dashboard item enables an app to add user-specific information to a user dashboard. Dashboard items are exposed\n   * to users as gadgets that users can add to their dashboards. For more information on how users do this, see [Adding\n   * and customizing gadgets](https://confluence.atlassian.com/x/7AeiLQ).\n   *\n   * When an app creates a dashboard item it registers a callback to receive the dashboard item ID. The callback fires\n   * whenever the item is rendered or, where the item is configurable, the user edits the item. The app then uses this\n   * resource to store the item's content or configuration details. For more information on working with dashboard\n   * items, see [ Building a dashboard item for a JIRA Connect\n   * add-on](https://developer.atlassian.com/server/jira/platform/guide-building-a-dashboard-item-for-a-jira-connect-add-on-33746254/)\n   * and the [Dashboard Item](https://developer.atlassian.com/cloud/jira/platform/modules/dashboard-item/)\n   * documentation.\n   *\n   * There is no resource to set or get dashboard items.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * user must be the owner of the dashboard. Note, users with the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   */\n  async setDashboardItemProperty<T = unknown>(\n    parameters: Parameters.SetDashboardItemProperty,\n    callback?: never,\n  ): Promise<T>;\n  async setDashboardItemProperty<T = unknown>(\n    parameters: Parameters.SetDashboardItemProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${parameters.dashboardId}/items/${parameters.itemId}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a dashboard item property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * user must be the owner of the dashboard. Note, users with the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   */\n  async deleteDashboardItemProperty<T = void>(\n    parameters: Parameters.DeleteDashboardItemProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a dashboard item property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * user must be the owner of the dashboard. Note, users with the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the System dashboard.\n   */\n  async deleteDashboardItemProperty<T = void>(\n    parameters: Parameters.DeleteDashboardItemProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteDashboardItemProperty<T = void>(\n    parameters: Parameters.DeleteDashboardItemProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${parameters.dashboardId}/items/${parameters.itemId}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a dashboard.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   *\n   * However, to get a dashboard, the dashboard must be shared with the user or the user must own it. Note, users with\n   * the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the\n   * System dashboard. The System dashboard is considered to be shared with all other users.\n   */\n  async getDashboard<T = Models.Dashboard>(\n    parameters: Parameters.GetDashboard | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a dashboard.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   *\n   * However, to get a dashboard, the dashboard must be shared with the user or the user must own it. Note, users with\n   * the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) are considered owners of the\n   * System dashboard. The System dashboard is considered to be shared with all other users.\n   */\n  async getDashboard<T = Models.Dashboard>(parameters: Parameters.GetDashboard | string, callback?: never): Promise<T>;\n  async getDashboard<T = Models.Dashboard>(\n    parameters: Parameters.GetDashboard | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a dashboard, replacing all the dashboard details with those provided.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None\n   *\n   * The dashboard to be updated must be owned by the user.\n   */\n  async updateDashboard<T = Models.Dashboard>(\n    parameters: Parameters.UpdateDashboard,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a dashboard, replacing all the dashboard details with those provided.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None\n   *\n   * The dashboard to be updated must be owned by the user.\n   */\n  async updateDashboard<T = Models.Dashboard>(parameters: Parameters.UpdateDashboard, callback?: never): Promise<T>;\n  async updateDashboard<T = Models.Dashboard>(\n    parameters: Parameters.UpdateDashboard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${parameters.id}`,\n      method: 'PUT',\n      params: {\n        extendAdminPermissions: parameters.extendAdminPermissions,\n      },\n      data: {\n        description: parameters.description,\n        editPermissions: parameters.editPermissions,\n        name: parameters.name,\n        sharePermissions: parameters.sharePermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None\n   *\n   * The dashboard to be deleted must be owned by the user.\n   */\n  async deleteDashboard<T = void>(\n    parameters: Parameters.DeleteDashboard | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None\n   *\n   * The dashboard to be deleted must be owned by the user.\n   */\n  async deleteDashboard<T = void>(parameters: Parameters.DeleteDashboard | string, callback?: never): Promise<T>;\n  async deleteDashboard<T = void>(\n    parameters: Parameters.DeleteDashboard | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Copies a dashboard. Any values provided in the `dashboard` parameter replace those in the copied dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None\n   *\n   * The dashboard to be copied must be owned by or shared with the user.\n   */\n  async copyDashboard<T = Models.Dashboard>(parameters: Parameters.CopyDashboard, callback: Callback<T>): Promise<void>;\n  /**\n   * Copies a dashboard. Any values provided in the `dashboard` parameter replace those in the copied dashboard.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None\n   *\n   * The dashboard to be copied must be owned by or shared with the user.\n   */\n  async copyDashboard<T = Models.Dashboard>(parameters: Parameters.CopyDashboard, callback?: never): Promise<T>;\n  async copyDashboard<T = Models.Dashboard>(\n    parameters: Parameters.CopyDashboard,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/dashboard/${parameters.id}/copy`,\n      method: 'POST',\n      params: {\n        extendAdminPermissions: parameters.extendAdminPermissions,\n      },\n      data: {\n        description: parameters.description,\n        editPermissions: parameters.editPermissions,\n        name: parameters.name,\n        sharePermissions: parameters.sharePermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class DynamicModules {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all modules registered dynamically by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async getModules<T = Models.ConnectModules>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all modules registered dynamically by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async getModules<T = Models.ConnectModules>(callback?: never): Promise<T>;\n  async getModules<T = Models.ConnectModules>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/app/module/dynamic',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Registers a list of modules.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async registerModules<T = unknown>(\n    parameters: Parameters.RegisterModules | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Registers a list of modules.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async registerModules<T = unknown>(parameters?: Parameters.RegisterModules, callback?: never): Promise<T>;\n  async registerModules<T = unknown>(\n    parameters?: Parameters.RegisterModules,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/app/module/dynamic',\n      method: 'POST',\n      data: {\n        modules: parameters?.modules,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Remove all or a list of modules registered by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async removeModules<T = void>(parameters: Parameters.RemoveModules | undefined, callback: Callback<T>): Promise<void>;\n  /**\n   * Remove all or a list of modules registered by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can make this request.\n   */\n  async removeModules<T = void>(parameters?: Parameters.RemoveModules, callback?: never): Promise<T>;\n  async removeModules<T = void>(parameters?: Parameters.RemoveModules, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/app/module/dynamic',\n      method: 'DELETE',\n      params: {\n        moduleKey: parameters?.moduleKey,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Filters {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a filter. The filter is shared according to the [default share\n   * scope](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-filters/#api-rest-api-3-filter-post).\n   * The filter is not selected as a favorite.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async createFilter<T = Models.Filter>(parameters: Parameters.CreateFilter, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a filter. The filter is shared according to the [default share\n   * scope](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-filters/#api-rest-api-3-filter-post).\n   * The filter is not selected as a favorite.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async createFilter<T = Models.Filter>(parameters: Parameters.CreateFilter, callback?: never): Promise<T>;\n  async createFilter<T = Models.Filter>(\n    parameters: Parameters.CreateFilter,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/filter',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n        overrideSharePermissions: parameters.overrideSharePermissions,\n      },\n      data: {\n        approximateLastUsed: parameters.approximateLastUsed,\n        description: parameters.description,\n        editPermissions: parameters.editPermissions,\n        favourite: parameters.favourite,\n        favouritedCount: parameters.favouritedCount,\n        id: parameters.id,\n        jql: parameters.jql,\n        name: parameters.name,\n        owner: parameters.owner,\n        searchUrl: parameters.searchUrl,\n        self: parameters.self,\n        sharePermissions: parameters.sharePermissions,\n        sharedUsers: parameters.sharedUsers,\n        subscriptions: parameters.subscriptions,\n        viewUrl: parameters.viewUrl,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the visible favorite filters of the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** A\n   * favorite filter is only visible to the user where the filter is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   *\n   * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by\n   * this operation.\n   */\n  async getFavouriteFilters<T = Models.Filter[]>(\n    parameters: Parameters.GetFavouriteFilters | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the visible favorite filters of the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** A\n   * favorite filter is only visible to the user where the filter is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   *\n   * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by\n   * this operation.\n   */\n  async getFavouriteFilters<T = Models.Filter[]>(\n    parameters?: Parameters.GetFavouriteFilters,\n    callback?: never,\n  ): Promise<T>;\n  async getFavouriteFilters<T = Models.Filter[]>(\n    parameters?: Parameters.GetFavouriteFilters,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/filter/favourite',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the filters owned by the user. If `includeFavourites` is `true`, the user's visible favorite filters are\n   * also returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, a favorite filters is only visible to the user where the filter is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   *\n   * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by\n   * this operation.\n   */\n  async getMyFilters<T = Models.Filter[]>(\n    parameters: Parameters.GetMyFilters | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the filters owned by the user. If `includeFavourites` is `true`, the user's visible favorite filters are\n   * also returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, a favorite filters is only visible to the user where the filter is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   *\n   * For example, if the user favorites a public filter that is subsequently made private that filter is not returned by\n   * this operation.\n   */\n  async getMyFilters<T = Models.Filter[]>(parameters?: Parameters.GetMyFilters, callback?: never): Promise<T>;\n  async getMyFilters<T = Models.Filter[]>(\n    parameters?: Parameters.GetMyFilters,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/filter/my',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n        includeFavourites: parameters?.includeFavourites,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * filters. Use this operation to get:\n   *\n   * - Specific filters, by defining `id` only.\n   * - Filters that match all of the specified attributes. For example, all filters for a user with a particular word in\n   *   their name. When multiple attributes are specified only filters matching all attributes are returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, only the following filters that match the query parameters are returned:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getFiltersPaginated<T = Models.PageFilterDetails>(\n    parameters: Parameters.GetFiltersPaginated | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * filters. Use this operation to get:\n   *\n   * - Specific filters, by defining `id` only.\n   * - Filters that match all of the specified attributes. For example, all filters for a user with a particular word in\n   *   their name. When multiple attributes are specified only filters matching all attributes are returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, only the following filters that match the query parameters are returned:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getFiltersPaginated<T = Models.PageFilterDetails>(\n    parameters?: Parameters.GetFiltersPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getFiltersPaginated<T = Models.PageFilterDetails>(\n    parameters?: Parameters.GetFiltersPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/filter/search',\n      method: 'GET',\n      params: {\n        filterName: parameters?.filterName,\n        accountId: parameters?.accountId,\n        groupname: parameters?.groupname,\n        groupId: parameters?.groupId,\n        projectId: parameters?.projectId,\n        id: parameters?.id,\n        orderBy: parameters?.orderBy,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        expand: parameters?.expand,\n        overrideSharePermissions: parameters?.overrideSharePermissions,\n        isSubstringMatch: parameters?.isSubstringMatch,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a filter.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, the filter is only returned where it is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   */\n  async getFilter<T = Models.Filter>(parameters: Parameters.GetFilter | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a filter.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, the filter is only returned where it is:\n   *\n   * - Owned by the user.\n   * - Shared with a group that the user is a member of.\n   * - Shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Shared with a public project.\n   * - Shared with the public.\n   */\n  async getFilter<T = Models.Filter>(parameters: Parameters.GetFilter | string, callback?: never): Promise<T>;\n  async getFilter<T = Models.Filter>(\n    parameters: Parameters.GetFilter | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${id}`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n        overrideSharePermissions: typeof parameters !== 'string' && parameters.overrideSharePermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a filter. Use this operation to update a filter's name, description, JQL, or sharing.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however the user must own the filter.\n   */\n  async updateFilter<T = Models.Filter>(parameters: Parameters.UpdateFilter, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a filter. Use this operation to update a filter's name, description, JQL, or sharing.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however the user must own the filter.\n   */\n  async updateFilter<T = Models.Filter>(parameters: Parameters.UpdateFilter, callback?: never): Promise<T>;\n  async updateFilter<T = Models.Filter>(\n    parameters: Parameters.UpdateFilter,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${parameters.id}`,\n      method: 'PUT',\n      params: {\n        expand: parameters.expand,\n        overrideSharePermissions: parameters.overrideSharePermissions,\n      },\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        jql: parameters.jql,\n        favourite: parameters.favourite,\n        sharePermissions: parameters.sharePermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Delete a filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however filters can only be deleted by the creator of the filter or a user with\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFilter<T = void>(parameters: Parameters.DeleteFilter | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Delete a filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however filters can only be deleted by the creator of the filter or a user with\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFilter<T = void>(parameters: Parameters.DeleteFilter | string, callback?: never): Promise<T>;\n  async deleteFilter<T = void>(\n    parameters: Parameters.DeleteFilter | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the columns configured for a filter. The column configuration is used when the filter's results are viewed\n   * in _List View_ with the _Columns_ set to _Filter_.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, column details are only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getColumns<T = Models.ColumnItem[]>(\n    parameters: Parameters.GetColumns | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the columns configured for a filter. The column configuration is used when the filter's results are viewed\n   * in _List View_ with the _Columns_ set to _Filter_.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, column details are only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getColumns<T = Models.ColumnItem[]>(parameters: Parameters.GetColumns | string, callback?: never): Promise<T>;\n  async getColumns<T = Models.ColumnItem[]>(\n    parameters: Parameters.GetColumns | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${id}/columns`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the columns for a filter. Only navigable fields can be set as columns. Use [Get\n   * fields](#api-rest-api-3-field-get) to get the list fields in Jira. A navigable field has `navigable` set to\n   * `true`.\n   *\n   * The parameters for this resource are expressed as HTML form data. For example, in curl:\n   *\n   * `curl -X PUT -d columns=summary -d columns=description\n   * https://your-domain.atlassian.net/rest/api/3/filter/10000/columns`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, columns are only set for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async setColumns<T = unknown>(parameters: Parameters.SetColumns, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the columns for a filter. Only navigable fields can be set as columns. Use [Get\n   * fields](#api-rest-api-3-field-get) to get the list fields in Jira. A navigable field has `navigable` set to\n   * `true`.\n   *\n   * The parameters for this resource are expressed as HTML form data. For example, in curl:\n   *\n   * `curl -X PUT -d columns=summary -d columns=description\n   * https://your-domain.atlassian.net/rest/api/3/filter/10000/columns`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, columns are only set for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async setColumns<T = unknown>(parameters: Parameters.SetColumns, callback?: never): Promise<T>;\n  async setColumns<T = unknown>(parameters: Parameters.SetColumns, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${parameters.id}/columns`,\n      method: 'PUT',\n      data: parameters.columns,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Reset the user's column configuration for the filter to the default.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, columns are only reset for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async resetColumns<T = void>(parameters: Parameters.ResetColumns | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Reset the user's column configuration for the filter to the default.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, columns are only reset for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async resetColumns<T = void>(parameters: Parameters.ResetColumns | string, callback?: never): Promise<T>;\n  async resetColumns<T = void>(\n    parameters: Parameters.ResetColumns | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${id}/columns`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Add a filter as a favorite for the user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, the user can only favorite:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async setFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.SetFavouriteForFilter | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Add a filter as a favorite for the user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, the user can only favorite:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async setFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.SetFavouriteForFilter | string,\n    callback?: never,\n  ): Promise<T>;\n  async setFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.SetFavouriteForFilter | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${id}/favourite`,\n      method: 'PUT',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a filter as a favorite for the user. Note that this operation only removes filters visible to the user from\n   * the user's favorites list. For example, if the user favorites a public filter that is subsequently made private\n   * (and is therefore no longer visible on their favorites list) they cannot remove it from their favorites list.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async deleteFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.DeleteFavouriteForFilter | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a filter as a favorite for the user. Note that this operation only removes filters visible to the user from\n   * the user's favorites list. For example, if the user favorites a public filter that is subsequently made private\n   * (and is therefore no longer visible on their favorites list) they cannot remove it from their favorites list.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async deleteFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.DeleteFavouriteForFilter | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteFavouriteForFilter<T = Models.Filter>(\n    parameters: Parameters.DeleteFavouriteForFilter | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${id}/favourite`,\n      method: 'DELETE',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the owner of the filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira. However, the user must own the filter or have the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async changeFilterOwner<T = void>(parameters: Parameters.ChangeFilterOwner, callback: Callback<T>): Promise<void>;\n  /**\n   * Changes the owner of the filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira. However, the user must own the filter or have the _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async changeFilterOwner<T = void>(parameters: Parameters.ChangeFilterOwner, callback?: never): Promise<T>;\n  async changeFilterOwner<T = void>(\n    parameters: Parameters.ChangeFilterOwner,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${parameters.id}/owner`,\n      method: 'PUT',\n      data: {\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class FilterSharing {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the default sharing settings for new filters and dashboards for a user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getDefaultShareScope<T = Models.DefaultShareScope>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the default sharing settings for new filters and dashboards for a user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getDefaultShareScope<T = Models.DefaultShareScope>(callback?: never): Promise<T>;\n  async getDefaultShareScope<T = Models.DefaultShareScope>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/filter/defaultShareScope',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the default sharing for new filters and dashboards for a user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async setDefaultShareScope<T = Models.DefaultShareScope>(\n    parameters: Parameters.SetDefaultShareScope | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the default sharing for new filters and dashboards for a user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async setDefaultShareScope<T = Models.DefaultShareScope>(\n    parameters: Parameters.SetDefaultShareScope | string,\n    callback?: never,\n  ): Promise<T>;\n  async setDefaultShareScope<T = Models.DefaultShareScope>(\n    parameters: Parameters.SetDefaultShareScope | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const scope = typeof parameters === 'string' ? parameters : parameters.scope;\n\n    const config: RequestConfig = {\n      url: '/rest/api/3/filter/defaultShareScope',\n      method: 'PUT',\n      data: {\n        scope,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the share permissions for a filter. A filter can be shared with groups, projects, all logged-in users, or\n   * the public. Sharing with all logged-in users or the public is known as a global share permission.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, share permissions are only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getSharePermissions<T = Models.SharePermission[]>(\n    parameters: Parameters.GetSharePermissions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the share permissions for a filter. A filter can be shared with groups, projects, all logged-in users, or\n   * the public. Sharing with all logged-in users or the public is known as a global share permission.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, share permissions are only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getSharePermissions<T = Models.SharePermission[]>(\n    parameters: Parameters.GetSharePermissions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getSharePermissions<T = Models.SharePermission[]>(\n    parameters: Parameters.GetSharePermissions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${id}/permission`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Add a share permissions to a filter. If you add a global share permission (one for all logged-in users or the\n   * public) it will overwrite all share permissions for the filter.\n   *\n   * Be aware that this operation uses different objects for updating share permissions compared to [Update\n   * filter](#api-rest-api-3-filter-id-put).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Share\n   * dashboards and filters_ [global permission](https://confluence.atlassian.com/x/x4dKLg) and the user must own the\n   * filter.\n   */\n  async addSharePermission<T = Models.SharePermission[]>(\n    parameters: Parameters.AddSharePermission,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Add a share permissions to a filter. If you add a global share permission (one for all logged-in users or the\n   * public) it will overwrite all share permissions for the filter.\n   *\n   * Be aware that this operation uses different objects for updating share permissions compared to [Update\n   * filter](#api-rest-api-3-filter-id-put).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Share\n   * dashboards and filters_ [global permission](https://confluence.atlassian.com/x/x4dKLg) and the user must own the\n   * filter.\n   */\n  async addSharePermission<T = Models.SharePermission[]>(\n    parameters: Parameters.AddSharePermission,\n    callback?: never,\n  ): Promise<T>;\n  async addSharePermission<T = Models.SharePermission[]>(\n    parameters: Parameters.AddSharePermission,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${parameters.id}/permission`,\n      method: 'POST',\n      data: {\n        accountId: parameters.accountId,\n        groupId: parameters.groupId,\n        groupname: parameters.groupname,\n        projectId: parameters.projectId,\n        projectRoleId: parameters.projectRoleId,\n        rights: parameters.rights,\n        type: parameters.type,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a share permission for a filter. A filter can be shared with groups, projects, all logged-in users, or the\n   * public. Sharing with all logged-in users or the public is known as a global share permission.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, a share permission is only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getSharePermission<T = Models.SharePermission>(\n    parameters: Parameters.GetSharePermission,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a share permission for a filter. A filter can be shared with groups, projects, all logged-in users, or the\n   * public. Sharing with all logged-in users or the public is known as a global share permission.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, a share permission is only returned for:\n   *\n   * - Filters owned by the user.\n   * - Filters shared with a group that the user is a member of.\n   * - Filters shared with a private project that the user has _Browse projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.\n   * - Filters shared with a public project.\n   * - Filters shared with the public.\n   */\n  async getSharePermission<T = Models.SharePermission>(\n    parameters: Parameters.GetSharePermission,\n    callback?: never,\n  ): Promise<T>;\n  async getSharePermission<T = Models.SharePermission>(\n    parameters: Parameters.GetSharePermission,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${parameters.id}/permission/${parameters.permissionId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a share permission from a filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira and the user must own the filter.\n   */\n  async deleteSharePermission<T = void>(\n    parameters: Parameters.DeleteSharePermission,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a share permission from a filter.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira and the user must own the filter.\n   */\n  async deleteSharePermission<T = void>(parameters: Parameters.DeleteSharePermission, callback?: never): Promise<T>;\n  async deleteSharePermission<T = void>(\n    parameters: Parameters.DeleteSharePermission,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/filter/${parameters.id}/permission/${parameters.permissionId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class GroupAndUserPicker {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of users and groups matching a string. The string is used:\n   *\n   * - For users, to find a case-insensitive match with display name and e-mail address. Note that if a user has hidden\n   *   their email address in their user profile, partial matches of the email address will not find the user. An exact\n   *   match is required.\n   * - For groups, to find a case-sensitive match with group name.\n   *\n   * For example, if the string _tin_ is used, records with the display name _Tina_, email address\n   * _sarah@tinplatetraining.com_, and the group _accounting_ would be returned.\n   *\n   * Optionally, the search can be refined to:\n   *\n   * - The projects and issue types associated with a custom field, such as a user picker. The search can then be further\n   *   refined to return only users and groups that have permission to view specific:\n   *\n   *   - Projects.\n   *   - Issue types.\n   *\n   *   If multiple projects or issue types are specified, they must be a subset of those enabled for the custom field or\n   *   no results are returned. For example, if a field is enabled for projects A, B, and C then the search could be\n   *   limited to projects B and C. However, if the search is limited to projects B and D, nothing is returned.\n   * - Not return Connect app users and groups.\n   * - Return groups that have a case-insensitive match with the query.\n   *\n   * The primary use case for this resource is to populate a picker field suggestion list with users or groups. To this\n   * end, the returned object includes an `html` field for each list. This field highlights the matched query term in\n   * the item name with the HTML strong tag. Also, each list is wrapped in a response object that contains a header for\n   * use in a picker, specifically _Showing X of Y matching groups_.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async findUsersAndGroups<T = Models.FoundUsersAndGroups>(\n    parameters: Parameters.FindUsersAndGroups,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users and groups matching a string. The string is used:\n   *\n   * - For users, to find a case-insensitive match with display name and e-mail address. Note that if a user has hidden\n   *   their email address in their user profile, partial matches of the email address will not find the user. An exact\n   *   match is required.\n   * - For groups, to find a case-sensitive match with group name.\n   *\n   * For example, if the string _tin_ is used, records with the display name _Tina_, email address\n   * _sarah@tinplatetraining.com_, and the group _accounting_ would be returned.\n   *\n   * Optionally, the search can be refined to:\n   *\n   * - The projects and issue types associated with a custom field, such as a user picker. The search can then be further\n   *   refined to return only users and groups that have permission to view specific:\n   *\n   *   - Projects.\n   *   - Issue types.\n   *\n   *   If multiple projects or issue types are specified, they must be a subset of those enabled for the custom field or\n   *   no results are returned. For example, if a field is enabled for projects A, B, and C then the search could be\n   *   limited to projects B and C. However, if the search is limited to projects B and D, nothing is returned.\n   * - Not return Connect app users and groups.\n   * - Return groups that have a case-insensitive match with the query.\n   *\n   * The primary use case for this resource is to populate a picker field suggestion list with users or groups. To this\n   * end, the returned object includes an `html` field for each list. This field highlights the matched query term in\n   * the item name with the HTML strong tag. Also, each list is wrapped in a response object that contains a header for\n   * use in a picker, specifically _Showing X of Y matching groups_.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async findUsersAndGroups<T = Models.FoundUsersAndGroups>(\n    parameters: Parameters.FindUsersAndGroups,\n    callback?: never,\n  ): Promise<T>;\n  async findUsersAndGroups<T = Models.FoundUsersAndGroups>(\n    parameters: Parameters.FindUsersAndGroups,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/groupuserpicker',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        maxResults: parameters.maxResults,\n        showAvatar: parameters.showAvatar,\n        fieldId: parameters.fieldId,\n        projectId: parameters.projectId,\n        issueTypeId: parameters.issueTypeId,\n        avatarSize: parameters.avatarSize,\n        caseInsensitive: parameters.caseInsensitive,\n        excludeConnectAddons: parameters.excludeConnectAddons,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Groups {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async createGroup<T = Models.Group>(parameters: Parameters.CreateGroup, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async createGroup<T = Models.Group>(parameters: Parameters.CreateGroup, callback?: never): Promise<T>;\n  async createGroup<T = Models.Group>(parameters: Parameters.CreateGroup, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/group',\n      method: 'POST',\n      data: parameters,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ strategic [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeGroup<T = string>(parameters: Parameters.RemoveGroup, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ strategic [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeGroup<T = string>(parameters: Parameters.RemoveGroup, callback?: never): Promise<T>;\n  async removeGroup<T = string>(parameters: Parameters.RemoveGroup, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/group',\n      method: 'DELETE',\n      params: {\n        groupname: parameters.groupname,\n        groupId: parameters.groupId,\n        swapGroup: parameters.swapGroup,\n        swapGroupId: parameters.swapGroupId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * groups.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async bulkGetGroups<T = Models.PageGroupDetails>(\n    parameters: Parameters.BulkGetGroups | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * groups.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async bulkGetGroups<T = Models.PageGroupDetails>(parameters?: Parameters.BulkGetGroups, callback?: never): Promise<T>;\n  async bulkGetGroups<T = Models.PageGroupDetails>(\n    parameters?: Parameters.BulkGetGroups,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/group/bulk',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        groupId: parameters?.groupId,\n        groupName: parameters?.groupName,\n        accessType: parameters?.accessType,\n        applicationKey: parameters?.applicationKey,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * users in a group.\n   *\n   * Note that users are ordered by username, however the username is not returned in the results due to privacy\n   * reasons.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Browse users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUsersFromGroup<T = Models.PageUserDetails>(\n    parameters: Parameters.GetUsersFromGroup,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * users in a group.\n   *\n   * Note that users are ordered by username, however the username is not returned in the results due to privacy\n   * reasons.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Browse users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUsersFromGroup<T = Models.PageUserDetails>(\n    parameters: Parameters.GetUsersFromGroup,\n    callback?: never,\n  ): Promise<T>;\n  async getUsersFromGroup<T = Models.PageUserDetails>(\n    parameters: Parameters.GetUsersFromGroup,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/group/member',\n      method: 'GET',\n      params: {\n        groupname: parameters.groupname,\n        groupId: parameters.groupId,\n        includeInactiveUsers: parameters.includeInactiveUsers,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a user to a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async addUserToGroup<T = Models.Group>(parameters: Parameters.AddUserToGroup, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds a user to a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async addUserToGroup<T = Models.Group>(parameters: Parameters.AddUserToGroup, callback?: never): Promise<T>;\n  async addUserToGroup<T = Models.Group>(\n    parameters: Parameters.AddUserToGroup,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/group/user',\n      method: 'POST',\n      params: {\n        groupname: parameters.groupname,\n        groupId: parameters.groupId,\n      },\n      data: {\n        accountId: parameters.accountId,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a user from a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeUserFromGroup<T = unknown>(\n    parameters: Parameters.RemoveUserFromGroup,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a user from a group.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Site\n   * administration (that is, member of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeUserFromGroup<T = unknown>(parameters: Parameters.RemoveUserFromGroup, callback?: never): Promise<T>;\n  async removeUserFromGroup<T = unknown>(\n    parameters: Parameters.RemoveUserFromGroup,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/group/user',\n      method: 'DELETE',\n      params: {\n        groupname: parameters.groupname,\n        groupId: parameters.groupId,\n        username: parameters.username,\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of groups whose names contain a query string. A list of group names can be provided to exclude\n   * groups from the results.\n   *\n   * The primary use case for this resource is to populate a group picker suggestions list. To this end, the returned\n   * object includes the `html` field where the matched query term is highlighted in the group name with the HTML strong\n   * tag. Also, the groups list is wrapped in a response object that contains a header for use in the picker,\n   * specifically _Showing X of Y matching groups_.\n   *\n   * The list returns with the groups sorted. If no groups match the list criteria, an empty list is returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg). Anonymous calls and calls by users\n   * without the required permission return an empty list.\n   *\n   * _Browse users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Without this permission,\n   * calls where query is not an exact match to an existing group will return an empty list.\n   */\n  async findGroups<T = Models.FoundGroups>(\n    parameters: Parameters.FindGroups | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of groups whose names contain a query string. A list of group names can be provided to exclude\n   * groups from the results.\n   *\n   * The primary use case for this resource is to populate a group picker suggestions list. To this end, the returned\n   * object includes the `html` field where the matched query term is highlighted in the group name with the HTML strong\n   * tag. Also, the groups list is wrapped in a response object that contains a header for use in the picker,\n   * specifically _Showing X of Y matching groups_.\n   *\n   * The list returns with the groups sorted. If no groups match the list criteria, an empty list is returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg). Anonymous calls and calls by users\n   * without the required permission return an empty list.\n   *\n   * _Browse users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Without this permission,\n   * calls where query is not an exact match to an existing group will return an empty list.\n   */\n  async findGroups<T = Models.FoundGroups>(parameters?: Parameters.FindGroups, callback?: never): Promise<T>;\n  async findGroups<T = Models.FoundGroups>(\n    parameters?: Parameters.FindGroups,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/groups/picker',\n      method: 'GET',\n      params: {\n        query: parameters?.query,\n        exclude: parameters?.exclude,\n        excludeId: parameters?.excludeId,\n        maxResults: parameters?.maxResults,\n        caseInsensitive: parameters?.caseInsensitive,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type { Callback } from '../callback';\nimport type { Client } from '../clients';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class InstanceInformation {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns licensing information about the Jira instance.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   *\n   * @deprecated This method is deprecated and will be removed in a future version. Please use an alternative method.\n   */\n  async getLicense<T = Models.License>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns licensing information about the Jira instance.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   *\n   * @deprecated This method is deprecated and will be removed in a future version. Please use an alternative method.\n   */\n  async getLicense<T = Models.License>(callback?: never): Promise<T>;\n  async getLicense<T = Models.License>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/instance/license',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type { Mime } from 'mime';\nimport mime from 'mime';\nimport type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueAttachments {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the contents of an attachment. A `Range` header can be set to define a range of bytes within the attachment\n   * to download. See the [HTTP Range header standard](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range)\n   * for details.\n   *\n   * To return a thumbnail of the attachment, use [Get attachment\n   * thumbnail](#api-rest-api-3-attachment-thumbnail-id-get).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachmentContent<T = Buffer>(\n    parameters: Parameters.GetAttachmentContent | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the contents of an attachment. A `Range` header can be set to define a range of bytes within the attachment\n   * to download. See the [HTTP Range header standard](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Range)\n   * for details.\n   *\n   * To return a thumbnail of the attachment, use [Get attachment\n   * thumbnail](#api-rest-api-3-attachment-thumbnail-id-get).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachmentContent<T = Buffer>(\n    parameters: Parameters.GetAttachmentContent | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAttachmentContent<T = Buffer>(\n    parameters: Parameters.GetAttachmentContent | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/attachment/content/${id}`,\n      method: 'GET',\n      params: {\n        redirect: typeof parameters !== 'string' && parameters.redirect,\n      },\n      responseType: 'arraybuffer',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the attachment settings, that is, whether attachments are enabled and the maximum attachment size allowed.\n   *\n   * Note that there are also [project permissions](https://confluence.atlassian.com/x/yodKLg) that restrict whether\n   * users can create and delete attachments.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAttachmentMeta<T = Models.AttachmentSettings>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the attachment settings, that is, whether attachments are enabled and the maximum attachment size allowed.\n   *\n   * Note that there are also [project permissions](https://confluence.atlassian.com/x/yodKLg) that restrict whether\n   * users can create and delete attachments.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAttachmentMeta<T = Models.AttachmentSettings>(callback?: never): Promise<T>;\n  async getAttachmentMeta<T = Models.AttachmentSettings>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/attachment/meta',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the thumbnail of an attachment.\n   *\n   * To return the attachment contents, use [Get attachment content](#api-rest-api-3-attachment-content-id-get).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachmentThumbnail<T = Buffer>(\n    parameters: Parameters.GetAttachmentThumbnail | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the thumbnail of an attachment.\n   *\n   * To return the attachment contents, use [Get attachment content](#api-rest-api-3-attachment-content-id-get).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachmentThumbnail<T = Buffer>(\n    parameters: Parameters.GetAttachmentThumbnail | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAttachmentThumbnail<T = Buffer>(\n    parameters: Parameters.GetAttachmentThumbnail | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/attachment/thumbnail/${id}`,\n      method: 'GET',\n      params: {\n        redirect: typeof parameters !== 'string' && parameters.redirect,\n        fallbackToDefault: typeof parameters !== 'string' && parameters.fallbackToDefault,\n        width: typeof parameters !== 'string' && parameters.width,\n        height: typeof parameters !== 'string' && parameters.height,\n      },\n      responseType: 'arraybuffer',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the metadata for an attachment. Note that the attachment itself is not returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachment<T = Models.AttachmentMetadata>(\n    parameters: Parameters.GetAttachment | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the metadata for an attachment. Note that the attachment itself is not returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async getAttachment<T = Models.AttachmentMetadata>(\n    parameters: Parameters.GetAttachment | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAttachment<T = Models.AttachmentMetadata>(\n    parameters: Parameters.GetAttachment | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/attachment/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an attachment from an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** For the\n   * project holding the issue containing the attachment:\n   *\n   * - _Delete own attachments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment\n   *   created by the calling user.\n   * - _Delete all attachments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment\n   *   created by any user.\n   */\n  async removeAttachment<T = void>(\n    parameters: Parameters.RemoveAttachment | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an attachment from an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** For the\n   * project holding the issue containing the attachment:\n   *\n   * - _Delete own attachments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment\n   *   created by the calling user.\n   * - _Delete all attachments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete an attachment\n   *   created by any user.\n   */\n  async removeAttachment<T = void>(parameters: Parameters.RemoveAttachment | string, callback?: never): Promise<T>;\n  async removeAttachment<T = void>(\n    parameters: Parameters.RemoveAttachment | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/attachment/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the metadata for the contents of an attachment, if it is an archive, and metadata for the attachment\n   * itself. For example, if the attachment is a ZIP archive, then information about the files in the archive is\n   * returned and metadata for the ZIP archive. Currently, only the ZIP archive format is supported.\n   *\n   * Use this operation to retrieve data that is presented to the user, as this operation returns the metadata for the\n   * attachment itself, such as the attachment's ID and name. Otherwise, use [ Get contents metadata for an expanded\n   * attachment](#api-rest-api-3-attachment-id-expand-raw-get), which only returns the metadata for the attachment's\n   * contents.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async expandAttachmentForHumans<T = Models.AttachmentArchiveMetadataReadable>(\n    parameters: Parameters.ExpandAttachmentForHumans | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the metadata for the contents of an attachment, if it is an archive, and metadata for the attachment\n   * itself. For example, if the attachment is a ZIP archive, then information about the files in the archive is\n   * returned and metadata for the ZIP archive. Currently, only the ZIP archive format is supported.\n   *\n   * Use this operation to retrieve data that is presented to the user, as this operation returns the metadata for the\n   * attachment itself, such as the attachment's ID and name. Otherwise, use [ Get contents metadata for an expanded\n   * attachment](#api-rest-api-3-attachment-id-expand-raw-get), which only returns the metadata for the attachment's\n   * contents.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async expandAttachmentForHumans<T = Models.AttachmentArchiveMetadataReadable>(\n    parameters: Parameters.ExpandAttachmentForHumans | string,\n    callback?: never,\n  ): Promise<T>;\n  async expandAttachmentForHumans<T = Models.AttachmentArchiveMetadataReadable>(\n    parameters: Parameters.ExpandAttachmentForHumans | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/attachment/${id}/expand/human`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the metadata for the contents of an attachment, if it is an archive. For example, if the attachment is a\n   * ZIP archive, then information about the files in the archive is returned. Currently, only the ZIP archive format is\n   * supported.\n   *\n   * Use this operation if you are processing the data without presenting it to the user, as this operation only returns\n   * the metadata for the contents of the attachment. Otherwise, to retrieve data to present to the user, use [ Get all\n   * metadata for an expanded attachment](#api-rest-api-3-attachment-id-expand-human-get) which also returns the\n   * metadata for the attachment itself, such as the attachment's ID and name.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async expandAttachmentForMachines<T = Models.AttachmentArchiveImpl>(\n    parameters: Parameters.ExpandAttachmentForMachines | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the metadata for the contents of an attachment, if it is an archive. For example, if the attachment is a\n   * ZIP archive, then information about the files in the archive is returned. Currently, only the ZIP archive format is\n   * supported.\n   *\n   * Use this operation if you are processing the data without presenting it to the user, as this operation only returns\n   * the metadata for the contents of the attachment. Otherwise, to retrieve data to present to the user, use [ Get all\n   * metadata for an expanded attachment](#api-rest-api-3-attachment-id-expand-human-get) which also returns the\n   * metadata for the attachment itself, such as the attachment's ID and name.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** For the\n   * issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If attachments are added in private comments, the comment-level restriction will be applied.\n   */\n  async expandAttachmentForMachines<T = Models.AttachmentArchiveImpl>(\n    parameters: Parameters.ExpandAttachmentForMachines | string,\n    callback?: never,\n  ): Promise<T>;\n  async expandAttachmentForMachines<T = Models.AttachmentArchiveImpl>(\n    parameters: Parameters.ExpandAttachmentForMachines | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/attachment/${id}/expand/raw`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds one or more attachments to an issue. Attachments are posted as multipart/form-data ([RFC\n   * 1867](https://www.ietf.org/rfc/rfc1867.txt)).\n   *\n   * Note that:\n   *\n   * - The request must have a `X-Atlassian-Token: no-check` header, if not it is blocked. See [Special\n   *   headers](#special-request-headers) for more information.\n   * - The name of the multipart/form-data parameter that contains the attachments must be `file`.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ and _Create attachments_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addAttachment<T = Models.Attachment[]>(\n    parameters: Parameters.AddAttachment,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds one or more attachments to an issue. Attachments are posted as multipart/form-data ([RFC\n   * 1867](https://www.ietf.org/rfc/rfc1867.txt)).\n   *\n   * Note that:\n   *\n   * - The request must have a `X-Atlassian-Token: no-check` header, if not it is blocked. See [Special\n   *   headers](#special-request-headers) for more information.\n   * - The name of the multipart/form-data parameter that contains the attachments must be `file`.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ and _Create attachments_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addAttachment<T = Models.Attachment[]>(parameters: Parameters.AddAttachment, callback?: never): Promise<T>;\n  async addAttachment<T = Models.Attachment[]>(\n    parameters: Parameters.AddAttachment,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const formData = new FormData();\n    const attachments = Array.isArray(parameters.attachment) ? parameters.attachment : [parameters.attachment];\n\n    // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n    let Readable: typeof import('stream').Readable | undefined;\n\n    if (typeof window === 'undefined') {\n      const { Readable: NodeReadable } = await import('stream');\n\n      Readable = NodeReadable;\n    }\n\n    for (const attachment of attachments) {\n      const file = await this._convertToFile(attachment, mime, Readable);\n\n      if (!(file instanceof File || file instanceof Blob)) {\n        throw new Error(`Unsupported file type for attachment: ${typeof file}`);\n      }\n\n      formData.append('file', file, attachment.filename);\n    }\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/attachments`,\n      method: 'POST',\n      headers: {\n        'X-Atlassian-Token': 'no-check',\n        'Content-Type': 'multipart/form-data',\n      },\n      data: formData,\n      maxBodyLength: Infinity,\n      maxContentLength: Infinity,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  private async _convertToFile(\n    attachment: Parameters.Attachment,\n    mime: Mime,\n    // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n    Readable?: typeof import('stream').Readable,\n  ): Promise<File | Blob> {\n    const mimeType = attachment.mimeType ?? (mime.getType(attachment.filename) || undefined);\n\n    if (attachment.file instanceof Blob || attachment.file instanceof File) {\n      return attachment.file;\n    }\n\n    if (typeof attachment.file === 'string') {\n      return new File([attachment.file], attachment.filename, { type: mimeType });\n    }\n\n    if (Readable && attachment.file instanceof Readable) {\n      return this._streamToBlob(attachment.file, attachment.filename, mimeType);\n    }\n\n    if (attachment.file instanceof ReadableStream) {\n      return this._streamToBlob(attachment.file, attachment.filename, mimeType);\n    }\n\n    if (ArrayBuffer.isView(attachment.file) || attachment.file instanceof ArrayBuffer) {\n      return new File([attachment.file], attachment.filename, { type: mimeType });\n    }\n\n    throw new Error('Unsupported attachment file type.');\n  }\n\n  private async _streamToBlob(\n    // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n    stream: import('stream').Readable | ReadableStream,\n    filename: string,\n    mimeType?: string,\n  ): Promise<File> {\n    if (typeof window === 'undefined' && stream instanceof (await import('stream')).Readable) {\n      return new Promise((resolve, reject) => {\n        const chunks: Uint8Array[] = [];\n\n        stream.on('data', chunk => chunks.push(chunk));\n        stream.on('end', () => {\n          const blob = new Blob(chunks, { type: mimeType });\n\n          resolve(new File([blob], filename, { type: mimeType }));\n        });\n        stream.on('error', reject);\n      });\n    }\n\n    if (stream instanceof ReadableStream) {\n      const reader = stream.getReader();\n      const chunks: Uint8Array[] = [];\n\n      let done = false;\n\n      while (!done) {\n        const { value, done: streamDone } = await reader.read();\n\n        if (value) chunks.push(value);\n        done = streamDone;\n      }\n\n      const blob = new Blob(chunks, { type: mimeType });\n\n      return new File([blob], filename, { type: mimeType });\n    }\n\n    throw new Error('Unsupported stream type.');\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueBulkOperations {\n  constructor(private client: Client) {}\n\n  /**\n   * Use this API to submit a bulk delete request. You can delete up to 1,000 issues in a single operation.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Delete [issues\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Delete-issues/)\n   *   in all projects that contain the selected issues.\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkDelete<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkDelete,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Use this API to submit a bulk delete request. You can delete up to 1,000 issues in a single operation.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Delete [issues\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Delete-issues/)\n   *   in all projects that contain the selected issues.\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkDelete<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkDelete,\n    callback?: never,\n  ): Promise<T>;\n  async submitBulkDelete<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkDelete,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/bulk/issues/delete',\n      method: 'POST',\n      data: {\n        selectedIssueIdsOrKeys: parameters.selectedIssueIdsOrKeys,\n        sendBulkNotification: parameters.sendBulkNotification,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Use this API to get a list of fields visible to the user to perform bulk edit operations. You can pass single or\n   * multiple issues in the query to get eligible editable fields. This API uses pagination to return responses,\n   * delivering 50 fields at a time.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - Depending on the field, any field-specific permissions required to edit it.\n   */\n  async getBulkEditableFields<T = Models.BulkEditGetFields>(\n    parameters: Parameters.GetBulkEditableFields,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Use this API to get a list of fields visible to the user to perform bulk edit operations. You can pass single or\n   * multiple issues in the query to get eligible editable fields. This API uses pagination to return responses,\n   * delivering 50 fields at a time.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - Depending on the field, any field-specific permissions required to edit it.\n   */\n  async getBulkEditableFields<T = Models.BulkEditGetFields>(\n    parameters: Parameters.GetBulkEditableFields,\n    callback?: never,\n  ): Promise<T>;\n  async getBulkEditableFields<T = Models.BulkEditGetFields>(\n    parameters: Parameters.GetBulkEditableFields,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/bulk/issues/fields',\n      method: 'GET',\n      params: {\n        issueIdsOrKeys: parameters.issueIdsOrKeys,\n        searchText: parameters.searchText,\n        endingBefore: parameters.endingBefore,\n        startingAfter: parameters.startingAfter,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Use this API to submit a bulk edit request and simultaneously edit multiple issues. There are limits applied to the\n   * number of issues and fields that can be edited. A single request can accommodate a maximum of 1000 issues\n   * (including subtasks) and 200 fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - Edit [issues permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/)\n   *   in all projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkEdit<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkEdit,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Use this API to submit a bulk edit request and simultaneously edit multiple issues. There are limits applied to the\n   * number of issues and fields that can be edited. A single request can accommodate a maximum of 1000 issues\n   * (including subtasks) and 200 fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - Edit [issues permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/)\n   *   in all projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkEdit<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkEdit,\n    callback?: never,\n  ): Promise<T>;\n  async submitBulkEdit<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkEdit,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/bulk/issues/fields',\n      method: 'POST',\n      data: {\n        editedFieldsInput: parameters.editedFieldsInput,\n        selectedActions: parameters.selectedActions,\n        selectedIssueIdsOrKeys: parameters.selectedIssueIdsOrKeys,\n        sendBulkNotification: parameters.sendBulkNotification,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Use this API to submit a bulk issue move request. You can move multiple issues, but they must all be moved to and\n   * from a single project, issue type, and parent. You can't move more than 1000 issues (including subtasks) at once.\n   *\n   * #### Scenarios:\n   *\n   * This is an early version of the API and it doesn't have full feature parity with the Bulk Move UI experience.\n   *\n   * - Moving issue of type A to issue of type B in the same project or a different project: `SUPPORTED`\n   * - Moving multiple issues of type A in one project to multiple issues of type B in the same project or a different\n   *   project: **`SUPPORTED`**\n   * - Moving a standard parent issue of type A with its multiple subtask issue types in one project to standard issue of\n   *   type B and multiple subtask issue types in the same project or a different project: `SUPPORTED`\n   * - Moving an epic issue with its child issues to a different project without losing their relation: `NOT SUPPORTED`\\\n   *   (Workaround: Move them individually and stitch the relationship back with the Bulk Edit API)\n   *\n   * #### Limits applied to bulk issue moves:\n   *\n   * When using the bulk move, keep in mind that there are limits on the number of issues and fields you can include.\n   *\n   * - You can move up to 1,000 issues in a single operation, including any subtasks.\n   * - All issues must originate from the same project and share the same issue type and parent.\n   * - The total combined number of fields across all issues must not exceed 1,500,000. For example, if each issue\n   *   includes 15,000 fields, then the maximum number of issues that can be moved is 100.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Move [issues permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/)\n   *   in source projects.\n   * - Create [issues\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in\n   *   destination projects.\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in\n   *   destination projects, if moving subtasks only.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkMove<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkMove,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Use this API to submit a bulk issue move request. You can move multiple issues, but they must all be moved to and\n   * from a single project, issue type, and parent. You can't move more than 1000 issues (including subtasks) at once.\n   *\n   * #### Scenarios:\n   *\n   * This is an early version of the API and it doesn't have full feature parity with the Bulk Move UI experience.\n   *\n   * - Moving issue of type A to issue of type B in the same project or a different project: `SUPPORTED`\n   * - Moving multiple issues of type A in one project to multiple issues of type B in the same project or a different\n   *   project: **`SUPPORTED`**\n   * - Moving a standard parent issue of type A with its multiple subtask issue types in one project to standard issue of\n   *   type B and multiple subtask issue types in the same project or a different project: `SUPPORTED`\n   * - Moving an epic issue with its child issues to a different project without losing their relation: `NOT SUPPORTED`\\\n   *   (Workaround: Move them individually and stitch the relationship back with the Bulk Edit API)\n   *\n   * #### Limits applied to bulk issue moves:\n   *\n   * When using the bulk move, keep in mind that there are limits on the number of issues and fields you can include.\n   *\n   * - You can move up to 1,000 issues in a single operation, including any subtasks.\n   * - All issues must originate from the same project and share the same issue type and parent.\n   * - The total combined number of fields across all issues must not exceed 1,500,000. For example, if each issue\n   *   includes 15,000 fields, then the maximum number of issues that can be moved is 100.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Move [issues permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/)\n   *   in source projects.\n   * - Create [issues\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in\n   *   destination projects.\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in\n   *   destination projects, if moving subtasks only.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkMove<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkMove,\n    callback?: never,\n  ): Promise<T>;\n  async submitBulkMove<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkMove,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/bulk/issues/move',\n      method: 'POST',\n      data: {\n        sendBulkNotification: parameters.sendBulkNotification,\n        targetToSourcesMapping: parameters.targetToSourcesMapping,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Use this API to retrieve a list of transitions available for the specified issues that can be used or bulk\n   * transition operations. You can submit either single or multiple issues in the query to obtain the available\n   * transitions.\n   *\n   * The response will provide the available transitions for issues, organized by their respective workflows. **Only the\n   * transitions that are common among the issues within that workflow and do not involve any additional field updates\n   * will be included.** For bulk transitions that require additional field updates, please utilise the Jira Cloud UI.\n   *\n   * You can request available transitions for up to 1,000 issues in a single operation. This API uses pagination to\n   * return responses, delivering 50 workflows at a time.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Transition [issues\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Transition-issues/)\n   *   in all projects that contain the selected issues.\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getAvailableTransitions<T = Models.BulkTransitionGetAvailableTransitions>(\n    parameters: Parameters.GetAvailableTransitions,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Use this API to retrieve a list of transitions available for the specified issues that can be used or bulk\n   * transition operations. You can submit either single or multiple issues in the query to obtain the available\n   * transitions.\n   *\n   * The response will provide the available transitions for issues, organized by their respective workflows. **Only the\n   * transitions that are common among the issues within that workflow and do not involve any additional field updates\n   * will be included.** For bulk transitions that require additional field updates, please utilise the Jira Cloud UI.\n   *\n   * You can request available transitions for up to 1,000 issues in a single operation. This API uses pagination to\n   * return responses, delivering 50 workflows at a time.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Transition [issues\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Transition-issues/)\n   *   in all projects that contain the selected issues.\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getAvailableTransitions<T = Models.BulkTransitionGetAvailableTransitions>(\n    parameters: Parameters.GetAvailableTransitions,\n    callback?: never,\n  ): Promise<T>;\n  async getAvailableTransitions<T = Models.BulkTransitionGetAvailableTransitions>(\n    parameters: Parameters.GetAvailableTransitions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/bulk/issues/transition',\n      method: 'GET',\n      params: {\n        issueIdsOrKeys: parameters.issueIdsOrKeys,\n        endingBefore: parameters.endingBefore,\n        startingAfter: parameters.startingAfter,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Use this API to submit a bulk issue status transition request. You can transition multiple issues, alongside with\n   * their valid transition Ids. You can transition up to 1,000 issues in a single operation.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Transition [issues\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Transition-issues/)\n   *   in all projects that contain the selected issues.\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkTransition<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkTransition,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Use this API to submit a bulk issue status transition request. You can transition multiple issues, alongside with\n   * their valid transition Ids. You can transition up to 1,000 issues in a single operation.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Transition [issues\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Transition-issues/)\n   *   in all projects that contain the selected issues.\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkTransition<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkTransition,\n    callback?: never,\n  ): Promise<T>;\n  async submitBulkTransition<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkTransition,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/bulk/issues/transition',\n      method: 'POST',\n      data: {\n        bulkTransitionInputs: parameters.bulkTransitionInputs,\n        sendBulkNotification: parameters.sendBulkNotification,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Use this API to submit a bulk unwatch request. You can unwatch up to 1,000 issues in a single operation.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkUnwatch<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkUnwatch,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Use this API to submit a bulk unwatch request. You can unwatch up to 1,000 issues in a single operation.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkUnwatch<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkUnwatch,\n    callback?: never,\n  ): Promise<T>;\n  async submitBulkUnwatch<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkUnwatch,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/bulk/issues/unwatch',\n      method: 'POST',\n      data: {\n        selectedIssueIdsOrKeys: parameters.selectedIssueIdsOrKeys,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Use this API to submit a bulk watch request. You can watch up to 1,000 issues in a single operation.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkWatch<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkWatch,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Use this API to submit a bulk watch request. You can watch up to 1,000 issues in a single operation.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   * - Browse [project\n   *   permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) in all\n   *   projects that contain the selected issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async submitBulkWatch<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkWatch,\n    callback?: never,\n  ): Promise<T>;\n  async submitBulkWatch<T = Models.SubmittedBulkOperation>(\n    parameters: Parameters.SubmitBulkWatch,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/bulk/issues/watch',\n      method: 'POST',\n      data: {\n        selectedIssueIdsOrKeys: parameters.selectedIssueIdsOrKeys,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Use this to get the progress state for the specified bulk operation `taskId`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   *\n   * If the task is running, this resource will return:\n   *\n   *     {\n   *       \"taskId\": \"10779\",\n   *       \"status\": \"RUNNING\",\n   *       \"progressPercent\": 65,\n   *       \"submittedBy\": { \"accountId\": \"5b10a2844c20165700ede21g\" },\n   *       \"created\": 1690180055963,\n   *       \"started\": 1690180056206,\n   *       \"updated\": 169018005829\n   *     }\n   *\n   * If the task has completed, then this resource will return:\n   *\n   *     {\n   *       \"processedAccessibleIssues\": [10001, 10002],\n   *       \"created\": 1709189449954,\n   *       \"progressPercent\": 100,\n   *       \"started\": 1709189450154,\n   *       \"status\": \"COMPLETE\",\n   *       \"submittedBy\": { \"accountId\": \"5b10a2844c20165700ede21g\" },\n   *       \"invalidOrInaccessibleIssueCount\": 0,\n   *       \"taskId\": \"10000\",\n   *       \"totalIssueCount\": 2,\n   *       \"updated\": 1709189450354\n   *     }\n   *\n   * **Note:** You can view task progress for up to 14 days from creation.\n   */\n  async getBulkOperationProgress<T = Models.BulkOperationProgress>(\n    parameters: Parameters.GetBulkOperationProgress,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Use this to get the progress state for the specified bulk operation `taskId`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Global bulk change\n   *   [permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-global-permissions/).\n   *\n   * If the task is running, this resource will return:\n   *\n   *     {\n   *       \"taskId\": \"10779\",\n   *       \"status\": \"RUNNING\",\n   *       \"progressPercent\": 65,\n   *       \"submittedBy\": { \"accountId\": \"5b10a2844c20165700ede21g\" },\n   *       \"created\": 1690180055963,\n   *       \"started\": 1690180056206,\n   *       \"updated\": 169018005829\n   *     }\n   *\n   * If the task has completed, then this resource will return:\n   *\n   *     {\n   *       \"processedAccessibleIssues\": [10001, 10002],\n   *       \"created\": 1709189449954,\n   *       \"progressPercent\": 100,\n   *       \"started\": 1709189450154,\n   *       \"status\": \"COMPLETE\",\n   *       \"submittedBy\": { \"accountId\": \"5b10a2844c20165700ede21g\" },\n   *       \"invalidOrInaccessibleIssueCount\": 0,\n   *       \"taskId\": \"10000\",\n   *       \"totalIssueCount\": 2,\n   *       \"updated\": 1709189450354\n   *     }\n   *\n   * **Note:** You can view task progress for up to 14 days from creation.\n   */\n  async getBulkOperationProgress<T = Models.BulkOperationProgress>(\n    parameters: Parameters.GetBulkOperationProgress,\n    callback?: never,\n  ): Promise<T>;\n  async getBulkOperationProgress<T = Models.BulkOperationProgress>(\n    parameters: Parameters.GetBulkOperationProgress,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/bulk/queue/${parameters.taskId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCommentProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the keys of all the properties of a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetCommentPropertyKeys | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all the properties of a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetCommentPropertyKeys | string,\n    callback?: never,\n  ): Promise<T>;\n  async getCommentPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetCommentPropertyKeys | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const commentId = typeof parameters === 'string' ? parameters : parameters.commentId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/comment/${commentId}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of a comment property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetCommentProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a comment property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetCommentProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getCommentProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetCommentProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/comment/${parameters.commentId}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates or updates the value of a property for a comment. Use this resource to store custom data against a comment.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Edit All Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value\n   *   of a property on any comment.\n   * - _Edit Own Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value\n   *   of a property on a comment created by the user.\n   *\n   * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or\n   * group.\n   */\n  async setCommentProperty<T = unknown>(\n    parameters: Parameters.SetCommentProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates or updates the value of a property for a comment. Use this resource to store custom data against a comment.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Edit All Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value\n   *   of a property on any comment.\n   * - _Edit Own Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to create or update the value\n   *   of a property on a comment created by the user.\n   *\n   * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or\n   * group.\n   */\n  async setCommentProperty<T = unknown>(parameters: Parameters.SetCommentProperty, callback?: never): Promise<T>;\n  async setCommentProperty<T = unknown>(\n    parameters: Parameters.SetCommentProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/comment/${parameters.commentId}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.property,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a comment property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Edit All Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from any\n   *   comment.\n   * - _Edit Own Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from a\n   *   comment created by the user.\n   *\n   * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or\n   * group.\n   */\n  async deleteCommentProperty<T = void>(\n    parameters: Parameters.DeleteCommentProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a comment property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Edit All Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from any\n   *   comment.\n   * - _Edit Own Comments_ [project permission](https://confluence.atlassian.com/x/yodKLg) to delete a property from a\n   *   comment created by the user.\n   *\n   * Also, when the visibility of a comment is restricted to a role or group the user must be a member of that role or\n   * group.\n   */\n  async deleteCommentProperty<T = void>(parameters: Parameters.DeleteCommentProperty, callback?: never): Promise<T>;\n  async deleteCommentProperty<T = void>(\n    parameters: Parameters.DeleteCommentProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/comment/${parameters.commentId}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueComments {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * comments specified by a list of comment IDs.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Comments are returned where the user:\n   *\n   * - Has _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   *   the comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentsByIds<T = Models.PageComment>(\n    parameters: Parameters.GetCommentsByIds,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * comments specified by a list of comment IDs.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Comments are returned where the user:\n   *\n   * - Has _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   *   the comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getCommentsByIds<T = Models.PageComment>(parameters: Parameters.GetCommentsByIds, callback?: never): Promise<T>;\n  async getCommentsByIds<T = Models.PageComment>(\n    parameters: Parameters.GetCommentsByIds,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/comment/list',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        ids: parameters.ids,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all comments for an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Comments are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is role visibility is\n   *   restricted to.\n   */\n  async getComments<T = Models.PageOfComments>(\n    parameters: Parameters.GetComments | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all comments for an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Comments are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is role visibility is\n   *   restricted to.\n   */\n  async getComments<T = Models.PageOfComments>(\n    parameters: Parameters.GetComments | string,\n    callback?: never,\n  ): Promise<T>;\n  async getComments<T = Models.PageOfComments>(\n    parameters: Parameters.GetComments | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const issueIdOrKey = typeof parameters === 'string' ? parameters : parameters.issueIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${issueIdOrKey}/comment`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        orderBy: typeof parameters !== 'string' && parameters.orderBy,\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a comment to an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Add comments_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addComment<T = Models.Comment>(parameters: Parameters.AddComment, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds a comment to an issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Add comments_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addComment<T = Models.Comment>(parameters: Parameters.AddComment, callback?: never): Promise<T>;\n  async addComment<T = Models.Comment>(parameters: Parameters.AddComment, callback?: Callback<T>): Promise<void | T> {\n    const body =\n      typeof parameters.comment === 'string'\n        ? {\n          type: 'doc',\n          version: 1,\n          content: [\n            {\n              type: 'paragraph',\n              content: [{ type: 'text', text: parameters.comment }],\n            },\n          ],\n        }\n        : parameters.comment;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/comment`,\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        author: parameters.author,\n        body,\n        created: parameters.created,\n        id: parameters.id,\n        jsdAuthorCanSeeRequest: parameters.jsdAuthorCanSeeRequest,\n        jsdPublic: parameters.jsdPublic,\n        properties: parameters.properties,\n        renderedBody: parameters.renderedBody,\n        self: parameters.self,\n        updateAuthor: parameters.updateAuthor,\n        updated: parameters.updated,\n        visibility: parameters.visibility,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   */\n  async getComment<T = Models.Comment>(parameters: Parameters.GetComment, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   comment.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   */\n  async getComment<T = Models.Comment>(parameters: Parameters.GetComment, callback?: never): Promise<T>;\n  async getComment<T = Models.Comment>(parameters: Parameters.GetComment, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/comment/${parameters.id}`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue\n   *   containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all comments_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any comment or _Edit\n   *   own comments_ to update comment created by the user.\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   *\n   * **WARNING:** Child comments inherit visibility from their parent comment. Attempting to update a child comment's\n   * visibility will result in a 400 (Bad Request) error.\n   */\n  async updateComment<T = Models.Comment>(parameters: Parameters.UpdateComment, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a comment.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue\n   *   containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all comments_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any comment or _Edit\n   *   own comments_ to update comment created by the user.\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   *\n   * **WARNING:** Child comments inherit visibility from their parent comment. Attempting to update a child comment's\n   * visibility will result in a 400 (Bad Request) error.\n   */\n  async updateComment<T = Models.Comment>(parameters: Parameters.UpdateComment, callback?: never): Promise<T>;\n  async updateComment<T = Models.Comment>(\n    parameters: Parameters.UpdateComment,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const body =\n      typeof parameters.body === 'string'\n        ? {\n          type: 'doc',\n          version: 1,\n          content: [\n            {\n              type: 'paragraph',\n              content: [{ type: 'text', text: parameters.body }],\n            },\n          ],\n        }\n        : parameters.body;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/comment/${parameters.id}`,\n      method: 'PUT',\n      params: {\n        notifyUsers: parameters.notifyUsers,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n        expand: parameters.expand,\n      },\n      data: {\n        body,\n        visibility: parameters.visibility,\n        properties: parameters.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue\n   *   containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all comments_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any comment or\n   *   _Delete own comments_ to delete comment created by the user,\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   */\n  async deleteComment<T = void>(parameters: Parameters.DeleteComment, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue\n   *   containing the comment is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all comments_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any comment or\n   *   _Delete own comments_ to delete comment created by the user,\n   * - If the comment has visibility restrictions, the user belongs to the group or has the role visibility is restricted\n   *   to.\n   */\n  async deleteComment<T = void>(parameters: Parameters.DeleteComment, callback?: never): Promise<T>;\n  async deleteComment<T = void>(parameters: Parameters.DeleteComment, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/comment/${parameters.id}`,\n      method: 'DELETE',\n      params: {\n        parentId: parameters.parentId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldAssociations {\n  constructor(private client: Client) {}\n\n  /**\n   * @experimental\n   * Associates fields with projects.\n   *\n   * Fields will be associated with each issue type on the requested projects.\n   *\n   * Fields will be associated with all projects that share the same field configuration which the provided projects are\n   * using. This means that while the field will be associated with the requested projects, it will also be associated\n   * with any other projects that share the same field configuration.\n   *\n   * If a success response is returned it means that the field association has been created in any applicable contexts\n   * where it wasn't already present.\n   *\n   * Up to 50 fields and up to 100 projects can be associated in a single request. If more fields or projects are\n   * provided a 400 response will be returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createAssociations<T = void>(parameters: Parameters.CreateAssociations, callback: Callback<T>): Promise<void>;\n  /**\n   * @experimental\n   * Associates fields with projects.\n   *\n   * Fields will be associated with each issue type on the requested projects.\n   *\n   * Fields will be associated with all projects that share the same field configuration which the provided projects are\n   * using. This means that while the field will be associated with the requested projects, it will also be associated\n   * with any other projects that share the same field configuration.\n   *\n   * If a success response is returned it means that the field association has been created in any applicable contexts\n   * where it wasn't already present.\n   *\n   * Up to 50 fields and up to 100 projects can be associated in a single request. If more fields or projects are\n   * provided a 400 response will be returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createAssociations<T = void>(parameters: Parameters.CreateAssociations, callback?: never): Promise<T>;\n  async createAssociations<T = void>(\n    parameters: Parameters.CreateAssociations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/field/association',\n      method: 'PUT',\n      data: {\n        associationContexts: parameters.associationContexts,\n        fields: parameters.fields,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * @experimental\n   * Unassociates a set of fields with a project and issue type context.\n   *\n   * Fields will be unassociated with all projects/issue types that share the same field configuration which the\n   * provided project and issue types are using. This means that while the field will be unassociated with the provided\n   * project and issue types, it will also be unassociated with any other projects and issue types that share the same\n   * field configuration.\n   *\n   * If a success response is returned it means that the field association has been removed in any applicable contexts\n   * where it was present.\n   *\n   * Up to 50 fields and up to 100 projects and issue types can be unassociated in a single request. If more fields or\n   * projects are provided a 400 response will be returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeAssociations<T = void>(parameters: Parameters.RemoveAssociations, callback: Callback<T>): Promise<void>;\n  /**\n   * @experimental\n   * Unassociates a set of fields with a project and issue type context.\n   *\n   * Fields will be unassociated with all projects/issue types that share the same field configuration which the\n   * provided project and issue types are using. This means that while the field will be unassociated with the provided\n   * project and issue types, it will also be unassociated with any other projects and issue types that share the same\n   * field configuration.\n   *\n   * If a success response is returned it means that the field association has been removed in any applicable contexts\n   * where it was present.\n   *\n   * Up to 50 fields and up to 100 projects and issue types can be unassociated in a single request. If more fields or\n   * projects are provided a 400 response will be returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeAssociations<T = void>(parameters: Parameters.RemoveAssociations, callback?: never): Promise<T>;\n  async removeAssociations<T = void>(\n    parameters: Parameters.RemoveAssociations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/field/association',\n      method: 'DELETE',\n      data: {\n        associationContexts: parameters.associationContexts,\n        fields: parameters.fields,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import { paramSerializer } from '../paramSerializer';\nimport type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldConfigurationApps {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * configurations for list of custom fields of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * The result can be filtered by one of these criteria:\n   *\n   * - `id`.\n   * - `fieldContextId`.\n   * - `issueId`.\n   * - `projectKeyOrId` and `issueTypeId`.\n   *\n   * Otherwise, all configurations for the provided list of custom fields are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that provided the custom field type.\n   */\n  async getCustomFieldsConfigurations<T = Models.PageBulkContextualConfiguration>(\n    parameters: Parameters.GetCustomFieldsConfigurations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * configurations for list of custom fields of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * The result can be filtered by one of these criteria:\n   *\n   * - `id`.\n   * - `fieldContextId`.\n   * - `issueId`.\n   * - `projectKeyOrId` and `issueTypeId`.\n   *\n   * Otherwise, all configurations for the provided list of custom fields are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that provided the custom field type.\n   */\n  async getCustomFieldsConfigurations<T = Models.PageBulkContextualConfiguration>(\n    parameters?: Parameters.GetCustomFieldsConfigurations,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomFieldsConfigurations<T = Models.PageBulkContextualConfiguration>(\n    parameters?: Parameters.GetCustomFieldsConfigurations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/app/field/context/configuration/list',\n      method: 'POST',\n      params: {\n        id: parameters?.id,\n        fieldContextId: paramSerializer('fieldContextId', parameters?.fieldContextId),\n        issueId: parameters?.issueId,\n        projectKeyOrId: parameters?.projectKeyOrId,\n        issueTypeId: parameters?.issueTypeId,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n      data: {\n        fieldIdsOrKeys: parameters?.fieldIdsOrKeys,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * configurations for a custom field of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * The result can be filtered by one of these criteria:\n   *\n   * - `id`.\n   * - `fieldContextId`.\n   * - `issueId`.\n   * - `projectKeyOrId` and `issueTypeId`.\n   *\n   * Otherwise, all configurations are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that provided the custom field type.\n   */\n  async getCustomFieldConfiguration<T = Models.PageContextualConfiguration>(\n    parameters: Parameters.GetCustomFieldConfiguration | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * configurations for a custom field of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * The result can be filtered by one of these criteria:\n   *\n   * - `id`.\n   * - `fieldContextId`.\n   * - `issueId`.\n   * - `projectKeyOrId` and `issueTypeId`.\n   *\n   * Otherwise, all configurations are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that provided the custom field type.\n   */\n  async getCustomFieldConfiguration<T = Models.PageContextualConfiguration>(\n    parameters: Parameters.GetCustomFieldConfiguration | string,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomFieldConfiguration<T = Models.PageContextualConfiguration>(\n    parameters: Parameters.GetCustomFieldConfiguration | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldIdOrKey = typeof parameters === 'string' ? parameters : parameters.fieldIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/app/field/${fieldIdOrKey}/context/configuration`,\n      method: 'GET',\n      params: {\n        id: typeof parameters !== 'string' && parameters.id,\n        fieldContextId: typeof parameters !== 'string' && parameters.fieldContextId,\n        issueId: typeof parameters !== 'string' && parameters.issueId,\n        projectKeyOrId: typeof parameters !== 'string' && parameters.projectKeyOrId,\n        issueTypeId: typeof parameters !== 'string' && parameters.issueTypeId,\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Update the configuration for contexts of a custom field of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that created the custom field type.\n   */\n  async updateCustomFieldConfiguration<T = unknown>(\n    parameters: Parameters.UpdateCustomFieldConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update the configuration for contexts of a custom field of a\n   * [type](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/) created\n   * by a [Forge app](https://developer.atlassian.com/platform/forge/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the Forge app that created the custom field type.\n   */\n  async updateCustomFieldConfiguration<T = unknown>(\n    parameters: Parameters.UpdateCustomFieldConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async updateCustomFieldConfiguration<T = unknown>(\n    parameters: Parameters.UpdateCustomFieldConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/app/field/${parameters.fieldIdOrKey}/context/configuration`,\n      method: 'PUT',\n      data: {\n        configurations: parameters.configurations,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldContexts {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of [\n   * contexts](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html) for a\n   * custom field. Contexts can be returned as follows:\n   *\n   * - With no other parameters set, all contexts.\n   * - By defining `id` only, all contexts from the list of IDs.\n   * - By defining `isAnyIssueType`, limit the list of contexts returned to either those that apply to all issue types\n   *   (true) or those that apply to only a subset of issue types (false)\n   * - By defining `isGlobalContext`, limit the list of contexts return to either those that apply to all projects (global\n   *   contexts) (true) or those that apply to only a subset of projects (false).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). _Edit Workflow_ [edit workflow\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Edit-Workflows)\n   */\n  async getContextsForField<T = Models.PageCustomFieldContext>(\n    parameters: Parameters.GetContextsForField | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of [\n   * contexts](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html) for a\n   * custom field. Contexts can be returned as follows:\n   *\n   * - With no other parameters set, all contexts.\n   * - By defining `id` only, all contexts from the list of IDs.\n   * - By defining `isAnyIssueType`, limit the list of contexts returned to either those that apply to all issue types\n   *   (true) or those that apply to only a subset of issue types (false)\n   * - By defining `isGlobalContext`, limit the list of contexts return to either those that apply to all projects (global\n   *   contexts) (true) or those that apply to only a subset of projects (false).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). _Edit Workflow_ [edit workflow\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Edit-Workflows)\n   */\n  async getContextsForField<T = Models.PageCustomFieldContext>(\n    parameters: Parameters.GetContextsForField | string,\n    callback?: never,\n  ): Promise<T>;\n  async getContextsForField<T = Models.PageCustomFieldContext>(\n    parameters: Parameters.GetContextsForField | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${fieldId}/context`,\n      method: 'GET',\n      params: {\n        isAnyIssueType: typeof parameters !== 'string' && parameters.isAnyIssueType,\n        isGlobalContext: typeof parameters !== 'string' && parameters.isGlobalContext,\n        contextId: typeof parameters !== 'string' && parameters.contextId,\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a custom field context.\n   *\n   * If `projectIds` is empty, a global context is created. A global context is one that applies to all project. If\n   * `issueTypeIds` is empty, the context applies to all issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomFieldContext<T = Models.CreateCustomFieldContext>(\n    parameters: Parameters.CreateCustomFieldContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a custom field context.\n   *\n   * If `projectIds` is empty, a global context is created. A global context is one that applies to all project. If\n   * `issueTypeIds` is empty, the context applies to all issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomFieldContext<T = Models.CreateCustomFieldContext>(\n    parameters: Parameters.CreateCustomFieldContext,\n    callback?: never,\n  ): Promise<T>;\n  async createCustomFieldContext<T = Models.CreateCustomFieldContext>(\n    parameters: Parameters.CreateCustomFieldContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context`,\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        id: parameters.id,\n        issueTypeIds: parameters.issueTypeIds,\n        name: parameters.name,\n        projectIds: parameters.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * defaults for a custom field. The results can be filtered by `contextId`, otherwise all values are returned. If no\n   * defaults are set for a context, nothing is returned.\\\n   * The returned object depends on type of the custom field:\n   *\n   * - `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields.\n   * - `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields.\n   * - `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio\n   *   buttons.\n   * - `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and\n   *   checkboxes.\n   * - `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists.\n   * - `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users.\n   * - `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists.\n   * - `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers.\n   * - `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group\n   *   pickers.\n   * - `CustomFieldContextDefaultValueURL` (type `url`) for URLs.\n   * - `CustomFieldContextDefaultValueProject` (type `project`) for project pickers.\n   * - `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers).\n   * - `CustomFieldContextDefaultValueLabels` (type `labels`) for labels.\n   * - `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields.\n   * - `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields.\n   * - `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields.\n   * - `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers.\n   * - `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers.\n   *\n   * Forge custom fields\n   * [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types)\n   * are also supported, returning:\n   *\n   * - `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields.\n   * - `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields.\n   * - `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields.\n   * - `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields.\n   * - `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields.\n   * - `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields.\n   * - `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultValues<T = Models.PageCustomFieldContextDefaultValue>(\n    parameters: Parameters.GetDefaultValues | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * defaults for a custom field. The results can be filtered by `contextId`, otherwise all values are returned. If no\n   * defaults are set for a context, nothing is returned.\\\n   * The returned object depends on type of the custom field:\n   *\n   * - `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields.\n   * - `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields.\n   * - `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio\n   *   buttons.\n   * - `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and\n   *   checkboxes.\n   * - `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists.\n   * - `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users.\n   * - `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists.\n   * - `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers.\n   * - `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group\n   *   pickers.\n   * - `CustomFieldContextDefaultValueURL` (type `url`) for URLs.\n   * - `CustomFieldContextDefaultValueProject` (type `project`) for project pickers.\n   * - `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers).\n   * - `CustomFieldContextDefaultValueLabels` (type `labels`) for labels.\n   * - `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields.\n   * - `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields.\n   * - `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields.\n   * - `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers.\n   * - `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers.\n   *\n   * Forge custom fields\n   * [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types)\n   * are also supported, returning:\n   *\n   * - `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields.\n   * - `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields.\n   * - `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields.\n   * - `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields.\n   * - `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields.\n   * - `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields.\n   * - `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultValues<T = Models.PageCustomFieldContextDefaultValue>(\n    parameters: Parameters.GetDefaultValues | string,\n    callback?: never,\n  ): Promise<T>;\n  async getDefaultValues<T = Models.PageCustomFieldContextDefaultValue>(\n    parameters: Parameters.GetDefaultValues | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${fieldId}/context/defaultValue`,\n      method: 'GET',\n      params: {\n        contextId: typeof parameters !== 'string' && parameters.contextId,\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets default for contexts of a custom field. Default are defined using these objects:\n   *\n   * - `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields.\n   * - `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields.\n   * - `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio\n   *   buttons.\n   * - `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and\n   *   checkboxes.\n   * - `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists.\n   * - `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users.\n   * - `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists.\n   * - `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers.\n   * - `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group\n   *   pickers.\n   * - `CustomFieldContextDefaultValueURL` (type `url`) for URLs.\n   * - `CustomFieldContextDefaultValueProject` (type `project`) for project pickers.\n   * - `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers).\n   * - `CustomFieldContextDefaultValueLabels` (type `labels`) for labels.\n   * - `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields.\n   * - `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields.\n   * - `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields.\n   * - `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers.\n   * - `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers.\n   *\n   * Forge custom fields\n   * [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types)\n   * are also supported, returning:\n   *\n   * - `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields.\n   * - `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields.\n   * - `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields.\n   * - `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields.\n   * - `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields.\n   * - `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields.\n   * - `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields.\n   *\n   * Only one type of default object can be included in a request. To remove a default for a context, set the default\n   * parameter to `null`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultValues<T = void>(parameters: Parameters.SetDefaultValues, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets default for contexts of a custom field. Default are defined using these objects:\n   *\n   * - `CustomFieldContextDefaultValueDate` (type `datepicker`) for date fields.\n   * - `CustomFieldContextDefaultValueDateTime` (type `datetimepicker`) for date-time fields.\n   * - `CustomFieldContextDefaultValueSingleOption` (type `option.single`) for single choice select lists and radio\n   *   buttons.\n   * - `CustomFieldContextDefaultValueMultipleOption` (type `option.multiple`) for multiple choice select lists and\n   *   checkboxes.\n   * - `CustomFieldContextDefaultValueCascadingOption` (type `option.cascading`) for cascading select lists.\n   * - `CustomFieldContextSingleUserPickerDefaults` (type `single.user.select`) for single users.\n   * - `CustomFieldContextDefaultValueMultiUserPicker` (type `multi.user.select`) for user lists.\n   * - `CustomFieldContextDefaultValueSingleGroupPicker` (type `grouppicker.single`) for single choice group pickers.\n   * - `CustomFieldContextDefaultValueMultipleGroupPicker` (type `grouppicker.multiple`) for multiple choice group\n   *   pickers.\n   * - `CustomFieldContextDefaultValueURL` (type `url`) for URLs.\n   * - `CustomFieldContextDefaultValueProject` (type `project`) for project pickers.\n   * - `CustomFieldContextDefaultValueFloat` (type `float`) for floats (floating-point numbers).\n   * - `CustomFieldContextDefaultValueLabels` (type `labels`) for labels.\n   * - `CustomFieldContextDefaultValueTextField` (type `textfield`) for text fields.\n   * - `CustomFieldContextDefaultValueTextArea` (type `textarea`) for text area fields.\n   * - `CustomFieldContextDefaultValueReadOnly` (type `readonly`) for read only (text) fields.\n   * - `CustomFieldContextDefaultValueMultipleVersion` (type `version.multiple`) for single choice version pickers.\n   * - `CustomFieldContextDefaultValueSingleVersion` (type `version.single`) for multiple choice version pickers.\n   *\n   * Forge custom fields\n   * [types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/#data-types)\n   * are also supported, returning:\n   *\n   * - `CustomFieldContextDefaultValueForgeStringFieldBean` (type `forge.string`) for Forge string fields.\n   * - `CustomFieldContextDefaultValueForgeMultiStringFieldBean` (type `forge.string.list`) for Forge string collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeObjectFieldBean` (type `forge.object`) for Forge object fields.\n   * - `CustomFieldContextDefaultValueForgeDateTimeFieldBean` (type `forge.datetime`) for Forge date-time fields.\n   * - `CustomFieldContextDefaultValueForgeGroupFieldBean` (type `forge.group`) for Forge group fields.\n   * - `CustomFieldContextDefaultValueForgeMultiGroupFieldBean` (type `forge.group.list`) for Forge group collection\n   *   fields.\n   * - `CustomFieldContextDefaultValueForgeNumberFieldBean` (type `forge.number`) for Forge number fields.\n   * - `CustomFieldContextDefaultValueForgeUserFieldBean` (type `forge.user`) for Forge user fields.\n   * - `CustomFieldContextDefaultValueForgeMultiUserFieldBean` (type `forge.user.list`) for Forge user collection fields.\n   *\n   * Only one type of default object can be included in a request. To remove a default for a context, set the default\n   * parameter to `null`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultValues<T = void>(parameters: Parameters.SetDefaultValues, callback?: never): Promise<T>;\n  async setDefaultValues<T = void>(parameters: Parameters.SetDefaultValues, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/defaultValue`,\n      method: 'PUT',\n      data: {\n        defaultValues: parameters.defaultValues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * context to issue type mappings for a custom field. Mappings are returned for all contexts or a list of contexts.\n   * Mappings are ordered first by context ID and then by issue type ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeMappingsForContexts<T = Models.PageIssueTypeToContextMapping>(\n    parameters: Parameters.GetIssueTypeMappingsForContexts | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * context to issue type mappings for a custom field. Mappings are returned for all contexts or a list of contexts.\n   * Mappings are ordered first by context ID and then by issue type ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeMappingsForContexts<T = Models.PageIssueTypeToContextMapping>(\n    parameters: Parameters.GetIssueTypeMappingsForContexts | string,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeMappingsForContexts<T = Models.PageIssueTypeToContextMapping>(\n    parameters: Parameters.GetIssueTypeMappingsForContexts | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${fieldId}/context/issuetypemapping`,\n      method: 'GET',\n      params: {\n        contextId: typeof parameters !== 'string' && parameters.contextId,\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * project and issue type mappings and, for each mapping, the ID of a [custom field\n   * context](https://confluence.atlassian.com/x/k44fOw) that applies to the project and issue type.\n   *\n   * If there is no custom field context assigned to the project then, if present, the custom field context that applies\n   * to all projects is returned if it also applies to the issue type or all issue types. If a custom field context is\n   * not found, the returned custom field context ID is `null`.\n   *\n   * Duplicate project and issue type mappings cannot be provided in the request.\n   *\n   * The order of the returned values is the same as provided in the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getCustomFieldContextsForProjectsAndIssueTypes<T = Models.PageContextForProjectAndIssueType>(\n    parameters: Parameters.GetCustomFieldContextsForProjectsAndIssueTypes,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * project and issue type mappings and, for each mapping, the ID of a [custom field\n   * context](https://confluence.atlassian.com/x/k44fOw) that applies to the project and issue type.\n   *\n   * If there is no custom field context assigned to the project then, if present, the custom field context that applies\n   * to all projects is returned if it also applies to the issue type or all issue types. If a custom field context is\n   * not found, the returned custom field context ID is `null`.\n   *\n   * Duplicate project and issue type mappings cannot be provided in the request.\n   *\n   * The order of the returned values is the same as provided in the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getCustomFieldContextsForProjectsAndIssueTypes<T = Models.PageContextForProjectAndIssueType>(\n    parameters: Parameters.GetCustomFieldContextsForProjectsAndIssueTypes,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomFieldContextsForProjectsAndIssueTypes<T = Models.PageContextForProjectAndIssueType>(\n    parameters: Parameters.GetCustomFieldContextsForProjectsAndIssueTypes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/mapping`,\n      method: 'POST',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n      data: {\n        mappings: parameters.mappings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * context to project mappings for a custom field. The result can be filtered by `contextId`. Otherwise, all mappings\n   * are returned. Invalid IDs are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectContextMapping<T = Models.PageCustomFieldContextProjectMapping>(\n    parameters: Parameters.GetProjectContextMapping | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * context to project mappings for a custom field. The result can be filtered by `contextId`. Otherwise, all mappings\n   * are returned. Invalid IDs are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectContextMapping<T = Models.PageCustomFieldContextProjectMapping>(\n    parameters: Parameters.GetProjectContextMapping | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectContextMapping<T = Models.PageCustomFieldContextProjectMapping>(\n    parameters: Parameters.GetProjectContextMapping | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${fieldId}/context/projectmapping`,\n      method: 'GET',\n      params: {\n        contextId: typeof parameters !== 'string' && parameters.contextId,\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a [custom field\n   * context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomFieldContext<T = void>(\n    parameters: Parameters.UpdateCustomFieldContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a [custom field\n   * context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomFieldContext<T = void>(\n    parameters: Parameters.UpdateCustomFieldContext,\n    callback?: never,\n  ): Promise<T>;\n  async updateCustomFieldContext<T = void>(\n    parameters: Parameters.UpdateCustomFieldContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a [custom field\n   * context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomFieldContext<T = void>(\n    parameters: Parameters.DeleteCustomFieldContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a [custom field\n   * context](https://confluence.atlassian.com/adminjiracloud/what-are-custom-field-contexts-991923859.html).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomFieldContext<T = void>(\n    parameters: Parameters.DeleteCustomFieldContext,\n    callback?: never,\n  ): Promise<T>;\n  async deleteCustomFieldContext<T = void>(\n    parameters: Parameters.DeleteCustomFieldContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds issue types to a custom field context, appending the issue types to the issue types list.\n   *\n   * A custom field context without any issue types applies to all issue types. Adding issue types to such a custom\n   * field context would result in it applying to only the listed issue types.\n   *\n   * If any of the issue types exists in the custom field context, the operation fails and no issue types are added.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addIssueTypesToContext<T = void>(\n    parameters: Parameters.AddIssueTypesToContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds issue types to a custom field context, appending the issue types to the issue types list.\n   *\n   * A custom field context without any issue types applies to all issue types. Adding issue types to such a custom\n   * field context would result in it applying to only the listed issue types.\n   *\n   * If any of the issue types exists in the custom field context, the operation fails and no issue types are added.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addIssueTypesToContext<T = void>(parameters: Parameters.AddIssueTypesToContext, callback?: never): Promise<T>;\n  async addIssueTypesToContext<T = void>(\n    parameters: Parameters.AddIssueTypesToContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}/issuetype`,\n      method: 'PUT',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes issue types from a custom field context.\n   *\n   * A custom field context without any issue types applies to all issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypesFromContext<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes issue types from a custom field context.\n   *\n   * A custom field context without any issue types applies to all issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypesFromContext<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromContext,\n    callback?: never,\n  ): Promise<T>;\n  async removeIssueTypesFromContext<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}/issuetype/remove`,\n      method: 'POST',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns a custom field context to projects.\n   *\n   * If any project in the request is assigned to any context of the custom field, the operation fails.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignProjectsToCustomFieldContext<T = void>(\n    parameters: Parameters.AssignProjectsToCustomFieldContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns a custom field context to projects.\n   *\n   * If any project in the request is assigned to any context of the custom field, the operation fails.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignProjectsToCustomFieldContext<T = void>(\n    parameters: Parameters.AssignProjectsToCustomFieldContext,\n    callback?: never,\n  ): Promise<T>;\n  async assignProjectsToCustomFieldContext<T = void>(\n    parameters: Parameters.AssignProjectsToCustomFieldContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}/project`,\n      method: 'PUT',\n      data: {\n        projectIds: parameters.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a custom field context from projects.\n   *\n   * A custom field context without any projects applies to all projects. Removing all projects from a custom field\n   * context would result in it applying to all projects.\n   *\n   * If any project in the request is not assigned to the context, or the operation would result in two global contexts\n   * for the field, the operation fails.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeCustomFieldContextFromProjects<T = void>(\n    parameters: Parameters.RemoveCustomFieldContextFromProjects,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a custom field context from projects.\n   *\n   * A custom field context without any projects applies to all projects. Removing all projects from a custom field\n   * context would result in it applying to all projects.\n   *\n   * If any project in the request is not assigned to the context, or the operation would result in two global contexts\n   * for the field, the operation fails.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeCustomFieldContextFromProjects<T = void>(\n    parameters: Parameters.RemoveCustomFieldContextFromProjects,\n    callback?: never,\n  ): Promise<T>;\n  async removeCustomFieldContextFromProjects<T = void>(\n    parameters: Parameters.RemoveCustomFieldContextFromProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}/project/remove`,\n      method: 'POST',\n      data: {\n        projectIds: parameters.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldOptions {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a custom field option. For example, an option in a select list.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect apps.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * custom field option is returned as follows:\n   *\n   * - If the user has the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - If the user has the _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for at least\n   *   one project the custom field is used in, and the field is visible in at least one layout the user has permission\n   *   to view.\n   */\n  async getCustomFieldOption<T = Models.CustomFieldOption>(\n    parameters: Parameters.GetCustomFieldOption | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a custom field option. For example, an option in a select list.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect apps.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** The\n   * custom field option is returned as follows:\n   *\n   * - If the user has the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - If the user has the _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for at least\n   *   one project the custom field is used in, and the field is visible in at least one layout the user has permission\n   *   to view.\n   */\n  async getCustomFieldOption<T = Models.CustomFieldOption>(\n    parameters: Parameters.GetCustomFieldOption | string,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomFieldOption<T = Models.CustomFieldOption>(\n    parameters: Parameters.GetCustomFieldOption | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/customFieldOption/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * custom field option for a context. Options are returned first then cascading options, in the order they display in\n   * Jira.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). _Edit Workflow_ [edit workflow\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Edit-Workflows)\n   */\n  async getOptionsForContext<T = Models.PageCustomFieldContextOption>(\n    parameters: Parameters.GetOptionsForContext,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * custom field option for a context. Options are returned first then cascading options, in the order they display in\n   * Jira.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). _Edit Workflow_ [edit workflow\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/#Edit-Workflows)\n   */\n  async getOptionsForContext<T = Models.PageCustomFieldContextOption>(\n    parameters: Parameters.GetOptionsForContext,\n    callback?: never,\n  ): Promise<T>;\n  async getOptionsForContext<T = Models.PageCustomFieldContextOption>(\n    parameters: Parameters.GetOptionsForContext,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}/option`,\n      method: 'GET',\n      params: {\n        optionId: parameters.optionId,\n        onlyOptions: parameters.onlyOptions,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates options and, where the custom select field is of the type Select List (cascading), cascading options for a\n   * custom select field. The options are added to a context of the field.\n   *\n   * The maximum number of options that can be created per request is 1000 and each field can have a maximum of 10000\n   * options.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomFieldOption<T = Models.CustomFieldCreatedContextOptionsList>(\n    parameters: Parameters.CreateCustomFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates options and, where the custom select field is of the type Select List (cascading), cascading options for a\n   * custom select field. The options are added to a context of the field.\n   *\n   * The maximum number of options that can be created per request is 1000 and each field can have a maximum of 10000\n   * options.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomFieldOption<T = Models.CustomFieldCreatedContextOptionsList>(\n    parameters: Parameters.CreateCustomFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async createCustomFieldOption<T = Models.CustomFieldCreatedContextOptionsList>(\n    parameters: Parameters.CreateCustomFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}/option`,\n      method: 'POST',\n      data: {\n        options: parameters.options,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the options of a custom field.\n   *\n   * If any of the options are not found, no options are updated. Options where the values in the request match the\n   * current values aren't updated and aren't reported in the response.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomFieldOption<T = Models.CustomFieldUpdatedContextOptionsList>(\n    parameters: Parameters.UpdateCustomFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the options of a custom field.\n   *\n   * If any of the options are not found, no options are updated. Options where the values in the request match the\n   * current values aren't updated and aren't reported in the response.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomFieldOption<T = Models.CustomFieldUpdatedContextOptionsList>(\n    parameters: Parameters.UpdateCustomFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async updateCustomFieldOption<T = Models.CustomFieldUpdatedContextOptionsList>(\n    parameters: Parameters.UpdateCustomFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}/option`,\n      method: 'PUT',\n      data: {\n        options: parameters.options,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the order of custom field options or cascading options in a context.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async reorderCustomFieldOptions<T = void>(\n    parameters: Parameters.ReorderCustomFieldOptions,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Changes the order of custom field options or cascading options in a context.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async reorderCustomFieldOptions<T = void>(\n    parameters: Parameters.ReorderCustomFieldOptions,\n    callback?: never,\n  ): Promise<T>;\n  async reorderCustomFieldOptions<T = void>(\n    parameters: Parameters.ReorderCustomFieldOptions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}/option/move`,\n      method: 'PUT',\n      data: {\n        after: parameters.after,\n        customFieldOptionIds: parameters.customFieldOptionIds,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a custom field option.\n   *\n   * Options with cascading options cannot be deleted without deleting the cascading options first.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomFieldOption<T = void>(\n    parameters: Parameters.DeleteCustomFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a custom field option.\n   *\n   * Options with cascading options cannot be deleted without deleting the cascading options first.\n   *\n   * This operation works for custom field options created in Jira or the operations from this resource. **To work with\n   * issue field select list options created for Connect apps use the [Issue custom field options\n   * (apps)](#api-group-issue-custom-field-options--apps-) operations.**\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomFieldOption<T = void>(parameters: Parameters.DeleteCustomFieldOption, callback?: never): Promise<T>;\n  async deleteCustomFieldOption<T = void>(\n    parameters: Parameters.DeleteCustomFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}/option/${parameters.optionId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Replaces the options of a custom field.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect or Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async replaceCustomFieldOption<T = unknown>(\n    parameters: Parameters.ReplaceCustomFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Replaces the options of a custom field.\n   *\n   * Note that this operation **only works for issue field select list options created in Jira or using operations from\n   * the [Issue custom field options](#api-group-Issue-custom-field-options) resource**, it cannot be used with issue\n   * field select list options created by Connect or Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async replaceCustomFieldOption<T = unknown>(\n    parameters: Parameters.ReplaceCustomFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async replaceCustomFieldOption<T = unknown>(\n    parameters: Parameters.ReplaceCustomFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}/context/${parameters.contextId}/option/${parameters.optionId}/issue`,\n      method: 'DELETE',\n      params: {\n        replaceWith: parameters.replaceWith,\n        jql: parameters.jql,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldOptionsApps {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * the options of a select list issue field. A select list issue field is a type of [issue\n   * field](https://developer.atlassian.com/cloud/jira/platform/modules/issue-field/) that enables a user to select a\n   * value from a list of options.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async getAllIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetAllIssueFieldOptions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * the options of a select list issue field. A select list issue field is a type of [issue\n   * field](https://developer.atlassian.com/cloud/jira/platform/modules/issue-field/) that enables a user to select a\n   * value from a list of options.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async getAllIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetAllIssueFieldOptions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetAllIssueFieldOptions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldKey = typeof parameters === 'string' ? parameters : parameters.fieldKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${fieldKey}/option`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an option for a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * Each field can have a maximum of 10000 options, and each option can have a maximum of 10000 scopes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async createIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.CreateIssueFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an option for a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * Each field can have a maximum of 10000 options, and each option can have a maximum of 10000 scopes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async createIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.CreateIssueFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.CreateIssueFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldKey}/option`,\n      method: 'POST',\n      data: {\n        config: parameters.config,\n        properties: parameters.properties,\n        value: parameters.value,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * options for a select list issue field that can be viewed and selected by the user.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getSelectableIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetSelectableIssueFieldOptions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * options for a select list issue field that can be viewed and selected by the user.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getSelectableIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetSelectableIssueFieldOptions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getSelectableIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetSelectableIssueFieldOptions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldKey = typeof parameters === 'string' ? parameters : parameters.fieldKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${fieldKey}/option/suggestions/edit`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        projectId: typeof parameters !== 'string' && parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * options for a select list issue field that can be viewed by the user.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getVisibleIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetVisibleIssueFieldOptions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * options for a select list issue field that can be viewed by the user.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getVisibleIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetVisibleIssueFieldOptions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getVisibleIssueFieldOptions<T = Models.PageIssueFieldOption>(\n    parameters: Parameters.GetVisibleIssueFieldOptions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldKey = typeof parameters === 'string' ? parameters : parameters.fieldKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${fieldKey}/option/suggestions/search`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        projectId: typeof parameters !== 'string' && parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an option from a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async getIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.GetIssueFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an option from a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async getIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.GetIssueFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.GetIssueFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldKey}/option/${parameters.optionId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates or creates an option for a select list issue field. This operation requires that the option ID is provided\n   * when creating an option, therefore, the option ID needs to be specified as a path and body parameter. The option ID\n   * provided in the path and body must be identical.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async updateIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.UpdateIssueFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates or creates an option for a select list issue field. This operation requires that the option ID is provided\n   * when creating an option, therefore, the option ID needs to be specified as a path and body parameter. The option ID\n   * provided in the path and body must be identical.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async updateIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.UpdateIssueFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async updateIssueFieldOption<T = Models.IssueFieldOption>(\n    parameters: Parameters.UpdateIssueFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldKey}/option/${parameters.optionId}`,\n      method: 'PUT',\n      data: {\n        config: parameters.config,\n        id: parameters.id,\n        properties: parameters.properties,\n        value: parameters.value,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an option from a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async deleteIssueFieldOption<T = void>(\n    parameters: Parameters.DeleteIssueFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an option from a select list issue field.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async deleteIssueFieldOption<T = void>(parameters: Parameters.DeleteIssueFieldOption, callback?: never): Promise<T>;\n  async deleteIssueFieldOption<T = void>(\n    parameters: Parameters.DeleteIssueFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldKey}/option/${parameters.optionId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deselects an issue-field select-list option from all issues where it is selected. A different option can be\n   * selected to replace the deselected option. The update can also be limited to a smaller set of issues by using a JQL\n   * query.\n   *\n   * Connect and Forge app users with _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   * can override the screen security configuration using `overrideScreenSecurity` and `overrideEditableFlag`.\n   *\n   * This is an [asynchronous\n   * operation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). The response\n   * object contains a link to the long-running task.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async replaceIssueFieldOption<T = Models.TaskProgressRemoveOptionFromIssuesResult>(\n    parameters: Parameters.ReplaceIssueFieldOption,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deselects an issue-field select-list option from all issues where it is selected. A different option can be\n   * selected to replace the deselected option. The update can also be limited to a smaller set of issues by using a JQL\n   * query.\n   *\n   * Connect and Forge app users with _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   * can override the screen security configuration using `overrideScreenSecurity` and `overrideEditableFlag`.\n   *\n   * This is an [asynchronous\n   * operation](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). The response\n   * object contains a link to the long-running task.\n   *\n   * Note that this operation **only works for issue field select list options added by Connect apps**, it cannot be\n   * used with issue field select list options created in Jira or using operations from the [Issue custom field\n   * options](#api-group-Issue-custom-field-options) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Jira permissions are not required\n   * for the app providing the field.\n   */\n  async replaceIssueFieldOption<T = Models.TaskProgressRemoveOptionFromIssuesResult>(\n    parameters: Parameters.ReplaceIssueFieldOption,\n    callback?: never,\n  ): Promise<T>;\n  async replaceIssueFieldOption<T = Models.TaskProgressRemoveOptionFromIssuesResult>(\n    parameters: Parameters.ReplaceIssueFieldOption,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldKey}/option/${parameters.optionId}/issue`,\n      method: 'DELETE',\n      params: {\n        replaceWith: parameters.replaceWith,\n        jql: parameters.jql,\n        overrideScreenSecurity: parameters.overrideScreenSecurity,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueCustomFieldValuesApps {\n  constructor(private client: Client) {}\n\n  /**\n   * Updates the value of one or more custom fields on one or more issues. Combinations of custom field and issue should\n   * be unique within the request.\n   *\n   * Apps can only perform this operation on [custom\n   * fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom\n   * field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/)\n   * declared in their own manifests.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * the app that owns the custom field or custom field type can update its values with this operation.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateMultipleCustomFieldValues<T = void>(\n    parameters: Parameters.UpdateMultipleCustomFieldValues,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the value of one or more custom fields on one or more issues. Combinations of custom field and issue should\n   * be unique within the request.\n   *\n   * Apps can only perform this operation on [custom\n   * fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom\n   * field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/)\n   * declared in their own manifests.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * the app that owns the custom field or custom field type can update its values with this operation.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateMultipleCustomFieldValues<T = void>(\n    parameters: Parameters.UpdateMultipleCustomFieldValues,\n    callback?: never,\n  ): Promise<T>;\n  async updateMultipleCustomFieldValues<T = void>(\n    parameters: Parameters.UpdateMultipleCustomFieldValues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/app/field/value',\n      method: 'POST',\n      params: {\n        generateChangelog: parameters.generateChangelog,\n      },\n      data: {\n        updates: parameters.updates,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the value of a custom field on one or more issues.\n   *\n   * Apps can only perform this operation on [custom\n   * fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom\n   * field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/)\n   * declared in their own manifests.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * the app that owns the custom field or custom field type can update its values with this operation.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateCustomFieldValue<T = void>(\n    parameters: Parameters.UpdateCustomFieldValue,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the value of a custom field on one or more issues.\n   *\n   * Apps can only perform this operation on [custom\n   * fields](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field/) and [custom\n   * field types](https://developer.atlassian.com/platform/forge/manifest-reference/modules/jira-custom-field-type/)\n   * declared in their own manifests.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * the app that owns the custom field or custom field type can update its values with this operation.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateCustomFieldValue<T = void>(parameters: Parameters.UpdateCustomFieldValue, callback?: never): Promise<T>;\n  async updateCustomFieldValue<T = void>(\n    parameters: Parameters.UpdateCustomFieldValue,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/app/field/${parameters.fieldIdOrKey}/value`,\n      method: 'PUT',\n      params: {\n        generateChangelog: parameters.generateChangelog,\n      },\n      data: {\n        updates: parameters.updates,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\nimport type { Paginated } from '../paginated';\n\nexport class IssueFieldConfigurations {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of field\n   * configurations. The list can be for all field configurations or a subset determined by any combination of these\n   * criteria:\n   *\n   * - A list of field configuration item IDs.\n   * - Whether the field configuration is a default.\n   * - Whether the field configuration name or description contains a query string.\n   *\n   * Only field configurations used in company-managed (classic) projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllFieldConfigurations<T = Paginated<Models.FieldConfigurationDetails>>(\n    parameters: Parameters.GetAllFieldConfigurations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of field\n   * configurations. The list can be for all field configurations or a subset determined by any combination of these\n   * criteria:\n   *\n   * - A list of field configuration item IDs.\n   * - Whether the field configuration is a default.\n   * - Whether the field configuration name or description contains a query string.\n   *\n   * Only field configurations used in company-managed (classic) projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllFieldConfigurations<T = Paginated<Models.FieldConfigurationDetails>>(\n    parameters?: Parameters.GetAllFieldConfigurations,\n    callback?: never,\n  ): Promise<T>;\n  async getAllFieldConfigurations<T = Paginated<Models.FieldConfigurationDetails>>(\n    parameters?: Parameters.GetAllFieldConfigurations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/fieldconfiguration',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        isDefault: parameters?.isDefault,\n        query: parameters?.query,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a field configuration. The field configuration is created with the same field properties as the default\n   * configuration, with all the fields being optional.\n   *\n   * This operation can only create configurations for use in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createFieldConfiguration<T = Models.FieldConfiguration>(\n    parameters: Parameters.CreateFieldConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a field configuration. The field configuration is created with the same field properties as the default\n   * configuration, with all the fields being optional.\n   *\n   * This operation can only create configurations for use in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createFieldConfiguration<T = Models.FieldConfiguration>(\n    parameters: Parameters.CreateFieldConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async createFieldConfiguration<T = Models.FieldConfiguration>(\n    parameters: Parameters.CreateFieldConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/fieldconfiguration',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a field configuration. The name and the description provided in the request override the existing values.\n   *\n   * This operation can only update configurations used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfiguration<T = void>(\n    parameters: Parameters.UpdateFieldConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a field configuration. The name and the description provided in the request override the existing values.\n   *\n   * This operation can only update configurations used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfiguration<T = void>(\n    parameters: Parameters.UpdateFieldConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async updateFieldConfiguration<T = void>(\n    parameters: Parameters.UpdateFieldConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/fieldconfiguration/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a field configuration.\n   *\n   * This operation can only delete configurations used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFieldConfiguration<T = void>(\n    parameters: Parameters.DeleteFieldConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a field configuration.\n   *\n   * This operation can only delete configurations used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFieldConfiguration<T = void>(\n    parameters: Parameters.DeleteFieldConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async deleteFieldConfiguration<T = void>(\n    parameters: Parameters.DeleteFieldConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/fieldconfiguration/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * fields for a configuration.\n   *\n   * Only the fields from configurations used in company-managed (classic) projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationItems<T = Models.PageFieldConfigurationItem>(\n    parameters: Parameters.GetFieldConfigurationItems,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * fields for a configuration.\n   *\n   * Only the fields from configurations used in company-managed (classic) projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationItems<T = Models.PageFieldConfigurationItem>(\n    parameters: Parameters.GetFieldConfigurationItems,\n    callback?: never,\n  ): Promise<T>;\n  async getFieldConfigurationItems<T = Models.PageFieldConfigurationItem>(\n    parameters: Parameters.GetFieldConfigurationItems,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/fieldconfiguration/${parameters.id}/fields`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates fields in a field configuration. The properties of the field configuration fields provided override the\n   * existing values.\n   *\n   * This operation can only update field configurations used in company-managed (classic) projects.\n   *\n   * The operation can set the renderer for text fields to the default text renderer (`text-renderer`) or wiki style\n   * renderer (`wiki-renderer`). However, the renderer cannot be updated for fields using the autocomplete renderer\n   * (`autocomplete-renderer`).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfigurationItems<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationItems,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates fields in a field configuration. The properties of the field configuration fields provided override the\n   * existing values.\n   *\n   * This operation can only update field configurations used in company-managed (classic) projects.\n   *\n   * The operation can set the renderer for text fields to the default text renderer (`text-renderer`) or wiki style\n   * renderer (`wiki-renderer`). However, the renderer cannot be updated for fields using the autocomplete renderer\n   * (`autocomplete-renderer`).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfigurationItems<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationItems,\n    callback?: never,\n  ): Promise<T>;\n  async updateFieldConfigurationItems<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationItems,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/fieldconfiguration/${parameters.id}/fields`,\n      method: 'PUT',\n      data: {\n        fieldConfigurationItems: parameters.fieldConfigurationItems,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of field\n   * configuration schemes.\n   *\n   * Only field configuration schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllFieldConfigurationSchemes<T = Models.PageFieldConfigurationScheme>(\n    parameters: Parameters.GetAllFieldConfigurationSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of field\n   * configuration schemes.\n   *\n   * Only field configuration schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllFieldConfigurationSchemes<T = Models.PageFieldConfigurationScheme>(\n    parameters?: Parameters.GetAllFieldConfigurationSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getAllFieldConfigurationSchemes<T = Models.PageFieldConfigurationScheme>(\n    parameters?: Parameters.GetAllFieldConfigurationSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/fieldconfigurationscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a field configuration scheme.\n   *\n   * This operation can only create field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createFieldConfigurationScheme<T = Models.FieldConfigurationScheme>(\n    parameters: Parameters.CreateFieldConfigurationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a field configuration scheme.\n   *\n   * This operation can only create field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createFieldConfigurationScheme<T = Models.FieldConfigurationScheme>(\n    parameters: Parameters.CreateFieldConfigurationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createFieldConfigurationScheme<T = Models.FieldConfigurationScheme>(\n    parameters: Parameters.CreateFieldConfigurationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/fieldconfigurationscheme',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of field\n   * configuration issue type items.\n   *\n   * Only items used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationSchemeMappings<T = Models.PageFieldConfigurationIssueTypeItem>(\n    parameters: Parameters.GetFieldConfigurationSchemeMappings | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of field\n   * configuration issue type items.\n   *\n   * Only items used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationSchemeMappings<T = Models.PageFieldConfigurationIssueTypeItem>(\n    parameters?: Parameters.GetFieldConfigurationSchemeMappings,\n    callback?: never,\n  ): Promise<T>;\n  async getFieldConfigurationSchemeMappings<T = Models.PageFieldConfigurationIssueTypeItem>(\n    parameters?: Parameters.GetFieldConfigurationSchemeMappings,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/fieldconfigurationscheme/mapping',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        fieldConfigurationSchemeId: parameters?.fieldConfigurationSchemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of field\n   * configuration schemes and, for each scheme, a list of the projects that use it.\n   *\n   * The list is sorted by field configuration scheme ID. The first item contains the list of project IDs assigned to\n   * the default field configuration scheme.\n   *\n   * Only field configuration schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationSchemeProjectMapping<T = Models.PageFieldConfigurationSchemeProjects>(\n    parameters: Parameters.GetFieldConfigurationSchemeProjectMapping,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of field\n   * configuration schemes and, for each scheme, a list of the projects that use it.\n   *\n   * The list is sorted by field configuration scheme ID. The first item contains the list of project IDs assigned to\n   * the default field configuration scheme.\n   *\n   * Only field configuration schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldConfigurationSchemeProjectMapping<T = Models.PageFieldConfigurationSchemeProjects>(\n    parameters: Parameters.GetFieldConfigurationSchemeProjectMapping,\n    callback?: never,\n  ): Promise<T>;\n  async getFieldConfigurationSchemeProjectMapping<T = Models.PageFieldConfigurationSchemeProjects>(\n    parameters: Parameters.GetFieldConfigurationSchemeProjectMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/fieldconfigurationscheme/project',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns a field configuration scheme to a project. If the field configuration scheme ID is `null`, the operation\n   * assigns the default field configuration scheme.\n   *\n   * Field configuration schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignFieldConfigurationSchemeToProject<T = void>(\n    parameters: Parameters.AssignFieldConfigurationSchemeToProject | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns a field configuration scheme to a project. If the field configuration scheme ID is `null`, the operation\n   * assigns the default field configuration scheme.\n   *\n   * Field configuration schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignFieldConfigurationSchemeToProject<T = void>(\n    parameters?: Parameters.AssignFieldConfigurationSchemeToProject,\n    callback?: never,\n  ): Promise<T>;\n  async assignFieldConfigurationSchemeToProject<T = void>(\n    parameters?: Parameters.AssignFieldConfigurationSchemeToProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/fieldconfigurationscheme/project',\n      method: 'PUT',\n      data: {\n        fieldConfigurationSchemeId: parameters?.fieldConfigurationSchemeId,\n        projectId: parameters?.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a field configuration scheme.\n   *\n   * This operation can only update field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfigurationScheme<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a field configuration scheme.\n   *\n   * This operation can only update field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateFieldConfigurationScheme<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateFieldConfigurationScheme<T = void>(\n    parameters: Parameters.UpdateFieldConfigurationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/fieldconfigurationscheme/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a field configuration scheme.\n   *\n   * This operation can only delete field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFieldConfigurationScheme<T = void>(\n    parameters: Parameters.DeleteFieldConfigurationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a field configuration scheme.\n   *\n   * This operation can only delete field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteFieldConfigurationScheme<T = void>(\n    parameters: Parameters.DeleteFieldConfigurationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async deleteFieldConfigurationScheme<T = void>(\n    parameters: Parameters.DeleteFieldConfigurationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/fieldconfigurationscheme/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns issue types to field configurations on field configuration scheme.\n   *\n   * This operation can only modify field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setFieldConfigurationSchemeMapping<T = void>(\n    parameters: Parameters.SetFieldConfigurationSchemeMapping,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns issue types to field configurations on field configuration scheme.\n   *\n   * This operation can only modify field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setFieldConfigurationSchemeMapping<T = void>(\n    parameters: Parameters.SetFieldConfigurationSchemeMapping,\n    callback?: never,\n  ): Promise<T>;\n  async setFieldConfigurationSchemeMapping<T = void>(\n    parameters: Parameters.SetFieldConfigurationSchemeMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/fieldconfigurationscheme/${parameters.id}/mapping`,\n      method: 'PUT',\n      data: {\n        mappings: parameters.mappings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes issue types from the field configuration scheme.\n   *\n   * This operation can only modify field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypesFromGlobalFieldConfigurationScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromGlobalFieldConfigurationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes issue types from the field configuration scheme.\n   *\n   * This operation can only modify field configuration schemes used in company-managed (classic) projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypesFromGlobalFieldConfigurationScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromGlobalFieldConfigurationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async removeIssueTypesFromGlobalFieldConfigurationScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypesFromGlobalFieldConfigurationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/fieldconfigurationscheme/${parameters.id}/mapping/delete`,\n      method: 'POST',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueFields {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns system and custom issue fields according to the following rules:\n   *\n   * - Fields that cannot be added to the issue navigator are always returned.\n   * - Fields that cannot be placed on an issue screen are always returned.\n   * - Fields that depend on global Jira settings are only returned if the setting is enabled. That is, timetracking\n   *   fields, subtasks, votes, and watches.\n   * - For all other fields, this operation only returns the fields that the user has permission to view (that is, the\n   *   field is used in at least one project that the user has _Browse Projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.)\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getFields<T = Models.FieldDetails[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns system and custom issue fields according to the following rules:\n   *\n   * - Fields that cannot be added to the issue navigator are always returned.\n   * - Fields that cannot be placed on an issue screen are always returned.\n   * - Fields that depend on global Jira settings are only returned if the setting is enabled. That is, timetracking\n   *   fields, subtasks, votes, and watches.\n   * - For all other fields, this operation only returns the fields that the user has permission to view (that is, the\n   *   field is used in at least one project that the user has _Browse Projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for.)\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getFields<T = Models.FieldDetails[]>(callback?: never): Promise<T>;\n  async getFields<T = Models.FieldDetails[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/field',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a custom field.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomField<T = Models.FieldDetails>(\n    parameters: Parameters.CreateCustomField,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a custom field.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createCustomField<T = Models.FieldDetails>(\n    parameters: Parameters.CreateCustomField,\n    callback?: never,\n  ): Promise<T>;\n  async createCustomField<T = Models.FieldDetails>(\n    parameters: Parameters.CreateCustomField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/field',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n        searcherKey: parameters.searcherKey,\n        type: parameters.type,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of fields\n   * for Classic Jira projects. The list can include:\n   *\n   * - All fields\n   * - Specific fields, by defining `id`\n   * - Fields that contain a string in the field name or description, by defining `query`\n   * - Specific fields that contain a string in the field name or description, by defining `id` and `query`\n   *\n   * Use `type` must be set to `custom` to show custom fields only.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldsPaginated<T = Models.PageField>(\n    parameters: Parameters.GetFieldsPaginated | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of fields\n   * for Classic Jira projects. The list can include:\n   *\n   * - All fields\n   * - Specific fields, by defining `id`\n   * - Fields that contain a string in the field name or description, by defining `query`\n   * - Specific fields that contain a string in the field name or description, by defining `id` and `query`\n   *\n   * Use `type` must be set to `custom` to show custom fields only.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getFieldsPaginated<T = Models.PageField>(\n    parameters?: Parameters.GetFieldsPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getFieldsPaginated<T = Models.PageField>(\n    parameters?: Parameters.GetFieldsPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/field/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        type: parameters?.type,\n        id: parameters?.id,\n        query: parameters?.query,\n        orderBy: parameters?.orderBy,\n        expand: parameters?.expand,\n        projectIds: parameters?.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of fields\n   * in the trash. The list may be restricted to fields whose field name or description partially match a string.\n   *\n   * Only custom fields can be queried, `type` must be set to `custom`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getTrashedFieldsPaginated<T = Models.PageField>(\n    parameters: Parameters.GetTrashedFieldsPaginated | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of fields\n   * in the trash. The list may be restricted to fields whose field name or description partially match a string.\n   *\n   * Only custom fields can be queried, `type` must be set to `custom`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getTrashedFieldsPaginated<T = Models.PageField>(\n    parameters?: Parameters.GetTrashedFieldsPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getTrashedFieldsPaginated<T = Models.PageField>(\n    parameters?: Parameters.GetTrashedFieldsPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/field/search/trashed',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        query: parameters?.query,\n        expand: parameters?.expand,\n        orderBy: parameters?.orderBy,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a custom field.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomField<T = void>(parameters: Parameters.UpdateCustomField, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a custom field.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateCustomField<T = void>(parameters: Parameters.UpdateCustomField, callback?: never): Promise<T>;\n  async updateCustomField<T = void>(\n    parameters: Parameters.UpdateCustomField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.fieldId}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n        searcherKey: parameters.searcherKey,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a custom field. The custom field is deleted whether it is in the trash or not. See [Edit or delete a custom\n   * field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomField<T = unknown>(parameters: Parameters.DeleteCustomField, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a custom field. The custom field is deleted whether it is in the trash or not. See [Edit or delete a custom\n   * field](https://confluence.atlassian.com/x/Z44fOw) for more information on trashing and deleting custom fields.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteCustomField<T = unknown>(parameters: Parameters.DeleteCustomField, callback?: never): Promise<T>;\n  async deleteCustomField<T = unknown>(\n    parameters: Parameters.DeleteCustomField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Restores a custom field from trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw)\n   * for more information on trashing and deleting custom fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async restoreCustomField<T = unknown>(\n    parameters: Parameters.RestoreCustomField,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Restores a custom field from trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw)\n   * for more information on trashing and deleting custom fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async restoreCustomField<T = unknown>(parameters: Parameters.RestoreCustomField, callback?: never): Promise<T>;\n  async restoreCustomField<T = unknown>(\n    parameters: Parameters.RestoreCustomField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.id}/restore`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves a custom field to trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for\n   * more information on trashing and deleting custom fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async trashCustomField<T = unknown>(parameters: Parameters.TrashCustomField, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves a custom field to trash. See [Edit or delete a custom field](https://confluence.atlassian.com/x/Z44fOw) for\n   * more information on trashing and deleting custom fields.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async trashCustomField<T = unknown>(parameters: Parameters.TrashCustomField, callback?: never): Promise<T>;\n  async trashCustomField<T = unknown>(\n    parameters: Parameters.TrashCustomField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${parameters.id}/trash`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueLinks {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a link between two issues. Use this operation to indicate a relationship between two issues and optionally\n   * add a comment to the from (outward) issue. To use this resource the site must have [Issue\n   * Linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This resource returns nothing on the creation of an issue link. To obtain the ID of the issue link, use\n   * `https://your-domain.atlassian.net/rest/api/3/issue/[linked issue key]?fields=issuelinks`.\n   *\n   * If the link request duplicates a link, the response indicates that the issue link was created. If the request\n   * included a comment, the comment is added.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse project_ [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing\n   *   the issues to be linked,\n   * - _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) on the project containing the from\n   *   (outward) issue,\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async linkIssues<T = void>(parameters: Parameters.LinkIssues, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a link between two issues. Use this operation to indicate a relationship between two issues and optionally\n   * add a comment to the from (outward) issue. To use this resource the site must have [Issue\n   * Linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This resource returns nothing on the creation of an issue link. To obtain the ID of the issue link, use\n   * `https://your-domain.atlassian.net/rest/api/3/issue/[linked issue key]?fields=issuelinks`.\n   *\n   * If the link request duplicates a link, the response indicates that the issue link was created. If the request\n   * included a comment, the comment is added.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse project_ [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing\n   *   the issues to be linked,\n   * - _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) on the project containing the from\n   *   (outward) issue,\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the comment has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async linkIssues<T = void>(parameters: Parameters.LinkIssues, callback?: never): Promise<T>;\n  async linkIssues<T = void>(parameters: Parameters.LinkIssues, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issueLink',\n      method: 'POST',\n      data: {\n        comment: parameters.comment,\n        inwardIssue: parameters.inwardIssue,\n        outwardIssue: parameters.outwardIssue,\n        type: parameters.type,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue link.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse project_ [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing\n   *   the linked issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the\n   *   issues.\n   */\n  async getIssueLink<T = Models.IssueLink>(parameters: Parameters.GetIssueLink, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns an issue link.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse project_ [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing\n   *   the linked issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the\n   *   issues.\n   */\n  async getIssueLink<T = Models.IssueLink>(parameters: Parameters.GetIssueLink, callback?: never): Promise<T>;\n  async getIssueLink<T = Models.IssueLink>(\n    parameters: Parameters.GetIssueLink,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issueLink/${parameters.linkId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue link.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Browse project [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the\n   *   issues in the link.\n   * - _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one of the projects\n   *   containing issues in the link.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the\n   *   issues.\n   */\n  async deleteIssueLink<T = void>(parameters: Parameters.DeleteIssueLink, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue link.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - Browse project [project permission](https://confluence.atlassian.com/x/yodKLg) for all the projects containing the\n   *   issues in the link.\n   * - _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for at least one of the projects\n   *   containing issues in the link.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, permission to view both of the\n   *   issues.\n   */\n  async deleteIssueLink<T = void>(parameters: Parameters.DeleteIssueLink, callback?: never): Promise<T>;\n  async deleteIssueLink<T = void>(parameters: Parameters.DeleteIssueLink, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issueLink/${parameters.linkId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueLinkTypes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of all issue link types.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site.\n   */\n  async getIssueLinkTypes<T = Models.IssueLinkTypes>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a list of all issue link types.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site.\n   */\n  async getIssueLinkTypes<T = Models.IssueLinkTypes>(callback?: never): Promise<T>;\n  async getIssueLinkTypes<T = Models.IssueLinkTypes>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issueLinkType',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue link type. Use this operation to create descriptions of the reasons why issues are linked. The\n   * issue link type consists of a name and descriptions for a link's inward and outward relationships.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.CreateIssueLinkType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue link type. Use this operation to create descriptions of the reasons why issues are linked. The\n   * issue link type consists of a name and descriptions for a link's inward and outward relationships.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.CreateIssueLinkType,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.CreateIssueLinkType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issueLinkType',\n      method: 'POST',\n      data: {\n        id: parameters.id,\n        inward: parameters.inward,\n        name: parameters.name,\n        outward: parameters.outward,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site.\n   */\n  async getIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.GetIssueLinkType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project in the site.\n   */\n  async getIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.GetIssueLinkType,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.GetIssueLinkType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issueLinkType/${parameters.issueLinkTypeId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.UpdateIssueLinkType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.UpdateIssueLinkType,\n    callback?: never,\n  ): Promise<T>;\n  async updateIssueLinkType<T = Models.IssueLinkType>(\n    parameters: Parameters.UpdateIssueLinkType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issueLinkType/${parameters.issueLinkTypeId}`,\n      method: 'PUT',\n      data: {\n        id: parameters.id,\n        inward: parameters.inward,\n        name: parameters.name,\n        outward: parameters.outward,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueLinkType<T = void>(parameters: Parameters.DeleteIssueLinkType, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue link type.\n   *\n   * To use this operation, the site must have [issue linking](https://confluence.atlassian.com/x/yoXKM) enabled.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueLinkType<T = void>(parameters: Parameters.DeleteIssueLinkType, callback?: never): Promise<T>;\n  async deleteIssueLinkType<T = void>(\n    parameters: Parameters.DeleteIssueLinkType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issueLinkType/${parameters.issueLinkTypeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueNavigatorSettings {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the default issue navigator columns.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueNavigatorDefaultColumns<T = Models.ColumnItem[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the default issue navigator columns.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueNavigatorDefaultColumns<T = Models.ColumnItem[]>(callback?: never): Promise<T>;\n  async getIssueNavigatorDefaultColumns<T = Models.ColumnItem[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/settings/columns',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the default issue navigator columns.\n   *\n   * The `columns` parameter accepts a navigable field value and is expressed as HTML form data. To specify multiple\n   * columns, pass multiple `columns` parameters. For example, in curl:\n   *\n   * `curl -X PUT -d columns=summary -d columns=description\n   * https://your-domain.atlassian.net/rest/api/3/settings/columns`\n   *\n   * If no column details are sent, then all default columns are removed.\n   *\n   * A navigable field is one that can be used as a column on the issue navigator. Find details of navigable issue\n   * columns using [Get fields](#api-rest-api-3-field-get).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setIssueNavigatorDefaultColumns<T = unknown>(callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the default issue navigator columns.\n   *\n   * The `columns` parameter accepts a navigable field value and is expressed as HTML form data. To specify multiple\n   * columns, pass multiple `columns` parameters. For example, in curl:\n   *\n   * `curl -X PUT -d columns=summary -d columns=description\n   * https://your-domain.atlassian.net/rest/api/3/settings/columns`\n   *\n   * If no column details are sent, then all default columns are removed.\n   *\n   * A navigable field is one that can be used as a column on the issue navigator. Find details of navigable issue\n   * columns using [Get fields](#api-rest-api-3-field-get).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setIssueNavigatorDefaultColumns<T = unknown>(callback?: never): Promise<T>;\n  async setIssueNavigatorDefaultColumns<T = unknown>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/settings/columns',\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueNotificationSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * [notification schemes](https://confluence.atlassian.com/x/8YdKLg) ordered by the display name.\n   *\n   * _Note that you should allow for events without recipients to appear in responses._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, the user must have permission to administer at least one project associated\n   * with a notification scheme for it to be returned.\n   */\n  async getNotificationSchemes<T = Models.PageNotificationScheme>(\n    parameters: Parameters.GetNotificationSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * [notification schemes](https://confluence.atlassian.com/x/8YdKLg) ordered by the display name.\n   *\n   * _Note that you should allow for events without recipients to appear in responses._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, the user must have permission to administer at least one project associated\n   * with a notification scheme for it to be returned.\n   */\n  async getNotificationSchemes<T = Models.PageNotificationScheme>(\n    parameters?: Parameters.GetNotificationSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getNotificationSchemes<T = Models.PageNotificationScheme>(\n    parameters?: Parameters.GetNotificationSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/notificationscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        projectId: parameters?.projectId,\n        onlyDefault: parameters?.onlyDefault,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a notification scheme with notifications. You can create up to 1000 notifications per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createNotificationScheme<T = Models.NotificationSchemeId>(\n    parameters: Parameters.CreateNotificationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a notification scheme with notifications. You can create up to 1000 notifications per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createNotificationScheme<T = Models.NotificationSchemeId>(\n    parameters: Parameters.CreateNotificationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createNotificationScheme<T = Models.NotificationSchemeId>(\n    parameters: Parameters.CreateNotificationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/notificationscheme',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n        notificationSchemeEvents: parameters.notificationSchemeEvents,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) mapping of\n   * project that have notification scheme assigned. You can provide either one or multiple notification scheme IDs or\n   * project IDs to filter by. If you don't provide any, this will return a list of all mappings. Note that only\n   * company-managed (classic) projects are supported. This is because team-managed projects don't have a concept of a\n   * default notification scheme. The mappings are ordered by projectId.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getNotificationSchemeToProjectMappings<T = Models.NotificationSchemeAndProjectMappingPage>(\n    parameters: Parameters.GetNotificationSchemeToProjectMappings | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) mapping of\n   * project that have notification scheme assigned. You can provide either one or multiple notification scheme IDs or\n   * project IDs to filter by. If you don't provide any, this will return a list of all mappings. Note that only\n   * company-managed (classic) projects are supported. This is because team-managed projects don't have a concept of a\n   * default notification scheme. The mappings are ordered by projectId.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getNotificationSchemeToProjectMappings<T = Models.NotificationSchemeAndProjectMappingPage>(\n    parameters?: Parameters.GetNotificationSchemeToProjectMappings,\n    callback?: never,\n  ): Promise<T>;\n  async getNotificationSchemeToProjectMappings<T = Models.NotificationSchemeAndProjectMappingPage>(\n    parameters?: Parameters.GetNotificationSchemeToProjectMappings,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/notificationscheme/project',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        notificationSchemeId: parameters?.notificationSchemeId,\n        projectId: parameters?.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [notification scheme](https://confluence.atlassian.com/x/8YdKLg), including the list of events and the\n   * recipients who will receive notifications for those events.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, the user must have permission to administer at least one project associated\n   * with the notification scheme.\n   */\n  async getNotificationScheme<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [notification scheme](https://confluence.atlassian.com/x/8YdKLg), including the list of events and the\n   * recipients who will receive notifications for those events.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, the user must have permission to administer at least one project associated\n   * with the notification scheme.\n   */\n  async getNotificationScheme<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getNotificationScheme<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/notificationscheme/${id}`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateNotificationScheme<T = void>(\n    parameters: Parameters.UpdateNotificationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateNotificationScheme<T = void>(\n    parameters: Parameters.UpdateNotificationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateNotificationScheme<T = void>(\n    parameters: Parameters.UpdateNotificationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/notificationscheme/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds notifications to a notification scheme. You can add up to 1000 notifications per request.\n   *\n   * _Deprecated: The notification type `EmailAddress` is no longer supported in Cloud. Refer to the\n   * [changelog](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1031) for more details._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addNotifications<T = void>(parameters: Parameters.AddNotifications, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds notifications to a notification scheme. You can add up to 1000 notifications per request.\n   *\n   * _Deprecated: The notification type `EmailAddress` is no longer supported in Cloud. Refer to the\n   * [changelog](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1031) for more details._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addNotifications<T = void>(parameters: Parameters.AddNotifications, callback?: never): Promise<T>;\n  async addNotifications<T = void>(parameters: Parameters.AddNotifications, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/notificationscheme/${parameters.id}/notification`,\n      method: 'PUT',\n      data: {\n        notificationSchemeEvents: parameters.notificationSchemeEvents,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteNotificationScheme<T = void>(\n    parameters: Parameters.DeleteNotificationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteNotificationScheme<T = void>(\n    parameters: Parameters.DeleteNotificationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async deleteNotificationScheme<T = void>(\n    parameters: Parameters.DeleteNotificationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/notificationscheme/${parameters.notificationSchemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a notification from a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeNotificationFromNotificationScheme<T = void>(\n    parameters: Parameters.RemoveNotificationFromNotificationScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a notification from a notification scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeNotificationFromNotificationScheme<T = void>(\n    parameters: Parameters.RemoveNotificationFromNotificationScheme,\n    callback?: never,\n  ): Promise<T>;\n  async removeNotificationFromNotificationScheme<T = void>(\n    parameters: Parameters.RemoveNotificationFromNotificationScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/notificationscheme/${parameters.notificationSchemeId}/notification/${parameters.notificationId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport { paramSerializer } from '../paramSerializer';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssuePriorities {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the list of all issue priorities.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPriorities<T = Models.Priority[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the list of all issue priorities.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPriorities<T = Models.Priority[]>(callback?: never): Promise<T>;\n  async getPriorities<T = Models.Priority[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/priority',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue priority.\n   *\n   * Deprecation applies to iconUrl param in request body which will be sunset on 16th Mar 2025. For more details refer\n   * to [changelog](https://developer.atlassian.com/changelog/#CHANGE-1525).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPriority<T = Models.PriorityId>(\n    parameters: Parameters.CreatePriority,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue priority.\n   *\n   * Deprecation applies to iconUrl param in request body which will be sunset on 16th Mar 2025. For more details refer\n   * to [changelog](https://developer.atlassian.com/changelog/#CHANGE-1525).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPriority<T = Models.PriorityId>(parameters: Parameters.CreatePriority, callback?: never): Promise<T>;\n  async createPriority<T = Models.PriorityId>(\n    parameters: Parameters.CreatePriority,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/priority',\n      method: 'POST',\n      data: {\n        avatarId: parameters.avatarId,\n        description: parameters.description,\n        iconUrl: parameters.iconUrl,\n        name: parameters.name,\n        statusColor: parameters.statusColor,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets default issue priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultPriority<T = void>(\n    parameters: Parameters.SetDefaultPriority | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets default issue priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultPriority<T = void>(parameters?: Parameters.SetDefaultPriority, callback?: never): Promise<T>;\n  async setDefaultPriority<T = void>(\n    parameters?: Parameters.SetDefaultPriority,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/priority/default',\n      method: 'PUT',\n      data: {\n        id: parameters?.id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the order of issue priorities.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async movePriorities<T = void>(parameters: Parameters.MovePriorities, callback: Callback<T>): Promise<void>;\n  /**\n   * Changes the order of issue priorities.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async movePriorities<T = void>(parameters: Parameters.MovePriorities, callback?: never): Promise<T>;\n  async movePriorities<T = void>(parameters: Parameters.MovePriorities, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/priority/move',\n      method: 'PUT',\n      data: {\n        after: parameters.after,\n        ids: parameters.ids,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * priorities. The list can contain all priorities or a subset determined by any combination of these criteria:\n   *\n   * - A list of priority IDs. Any invalid priority IDs are ignored.\n   * - A list of project IDs. Only priorities that are available in these projects will be returned. Any invalid project\n   *   IDs are ignored.\n   * - Whether the field configuration is a default. This returns priorities from company-managed (classic) projects only,\n   *   as there is no concept of default priorities in team-managed projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async searchPriorities<T = Models.PagePriority>(\n    parameters: Parameters.SearchPriorities | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * priorities. The list can contain all priorities or a subset determined by any combination of these criteria:\n   *\n   * - A list of priority IDs. Any invalid priority IDs are ignored.\n   * - A list of project IDs. Only priorities that are available in these projects will be returned. Any invalid project\n   *   IDs are ignored.\n   * - Whether the field configuration is a default. This returns priorities from company-managed (classic) projects only,\n   *   as there is no concept of default priorities in team-managed projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async searchPriorities<T = Models.PagePriority>(\n    parameters?: Parameters.SearchPriorities,\n    callback?: never,\n  ): Promise<T>;\n  async searchPriorities<T = Models.PagePriority>(\n    parameters?: Parameters.SearchPriorities,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/priority/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        projectId: paramSerializer('projectId', parameters?.projectId),\n        priorityName: parameters?.priorityName,\n        onlyDefault: parameters?.onlyDefault,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPriority<T = Models.Priority>(parameters: Parameters.GetPriority, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns an issue priority.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPriority<T = Models.Priority>(parameters: Parameters.GetPriority, callback?: never): Promise<T>;\n  async getPriority<T = Models.Priority>(\n    parameters: Parameters.GetPriority,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/priority/${parameters.id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates an issue priority.\n   *\n   * At least one request body parameter must be defined.\n   *\n   * Deprecation applies to iconUrl param in request body which will be sunset on 16th Mar 2025. For more details refer\n   * to [changelog](https://developer.atlassian.com/changelog/#CHANGE-1525).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePriority<T = void>(parameters: Parameters.UpdatePriority, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates an issue priority.\n   *\n   * At least one request body parameter must be defined.\n   *\n   * Deprecation applies to iconUrl param in request body which will be sunset on 16th Mar 2025. For more details refer\n   * to [changelog](https://developer.atlassian.com/changelog/#CHANGE-1525).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePriority<T = void>(parameters: Parameters.UpdatePriority, callback?: never): Promise<T>;\n  async updatePriority<T = void>(parameters: Parameters.UpdatePriority, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/priority/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        avatarId: parameters.avatarId,\n        description: parameters.description,\n        iconUrl: parameters.iconUrl,\n        name: parameters.name,\n        statusColor: parameters.statusColor,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue priority.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePriority<T = unknown>(parameters: Parameters.DeletePriority, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue priority.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePriority<T = unknown>(parameters: Parameters.DeletePriority, callback?: never): Promise<T>;\n  async deletePriority<T = unknown>(parameters: Parameters.DeletePriority, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/priority/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Sets or updates a list of entity property values on issues. A list of up to 10 entity properties can be specified\n   * along with up to 10,000 issues on which to set or update that list of entity properties.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. The maximum\n   * length of single issue property value is 32768 characters. This operation can be accessed anonymously.\n   *\n   * This operation is:\n   *\n   * - Transactional, either all properties are updated in all eligible issues or, when errors occur, no properties are\n   *   updated.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkSetIssuesProperties<T = unknown>(\n    parameters: Parameters.BulkSetIssuesProperties | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets or updates a list of entity property values on issues. A list of up to 10 entity properties can be specified\n   * along with up to 10,000 issues on which to set or update that list of entity properties.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON. The maximum\n   * length of single issue property value is 32768 characters. This operation can be accessed anonymously.\n   *\n   * This operation is:\n   *\n   * - Transactional, either all properties are updated in all eligible issues or, when errors occur, no properties are\n   *   updated.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkSetIssuesProperties<T = unknown>(\n    parameters?: Parameters.BulkSetIssuesProperties,\n    callback?: never,\n  ): Promise<T>;\n  async bulkSetIssuesProperties<T = unknown>(\n    parameters?: Parameters.BulkSetIssuesProperties,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/properties',\n      method: 'POST',\n      data: {\n        entitiesIds: parameters?.entitiesIds,\n        properties: parameters?.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets or updates entity property values on issues. Up to 10 entity properties can be specified for each issue and up\n   * to 100 issues included in the request.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON.\n   *\n   * This operation is:\n   *\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   * - Non-transactional. Updating some entities may fail. Such information will available in the task result.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkSetIssuePropertiesByIssue<T = unknown>(\n    parameters: Parameters.BulkSetIssuePropertiesByIssue | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets or updates entity property values on issues. Up to 10 entity properties can be specified for each issue and up\n   * to 100 issues included in the request.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON.\n   *\n   * This operation is:\n   *\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   * - Non-transactional. Updating some entities may fail. Such information will available in the task result.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkSetIssuePropertiesByIssue<T = unknown>(\n    parameters?: Parameters.BulkSetIssuePropertiesByIssue,\n    callback?: never,\n  ): Promise<T>;\n  async bulkSetIssuePropertiesByIssue<T = unknown>(\n    parameters?: Parameters.BulkSetIssuePropertiesByIssue,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/properties/multi',\n      method: 'POST',\n      data: {\n        issues: parameters?.issues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets a property value on multiple issues.\n   *\n   * The value set can be a constant or determined by a [Jira\n   * expression](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/). Expressions must be computable\n   * with constant complexity when applied to a set of issues. Expressions must also comply with the\n   * [restrictions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#restrictions) that apply to\n   * all Jira expressions.\n   *\n   * The issues to be updated can be specified by a filter.\n   *\n   * The filter identifies issues eligible for update using these criteria:\n   *\n   * - `entityIds` Only issues from this list are eligible.\n   * - `currentValue` Only issues with the property set to this value are eligible.\n   * - `hasProperty`:\n   *\n   *   - If _true_, only issues with the property are eligible.\n   *   - If _false_, only issues without the property are eligible.\n   *\n   * If more than one criteria is specified, they are joined with the logical _AND_: only issues that satisfy all\n   * criteria are eligible.\n   *\n   * If an invalid combination of criteria is provided, an error is returned. For example, specifying a `currentValue`\n   * and `hasProperty` as _false_ would not match any issues (because without the property the property cannot have a\n   * value).\n   *\n   * The filter is optional. Without the filter all the issues visible to the user and where the user has the\n   * EDIT_ISSUES permission for the issue are considered eligible.\n   *\n   * This operation is:\n   *\n   * - Transactional, either all eligible issues are updated or, when errors occur, none are updated.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing\n   *   issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue.\n   */\n  async bulkSetIssueProperty<T = unknown>(\n    parameters: Parameters.BulkSetIssueProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets a property value on multiple issues.\n   *\n   * The value set can be a constant or determined by a [Jira\n   * expression](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/). Expressions must be computable\n   * with constant complexity when applied to a set of issues. Expressions must also comply with the\n   * [restrictions](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/#restrictions) that apply to\n   * all Jira expressions.\n   *\n   * The issues to be updated can be specified by a filter.\n   *\n   * The filter identifies issues eligible for update using these criteria:\n   *\n   * - `entityIds` Only issues from this list are eligible.\n   * - `currentValue` Only issues with the property set to this value are eligible.\n   * - `hasProperty`:\n   *\n   *   - If _true_, only issues with the property are eligible.\n   *   - If _false_, only issues without the property are eligible.\n   *\n   * If more than one criteria is specified, they are joined with the logical _AND_: only issues that satisfy all\n   * criteria are eligible.\n   *\n   * If an invalid combination of criteria is provided, an error is returned. For example, specifying a `currentValue`\n   * and `hasProperty` as _false_ would not match any issues (because without the property the property cannot have a\n   * value).\n   *\n   * The filter is optional. Without the filter all the issues visible to the user and where the user has the\n   * EDIT_ISSUES permission for the issue are considered eligible.\n   *\n   * This operation is:\n   *\n   * - Transactional, either all eligible issues are updated or, when errors occur, none are updated.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing\n   *   issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue.\n   */\n  async bulkSetIssueProperty<T = unknown>(parameters: Parameters.BulkSetIssueProperty, callback?: never): Promise<T>;\n  async bulkSetIssueProperty<T = unknown>(\n    parameters: Parameters.BulkSetIssueProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: {\n        expression: parameters.expression,\n        filter: parameters.filter,\n        value: parameters.value,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a property value from multiple issues. The issues to be updated can be specified by filter criteria.\n   *\n   * The criteria the filter used to identify eligible issues are:\n   *\n   * - `entityIds` Only issues from this list are eligible.\n   * - `currentValue` Only issues with the property set to this value are eligible.\n   *\n   * If both criteria is specified, they are joined with the logical _AND_: only issues that satisfy both criteria are\n   * considered eligible.\n   *\n   * If no filter criteria are specified, all the issues visible to the user and where the user has the EDIT_ISSUES\n   * permission for the issue are considered eligible.\n   *\n   * This operation is:\n   *\n   * - Transactional, either the property is deleted from all eligible issues or, when errors occur, no properties are\n   *   deleted.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing\n   *   issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue.\n   */\n  async bulkDeleteIssueProperty<T = unknown>(\n    parameters: Parameters.BulkDeleteIssueProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a property value from multiple issues. The issues to be updated can be specified by filter criteria.\n   *\n   * The criteria the filter used to identify eligible issues are:\n   *\n   * - `entityIds` Only issues from this list are eligible.\n   * - `currentValue` Only issues with the property set to this value are eligible.\n   *\n   * If both criteria is specified, they are joined with the logical _AND_: only issues that satisfy both criteria are\n   * considered eligible.\n   *\n   * If no filter criteria are specified, all the issues visible to the user and where the user has the EDIT_ISSUES\n   * permission for the issue are considered eligible.\n   *\n   * This operation is:\n   *\n   * - Transactional, either the property is deleted from all eligible issues or, when errors occur, no properties are\n   *   deleted.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for each project containing\n   *   issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for each issue.\n   */\n  async bulkDeleteIssueProperty<T = unknown>(\n    parameters: Parameters.BulkDeleteIssueProperty,\n    callback?: never,\n  ): Promise<T>;\n  async bulkDeleteIssueProperty<T = unknown>(\n    parameters: Parameters.BulkDeleteIssueProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n      data: {\n        currentValue: parameters.currentValue,\n        entityIds: parameters.entityIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the URLs and keys of an issue's properties.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Property details are only returned where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssuePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssuePropertyKeys,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the URLs and keys of an issue's properties.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Property details are only returned where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssuePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssuePropertyKeys,\n    callback?: never,\n  ): Promise<T>;\n  async getIssuePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssuePropertyKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the key and value of an issue's property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssueProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the key and value of an issue's property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssueProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of an issue's property. Use this resource to store custom data against an issue.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async setIssueProperty<T = unknown>(parameters: Parameters.SetIssueProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the value of an issue's property. Use this resource to store custom data against an issue.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async setIssueProperty<T = unknown>(parameters: Parameters.SetIssueProperty, callback?: never): Promise<T>;\n  async setIssueProperty<T = unknown>(\n    parameters: Parameters.SetIssueProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue's property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteIssueProperty<T = void>(parameters: Parameters.DeleteIssueProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue's property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteIssueProperty<T = void>(parameters: Parameters.DeleteIssueProperty, callback?: never): Promise<T>;\n  async deleteIssueProperty<T = void>(\n    parameters: Parameters.DeleteIssueProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueRemoteLinks {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the remote issue links for an issue. When a remote issue link global ID is provided the record with that\n   * global ID is returned, otherwise all remote issue links are returned. Where a global ID includes reserved URL\n   * characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1`\n   * as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getRemoteIssueLinks<T = Models.RemoteIssueLink[]>(\n    parameters: Parameters.GetRemoteIssueLinks,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the remote issue links for an issue. When a remote issue link global ID is provided the record with that\n   * global ID is returned, otherwise all remote issue links are returned. Where a global ID includes reserved URL\n   * characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1`\n   * as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getRemoteIssueLinks<T = Models.RemoteIssueLink[]>(\n    parameters: Parameters.GetRemoteIssueLinks,\n    callback?: never,\n  ): Promise<T>;\n  async getRemoteIssueLinks<T = Models.RemoteIssueLink[]>(\n    parameters: Parameters.GetRemoteIssueLinks,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/remotelink`,\n      method: 'GET',\n      params: {\n        globalId: parameters.globalId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates or updates a remote issue link for an issue.\n   *\n   * If a `globalId` is provided and a remote issue link with that global ID is found it is updated. Any fields without\n   * values in the request are set to null. Otherwise, the remote issue link is created.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async createOrUpdateRemoteIssueLink<T = Models.RemoteIssueLinkIdentifies>(\n    parameters: Parameters.CreateOrUpdateRemoteIssueLink,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates or updates a remote issue link for an issue.\n   *\n   * If a `globalId` is provided and a remote issue link with that global ID is found it is updated. Any fields without\n   * values in the request are set to null. Otherwise, the remote issue link is created.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async createOrUpdateRemoteIssueLink<T = Models.RemoteIssueLinkIdentifies>(\n    parameters: Parameters.CreateOrUpdateRemoteIssueLink,\n    callback?: never,\n  ): Promise<T>;\n  async createOrUpdateRemoteIssueLink<T = Models.RemoteIssueLinkIdentifies>(\n    parameters: Parameters.CreateOrUpdateRemoteIssueLink,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/remotelink`,\n      method: 'POST',\n      data: {\n        application: parameters.application,\n        globalId: parameters.globalId,\n        object: parameters.object,\n        relationship: parameters.relationship,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the remote issue link from the issue using the link's global ID. Where the global ID includes reserved URL\n   * characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1`\n   * as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is implemented, issue-level security\n   *   permission to view the issue.\n   */\n  async deleteRemoteIssueLinkByGlobalId<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkByGlobalId,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the remote issue link from the issue using the link's global ID. Where the global ID includes reserved URL\n   * characters these must be escaped in the request. For example, pass `system=http://www.mycompany.com/support&id=1`\n   * as `system%3Dhttp%3A%2F%2Fwww.mycompany.com%2Fsupport%26id%3D1`.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is implemented, issue-level security\n   *   permission to view the issue.\n   */\n  async deleteRemoteIssueLinkByGlobalId<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkByGlobalId,\n    callback?: never,\n  ): Promise<T>;\n  async deleteRemoteIssueLinkByGlobalId<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkByGlobalId,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/remotelink`,\n      method: 'DELETE',\n      params: {\n        globalId: parameters.globalId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a remote issue link for an issue.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getRemoteIssueLinkById<T = Models.RemoteIssueLink>(\n    parameters: Parameters.GetRemoteIssueLinkById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a remote issue link for an issue.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getRemoteIssueLinkById<T = Models.RemoteIssueLink>(\n    parameters: Parameters.GetRemoteIssueLinkById,\n    callback?: never,\n  ): Promise<T>;\n  async getRemoteIssueLinkById<T = Models.RemoteIssueLink>(\n    parameters: Parameters.GetRemoteIssueLinkById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/remotelink/${parameters.linkId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a remote issue link for an issue.\n   *\n   * Note: Fields without values in the request are set to null.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async updateRemoteIssueLink<T = void>(\n    parameters: Parameters.UpdateRemoteIssueLink,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a remote issue link for an issue.\n   *\n   * Note: Fields without values in the request are set to null.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async updateRemoteIssueLink<T = void>(parameters: Parameters.UpdateRemoteIssueLink, callback?: never): Promise<T>;\n  async updateRemoteIssueLink<T = void>(\n    parameters: Parameters.UpdateRemoteIssueLink,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/remotelink/${parameters.linkId}`,\n      method: 'PUT',\n      data: {\n        application: parameters.application,\n        globalId: parameters.globalId,\n        object: parameters.object,\n        relationship: parameters.relationship,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a remote issue link from an issue.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_, _Edit issues_, and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for the project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteRemoteIssueLinkById<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a remote issue link from an issue.\n   *\n   * This operation requires [issue linking to be active](https://confluence.atlassian.com/x/yoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_, _Edit issues_, and _Link issues_ [project permission](https://confluence.atlassian.com/x/yodKLg)\n   *   for the project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteRemoteIssueLinkById<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkById,\n    callback?: never,\n  ): Promise<T>;\n  async deleteRemoteIssueLinkById<T = void>(\n    parameters: Parameters.DeleteRemoteIssueLinkById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/remotelink/${parameters.linkId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueResolutions {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of all issue resolution values.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getResolutions<T = Models.Resolution[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a list of all issue resolution values.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getResolutions<T = Models.Resolution[]>(callback?: never): Promise<T>;\n  async getResolutions<T = Models.Resolution[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/resolution',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createResolution<T = Models.ResolutionId>(\n    parameters: Parameters.CreateResolution,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createResolution<T = Models.ResolutionId>(\n    parameters: Parameters.CreateResolution,\n    callback?: never,\n  ): Promise<T>;\n  async createResolution<T = Models.ResolutionId>(\n    parameters: Parameters.CreateResolution,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/resolution',\n      method: 'POST',\n      data: parameters,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets default issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultResolution<T = void>(\n    parameters: Parameters.SetDefaultResolution,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets default issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultResolution<T = void>(parameters: Parameters.SetDefaultResolution, callback?: never): Promise<T>;\n  async setDefaultResolution<T = void>(\n    parameters: Parameters.SetDefaultResolution,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/resolution/default',\n      method: 'PUT',\n      data: {\n        id: parameters.id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the order of issue resolutions.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveResolutions<T = void>(parameters: Parameters.MoveResolutions, callback: Callback<T>): Promise<void>;\n  /**\n   * Changes the order of issue resolutions.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveResolutions<T = void>(parameters: Parameters.MoveResolutions, callback?: never): Promise<T>;\n  async moveResolutions<T = void>(parameters: Parameters.MoveResolutions, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/resolution/move',\n      method: 'PUT',\n      data: {\n        after: parameters.after,\n        ids: parameters.ids,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * resolutions. The list can contain all resolutions or a subset determined by any combination of these criteria:\n   *\n   * - A list of resolutions IDs.\n   * - Whether the field configuration is a default. This returns resolutions from company-managed (classic) projects\n   *   only, as there is no concept of default resolutions in team-managed projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async searchResolutions<T = Models.PageResolution>(\n    parameters: Parameters.SearchResolutions | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * resolutions. The list can contain all resolutions or a subset determined by any combination of these criteria:\n   *\n   * - A list of resolutions IDs.\n   * - Whether the field configuration is a default. This returns resolutions from company-managed (classic) projects\n   *   only, as there is no concept of default resolutions in team-managed projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async searchResolutions<T = Models.PageResolution>(\n    parameters?: Parameters.SearchResolutions,\n    callback?: never,\n  ): Promise<T>;\n  async searchResolutions<T = Models.PageResolution>(\n    parameters?: Parameters.SearchResolutions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/resolution/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        onlyDefault: parameters?.onlyDefault,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue resolution value.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getResolution<T = Models.Resolution>(\n    parameters: Parameters.GetResolution,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an issue resolution value.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getResolution<T = Models.Resolution>(parameters: Parameters.GetResolution, callback?: never): Promise<T>;\n  async getResolution<T = Models.Resolution>(\n    parameters: Parameters.GetResolution,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/resolution/${parameters.id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates an issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateResolution<T = void>(parameters: Parameters.UpdateResolution, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates an issue resolution.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateResolution<T = void>(parameters: Parameters.UpdateResolution, callback?: never): Promise<T>;\n  async updateResolution<T = void>(parameters: Parameters.UpdateResolution, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/resolution/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        ...parameters,\n        name: parameters.name,\n        description: parameters.description,\n        id: undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue resolution.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteResolution<T = Models.TaskProgressObject>(\n    parameters: Parameters.DeleteResolution,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an issue resolution.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteResolution<T = Models.TaskProgressObject>(\n    parameters: Parameters.DeleteResolution,\n    callback?: never,\n  ): Promise<T>;\n  async deleteResolution<T = Models.TaskProgressObject>(\n    parameters: Parameters.DeleteResolution,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/resolution/${parameters.id}`,\n      method: 'DELETE',\n      params: {\n        replaceWith: parameters.replaceWith,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Issues {\n  constructor(private client: Client) {}\n\n  /**\n   * Bulk fetch changelogs for multiple issues and filter by fields\n   *\n   * Returns a paginated list of all changelogs for given issues sorted by changelog date and issue IDs, starting from\n   * the oldest changelog and smallest issue ID.\n   *\n   * Issues are identified by their ID or key, and optionally changelogs can be filtered by their field IDs. You can\n   * request the changelogs of up to 1000 issues and can filter them by up to 10 field IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the projects that the issues\n   *   are in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issues.\n   */\n  async getBulkChangelogs<T = Models.BulkChangelog>(\n    parameters: Parameters.GetBulkChangelogs,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Bulk fetch changelogs for multiple issues and filter by fields\n   *\n   * Returns a paginated list of all changelogs for given issues sorted by changelog date and issue IDs, starting from\n   * the oldest changelog and smallest issue ID.\n   *\n   * Issues are identified by their ID or key, and optionally changelogs can be filtered by their field IDs. You can\n   * request the changelogs of up to 1000 issues and can filter them by up to 10 field IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the projects that the issues\n   *   are in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issues.\n   */\n  async getBulkChangelogs<T = Models.BulkChangelog>(\n    parameters: Parameters.GetBulkChangelogs,\n    callback?: never,\n  ): Promise<T>;\n  async getBulkChangelogs<T = Models.BulkChangelog>(\n    parameters: Parameters.GetBulkChangelogs,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/changelog/bulkfetch',\n      method: 'POST',\n      data: {\n        fieldIds: parameters.fieldIds,\n        issueIdsOrKeys: parameters.issueIdsOrKeys,\n        maxResults: parameters.maxResults,\n        nextPageToken: parameters.nextPageToken,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all issue events.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getEvents<T = Models.IssueEvent[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all issue events.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getEvents<T = Models.IssueEvent[]>(callback?: never): Promise<T>;\n  async getEvents<T = Models.IssueEvent[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/events',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask. A transition may be\n   * applied, to move the issue or subtask to a workflow step other than the default start step, and issue properties\n   * set.\n   *\n   * The content of the issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue\n   * or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These are\n   * the same fields that appear on the issue's create screen. Note that the `description`, `environment`, and any\n   * `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom\n   * fields (`textfield`) accept a string and don't handle Atlassian Document Format content.\n   *\n   * Creating a subtask differs from creating an issue as follows:\n   *\n   * - `issueType` must be set to a subtask issue type (use [ Get create issue\n   *   metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types).\n   * - `parent` must contain the ID or key of the parent issue.\n   *\n   * In a next-gen project any issue may be made a child providing that the parent and child are members of the same\n   * project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ and _Create issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in\n   * which the issue or subtask is created.\n   */\n  async createIssue<T = Models.CreatedIssue>(parameters: Parameters.CreateIssue, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask. A transition may be\n   * applied, to move the issue or subtask to a workflow step other than the default start step, and issue properties\n   * set.\n   *\n   * The content of the issue or subtask is defined using `update` and `fields`. The fields that can be set in the issue\n   * or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These are\n   * the same fields that appear on the issue's create screen. Note that the `description`, `environment`, and any\n   * `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom\n   * fields (`textfield`) accept a string and don't handle Atlassian Document Format content.\n   *\n   * Creating a subtask differs from creating an issue as follows:\n   *\n   * - `issueType` must be set to a subtask issue type (use [ Get create issue\n   *   metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types).\n   * - `parent` must contain the ID or key of the parent issue.\n   *\n   * In a next-gen project any issue may be made a child providing that the parent and child are members of the same\n   * project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ and _Create issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in\n   * which the issue or subtask is created.\n   */\n  async createIssue<T = Models.CreatedIssue>(parameters: Parameters.CreateIssue, callback?: never): Promise<T>;\n  async createIssue<T = Models.CreatedIssue>(\n    parameters: Parameters.CreateIssue,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    if (typeof parameters.fields.description === 'string') {\n      parameters.fields.description = {\n        type: 'doc',\n        version: 1,\n        content: [\n          {\n            type: 'paragraph',\n            content: [\n              {\n                text: parameters.fields.description,\n                type: 'text',\n              },\n            ],\n          },\n        ],\n      };\n    }\n\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue',\n      method: 'POST',\n      params: {\n        updateHistory: parameters.updateHistory,\n      },\n      data: {\n        fields: parameters.fields,\n        historyMetadata: parameters.historyMetadata,\n        properties: parameters.properties,\n        transition: parameters.transition,\n        update: parameters.update,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Enables admins to archive up to 100,000 issues in a single request using JQL, returning the URL to check the status\n   * of the submitted request.\n   *\n   * You can use the [get\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-get)\n   * and [cancel\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-cancel-post)\n   * APIs to manage the request.\n   *\n   * **Note that:**\n   *\n   * - You can't archive subtasks directly, only through their parent issues\n   * - You can only archive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   *\n   * **Rate limiting:** Only a single request per jira instance can be active at any given time.\n   */\n  async archiveIssuesAsync<T = string>(parameters: Parameters.ArchiveIssuesAsync, callback: Callback<T>): Promise<void>;\n  /**\n   * Enables admins to archive up to 100,000 issues in a single request using JQL, returning the URL to check the status\n   * of the submitted request.\n   *\n   * You can use the [get\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-get)\n   * and [cancel\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-tasks/#api-rest-api-3-task-taskid-cancel-post)\n   * APIs to manage the request.\n   *\n   * **Note that:**\n   *\n   * - You can't archive subtasks directly, only through their parent issues\n   * - You can only archive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   *\n   * **Rate limiting:** Only a single request per jira instance can be active at any given time.\n   */\n  async archiveIssuesAsync<T = string>(parameters: Parameters.ArchiveIssuesAsync, callback?: never): Promise<T>;\n  async archiveIssuesAsync<T = string>(\n    parameters: Parameters.ArchiveIssuesAsync,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/archive',\n      method: 'POST',\n      data: {\n        jql: parameters.jql,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Enables admins to archive up to 1000 issues in a single request using issue ID/key, returning details of the\n   * issue(s) archived in the process and the errors encountered, if any.\n   *\n   * **Note that:**\n   *\n   * - You can't archive subtasks directly, only through their parent issues\n   * - You can only archive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   */\n  async archiveIssues<T = Models.IssueArchivalSync>(\n    parameters: Parameters.ArchiveIssues,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Enables admins to archive up to 1000 issues in a single request using issue ID/key, returning details of the\n   * issue(s) archived in the process and the errors encountered, if any.\n   *\n   * **Note that:**\n   *\n   * - You can't archive subtasks directly, only through their parent issues\n   * - You can only archive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   */\n  async archiveIssues<T = Models.IssueArchivalSync>(parameters: Parameters.ArchiveIssues, callback?: never): Promise<T>;\n  async archiveIssues<T = Models.IssueArchivalSync>(\n    parameters: Parameters.ArchiveIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/archive',\n      method: 'PUT',\n      data: {\n        issueIdsOrKeys: parameters.issueIdsOrKeys,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates upto **50** issues and, where the option to create subtasks is enabled in Jira, subtasks. Transitions may\n   * be applied, to move the issues or subtasks to a workflow step other than the default start step, and issue\n   * properties set.\n   *\n   * The content of each issue or subtask is defined using `update` and `fields`. The fields that can be set in the\n   * issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These\n   * are the same fields that appear on the issues' create screens. Note that the `description`, `environment`, and any\n   * `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom\n   * fields (`textfield`) accept a string and don't handle Atlassian Document Format content.\n   *\n   * Creating a subtask differs from creating an issue as follows:\n   *\n   * - `issueType` must be set to a subtask issue type (use [ Get create issue\n   *   metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types).\n   * - `parent` the must contain the ID or key of the parent issue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ and _Create issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in\n   * which each issue or subtask is created.\n   */\n  async createIssues<T = Models.CreatedIssues>(\n    parameters: Parameters.CreateIssues | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates upto **50** issues and, where the option to create subtasks is enabled in Jira, subtasks. Transitions may\n   * be applied, to move the issues or subtasks to a workflow step other than the default start step, and issue\n   * properties set.\n   *\n   * The content of each issue or subtask is defined using `update` and `fields`. The fields that can be set in the\n   * issue or subtask are determined using the [ Get create issue metadata](#api-rest-api-3-issue-createmeta-get). These\n   * are the same fields that appear on the issues' create screens. Note that the `description`, `environment`, and any\n   * `textarea` type custom fields (multi-line text fields) take Atlassian Document Format content. Single line custom\n   * fields (`textfield`) accept a string and don't handle Atlassian Document Format content.\n   *\n   * Creating a subtask differs from creating an issue as follows:\n   *\n   * - `issueType` must be set to a subtask issue type (use [ Get create issue\n   *   metadata](#api-rest-api-3-issue-createmeta-get) to find subtask issue types).\n   * - `parent` the must contain the ID or key of the parent issue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ and _Create issues_ [project permissions](https://confluence.atlassian.com/x/yodKLg) for the project in\n   * which each issue or subtask is created.\n   */\n  async createIssues<T = Models.CreatedIssues>(parameters?: Parameters.CreateIssues, callback?: never): Promise<T>;\n  async createIssues<T = Models.CreatedIssues>(\n    parameters?: Parameters.CreateIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/bulk',\n      method: 'POST',\n      data: {\n        issueUpdates: parameters?.issueUpdates,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the details for a set of requested issues. You can request up to 100 issues.\n   *\n   * Each issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive\n   * search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or\n   * other redirect is **not** returned.\n   *\n   * Issues will be returned in ascending `id` order. If there are errors, Jira will return a list of issues which\n   * couldn't be fetched along with error messages.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkFetchIssues<T = Models.BulkIssue>(\n    parameters: Parameters.BulkFetchIssues,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the details for a set of requested issues. You can request up to 100 issues.\n   *\n   * Each issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive\n   * search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or\n   * other redirect is **not** returned.\n   *\n   * Issues will be returned in ascending `id` order. If there are errors, Jira will return a list of issues which\n   * couldn't be fetched along with error messages.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async bulkFetchIssues<T = Models.BulkIssue>(parameters: Parameters.BulkFetchIssues, callback?: never): Promise<T>;\n  async bulkFetchIssues<T = Models.BulkIssue>(\n    parameters: Parameters.BulkFetchIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/bulkfetch',\n      method: 'POST',\n      data: {\n        expand: parameters.expand,\n        fields: parameters.fields,\n        fieldsByKeys: parameters.fieldsByKeys,\n        issueIdsOrKeys: parameters.issueIdsOrKeys,\n        properties: parameters.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * @deprecated\n   *\n   *   Returns details of projects, issue types within projects, and, when requested, the create screen fields for each\n   *   issue type for the user. Use the information to populate the requests in [ Create\n   *   issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post).\n   *\n   *   Deprecated, see [Create Issue Meta Endpoint Deprecation\n   *   Notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1304).\n   *\n   *   The request can be restricted to specific projects or issue types using the query parameters. The response will\n   *   contain information for the valid projects, issue types, or project and issue type combinations requested. Note\n   *   that invalid project, issue type, or project and issue type combinations do not generate errors.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Create\n   *   issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMeta<T = Models.IssueCreateMetadata>(\n    parameters: Parameters.GetCreateIssueMeta | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * @deprecated\n   *\n   *   Returns details of projects, issue types within projects, and, when requested, the create screen fields for each\n   *   issue type for the user. Use the information to populate the requests in [ Create\n   *   issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post).\n   *\n   *   Deprecated, see [Create Issue Meta Endpoint Deprecation\n   *   Notice](https://developer.atlassian.com/cloud/jira/platform/changelog/#CHANGE-1304).\n   *\n   *   The request can be restricted to specific projects or issue types using the query parameters. The response will\n   *   contain information for the valid projects, issue types, or project and issue type combinations requested. Note\n   *   that invalid project, issue type, or project and issue type combinations do not generate errors.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Create\n   *   issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMeta<T = Models.IssueCreateMetadata>(\n    parameters?: Parameters.GetCreateIssueMeta,\n    callback?: never,\n  ): Promise<T>;\n  async getCreateIssueMeta<T = Models.IssueCreateMetadata>(\n    parameters?: Parameters.GetCreateIssueMeta,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/createmeta',\n      method: 'GET',\n      params: {\n        projectIds: parameters?.projectIds,\n        projectKeys: parameters?.projectKeys,\n        issuetypeIds: parameters?.issuetypeIds,\n        issuetypeNames: parameters?.issuetypeNames,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a page of issue type metadata for a specified project. Use the information to populate the requests in [\n   * Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Create\n   * issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMetaIssueTypes<T = Models.PageOfCreateMetaIssueTypes>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypes,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a page of issue type metadata for a specified project. Use the information to populate the requests in [\n   * Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Create\n   * issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMetaIssueTypes<T = Models.PageOfCreateMetaIssueTypes>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypes,\n    callback?: never,\n  ): Promise<T>;\n  async getCreateIssueMetaIssueTypes<T = Models.PageOfCreateMetaIssueTypes>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/createmeta/${parameters.projectIdOrKey}/issuetypes`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a page of field metadata for a specified project and issuetype id. Use the information to populate the\n   * requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Create\n   * issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMetaIssueTypeId<T = Models.PageOfCreateMetaIssueTypeWithField>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypeId,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a page of field metadata for a specified project and issuetype id. Use the information to populate the\n   * requests in [ Create issue](#api-rest-api-3-issue-post) and [Create issues](#api-rest-api-3-issue-bulk-post).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Create\n   * issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the requested projects.\n   */\n  async getCreateIssueMetaIssueTypeId<T = Models.PageOfCreateMetaIssueTypeWithField>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypeId,\n    callback?: never,\n  ): Promise<T>;\n  async getCreateIssueMetaIssueTypeId<T = Models.PageOfCreateMetaIssueTypeWithField>(\n    parameters: Parameters.GetCreateIssueMetaIssueTypeId,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/createmeta/${parameters.projectIdOrKey}/issuetypes/${parameters.issueTypeId}`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all issues breaching and approaching per-issue limits.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) is required for the project the\n   *   issues are in. Results may be incomplete otherwise\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueLimitReport<T = Models.IssueLimitReport>(\n    parameters: Parameters.GetIssueLimitReport | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all issues breaching and approaching per-issue limits.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) is required for the project the\n   *   issues are in. Results may be incomplete otherwise\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueLimitReport<T = Models.IssueLimitReport>(\n    parameters?: Parameters.GetIssueLimitReport,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueLimitReport<T = Models.IssueLimitReport>(\n    parameters?: Parameters.GetIssueLimitReport,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/limit/report',\n      method: 'GET',\n      params: {\n        isReturningKeys: parameters?.isReturningKeys,\n      },\n      data: {\n        issuesApproachingLimitParams: parameters?.issuesApproachingLimitParams,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Enables admins to unarchive up to 1000 issues in a single request using issue ID/key, returning details of the\n   * issue(s) unarchived in the process and the errors encountered, if any.\n   *\n   * **Note that:**\n   *\n   * - You can't unarchive subtasks directly, only through their parent issues\n   * - You can only unarchive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   */\n  async unarchiveIssues<T = Models.IssueArchivalSync>(\n    parameters: Parameters.UnarchiveIssues,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Enables admins to unarchive up to 1000 issues in a single request using issue ID/key, returning details of the\n   * issue(s) unarchived in the process and the errors encountered, if any.\n   *\n   * **Note that:**\n   *\n   * - You can't unarchive subtasks directly, only through their parent issues\n   * - You can only unarchive issues from software, service management, and business projects\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   */\n  async unarchiveIssues<T = Models.IssueArchivalSync>(\n    parameters: Parameters.UnarchiveIssues,\n    callback?: never,\n  ): Promise<T>;\n  async unarchiveIssues<T = Models.IssueArchivalSync>(\n    parameters: Parameters.UnarchiveIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/unarchive',\n      method: 'PUT',\n      data: {\n        issueIdsOrKeys: parameters.issueIdsOrKeys,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the details for an issue.\n   *\n   * The issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive\n   * search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or\n   * other redirect is **not** returned. The issue key returned in the response is the key of the issue found.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssue<T = Models.Issue>(parameters: Parameters.GetIssue, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the details for an issue.\n   *\n   * The issue is identified by its ID or key, however, if the identifier doesn't match an issue, a case-insensitive\n   * search and check for moved issues is performed. If a matching issue is found its details are returned, a 302 or\n   * other redirect is **not** returned. The issue key returned in the response is the key of the issue found.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIssue<T = Models.Issue>(parameters: Parameters.GetIssue, callback?: never): Promise<T>;\n  async getIssue<T = Models.Issue>(parameters: Parameters.GetIssue, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}`,\n      method: 'GET',\n      params: {\n        fields: parameters.fields,\n        fieldsByKeys: parameters.fieldsByKeys,\n        expand: parameters.expand,\n        properties: parameters.properties,\n        updateHistory: parameters.updateHistory,\n        failFast: parameters.failFast,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Edits an issue. Issue properties may be updated as part of the edit. Please note that issue transition is not\n   * supported and is ignored here. To transition an issue, please use [Transition\n   * issue](#api-rest-api-3-issue-issueIdOrKey-transitions-post).\n   *\n   * The edits to the issue's fields are defined using `update` and `fields`. The fields that can be edited are\n   * determined using [ Get edit issue metadata](#api-rest-api-3-issue-issueIdOrKey-editmeta-get).\n   *\n   * The parent field may be set by key or ID. For standard issue types, the parent may be removed by setting\n   * `update.parent.set.none` to _true_. Note that the `description`, `environment`, and any `textarea` type custom\n   * fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`)\n   * accept a string and don't handle Atlassian Document Format content.\n   *\n   * Connect apps having an app user with _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), can override the screen security\n   * configuration using `overrideScreenSecurity` and `overrideEditableFlag`.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async editIssue<T = void>(parameters: Parameters.EditIssue, callback: Callback<T>): Promise<void>;\n  /**\n   * Edits an issue. Issue properties may be updated as part of the edit. Please note that issue transition is not\n   * supported and is ignored here. To transition an issue, please use [Transition\n   * issue](#api-rest-api-3-issue-issueIdOrKey-transitions-post).\n   *\n   * The edits to the issue's fields are defined using `update` and `fields`. The fields that can be edited are\n   * determined using [ Get edit issue metadata](#api-rest-api-3-issue-issueIdOrKey-editmeta-get).\n   *\n   * The parent field may be set by key or ID. For standard issue types, the parent may be removed by setting\n   * `update.parent.set.none` to _true_. Note that the `description`, `environment`, and any `textarea` type custom\n   * fields (multi-line text fields) take Atlassian Document Format content. Single line custom fields (`textfield`)\n   * accept a string and don't handle Atlassian Document Format content.\n   *\n   * Connect apps having an app user with _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), can override the screen security\n   * configuration using `overrideScreenSecurity` and `overrideEditableFlag`.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Edit issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project\n   *   that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async editIssue<T = void>(parameters: Parameters.EditIssue, callback?: never): Promise<T>;\n  async editIssue<T = void>(parameters: Parameters.EditIssue, callback?: Callback<T>): Promise<void | T> {\n    if (parameters.fields?.description && typeof parameters.fields.description === 'string') {\n      const {\n        fields: { description },\n      } = await this.getIssue({ issueIdOrKey: parameters.issueIdOrKey });\n\n      parameters.fields.description = {\n        type: 'doc',\n        version: description?.version ?? 1,\n        content: [\n          {\n            type: 'paragraph',\n            content: [\n              {\n                text: parameters.fields.description,\n                type: 'text',\n              },\n            ],\n          },\n        ],\n      };\n    }\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}`,\n      method: 'PUT',\n      params: {\n        notifyUsers: parameters.notifyUsers,\n        overrideScreenSecurity: parameters.overrideScreenSecurity,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n        returnIssue: parameters.returnIssue,\n        expand: parameters.expand,\n      },\n      data: {\n        fields: parameters.fields,\n        historyMetadata: parameters.historyMetadata,\n        properties: parameters.properties,\n        transition: parameters.transition,\n        update: parameters.update,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue.\n   *\n   * An issue cannot be deleted if it has one or more subtasks. To delete an issue with subtasks, set `deleteSubtasks`.\n   * This causes the issue's subtasks to be deleted with the issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Delete issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteIssue<T = void>(parameters: Parameters.DeleteIssue, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue.\n   *\n   * An issue cannot be deleted if it has one or more subtasks. To delete an issue with subtasks, set `deleteSubtasks`.\n   * This causes the issue's subtasks to be deleted with the issue.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Delete issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project containing the issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async deleteIssue<T = void>(parameters: Parameters.DeleteIssue, callback?: never): Promise<T>;\n  async deleteIssue<T = void>(parameters: Parameters.DeleteIssue, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}`,\n      method: 'DELETE',\n      params: {\n        deleteSubtasks: parameters.deleteSubtasks,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns an issue to a user. Use this operation when the calling user does not have the _Edit Issues_ permission but\n   * has the _Assign issue_ permission for the project that the issue is in.\n   *\n   * If `name` or `accountId` is set to:\n   *\n   * - `\"-1\"`, the issue is assigned to the default assignee for the project.\n   * - `null`, the issue is set to unassigned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ and _Assign Issues_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async assignIssue<T = void>(parameters: Parameters.AssignIssue, callback: Callback<T>): Promise<void>;\n  /**\n   * Assigns an issue to a user. Use this operation when the calling user does not have the _Edit Issues_ permission but\n   * has the _Assign issue_ permission for the project that the issue is in.\n   *\n   * If `name` or `accountId` is set to:\n   *\n   * - `\"-1\"`, the issue is assigned to the default assignee for the project.\n   * - `null`, the issue is set to unassigned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ and _Assign Issues_ [ project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async assignIssue<T = void>(parameters: Parameters.AssignIssue, callback?: never): Promise<T>;\n  async assignIssue<T = void>(parameters: Parameters.AssignIssue, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/assignee`,\n      method: 'PUT',\n      data: {\n        accountId: parameters.accountId,\n        accountType: parameters.accountType,\n        active: parameters.active,\n        applicationRoles: parameters.applicationRoles,\n        avatarUrls: parameters.avatarUrls,\n        displayName: parameters.displayName,\n        emailAddress: parameters.emailAddress,\n        expand: parameters.expand,\n        groups: parameters.groups,\n        key: parameters.key,\n        locale: parameters.locale,\n        name: parameters.name,\n        self: parameters.self,\n        timeZone: parameters.timeZone,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * changelogs for an issue sorted by date, starting from the oldest.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getChangeLogs<T = Models.PageChangelog>(\n    parameters: Parameters.GetChangeLogs,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * changelogs for an issue sorted by date, starting from the oldest.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getChangeLogs<T = Models.PageChangelog>(parameters: Parameters.GetChangeLogs, callback?: never): Promise<T>;\n  async getChangeLogs<T = Models.PageChangelog>(\n    parameters: Parameters.GetChangeLogs,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/changelog`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns changelogs for an issue specified by a list of changelog IDs.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getChangeLogsByIds<T = Models.PageOfChangelogs>(\n    parameters: Parameters.GetChangeLogsByIds,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns changelogs for an issue specified by a list of changelog IDs.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getChangeLogsByIds<T = Models.PageOfChangelogs>(\n    parameters: Parameters.GetChangeLogsByIds,\n    callback?: never,\n  ): Promise<T>;\n  async getChangeLogsByIds<T = Models.PageOfChangelogs>(\n    parameters: Parameters.GetChangeLogsByIds,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/changelog/list`,\n      method: 'POST',\n      data: {\n        changelogIds: parameters.changelogIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the edit screen fields for an issue that are visible to and editable by the user. Use the information to\n   * populate the requests in [Edit issue](#api-rest-api-3-issue-issueIdOrKey-put).\n   *\n   * This endpoint will check for these conditions:\n   *\n   * 1. Field is available on a field screen - through screen, screen scheme, issue type screen scheme, and issue type\n   *    scheme configuration. `overrideScreenSecurity=true` skips this condition.\n   * 2. Field is visible in the [field\n   *    configuration](https://support.atlassian.com/jira-cloud-administration/docs/change-a-field-configuration/).\n   *    `overrideScreenSecurity=true` skips this condition.\n   * 3. Field is shown on the issue: each field has different conditions here. For example: Attachment field only shows if\n   *    attachments are enabled. Assignee only shows if user has permissions to assign the issue.\n   * 4. If a field is custom then it must have valid custom field context, applicable for its project and issue type. All\n   *    system fields are assumed to have context in all projects and all issue types.\n   * 5. Issue has a project, issue type, and status defined.\n   * 6. Issue is assigned to a valid workflow, and the current status has assigned a workflow step.\n   *    `overrideEditableFlag=true` skips this condition.\n   * 7. The current workflow step is editable. This is true by default, but [can be disabled by\n   *    setting](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) the\n   *    `jira.issue.editable` property to `false`. `overrideEditableFlag=true` skips this condition.\n   * 8. User has [Edit issues\n   *    permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/).\n   * 9. Workflow permissions allow editing a field. This is true by default but [can be\n   *    modified](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) using\n   *    `jira.permission.*` workflow properties.\n   *\n   * Fields hidden using [Issue layout settings\n   * page](https://support.atlassian.com/jira-software-cloud/docs/configure-field-layout-in-the-issue-view/) remain\n   * editable.\n   *\n   * Connect apps having an app user with _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), can return additional details using:\n   *\n   * - `overrideScreenSecurity` When this flag is `true`, then this endpoint skips checking if fields are available\n   *   through screens, and field configuration (conditions 1. and 2. from the list above).\n   * - `overrideEditableFlag` When this flag is `true`, then this endpoint skips checking if workflow is present and if\n   *   the current step is editable (conditions 6. and 7. from the list above).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * Note: For any fields to be editable the user must have the _Edit issues_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the issue.\n   */\n  async getEditIssueMeta<T = Models.IssueUpdateMetadata>(\n    parameters: Parameters.GetEditIssueMeta,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the edit screen fields for an issue that are visible to and editable by the user. Use the information to\n   * populate the requests in [Edit issue](#api-rest-api-3-issue-issueIdOrKey-put).\n   *\n   * This endpoint will check for these conditions:\n   *\n   * 1. Field is available on a field screen - through screen, screen scheme, issue type screen scheme, and issue type\n   *    scheme configuration. `overrideScreenSecurity=true` skips this condition.\n   * 2. Field is visible in the [field\n   *    configuration](https://support.atlassian.com/jira-cloud-administration/docs/change-a-field-configuration/).\n   *    `overrideScreenSecurity=true` skips this condition.\n   * 3. Field is shown on the issue: each field has different conditions here. For example: Attachment field only shows if\n   *    attachments are enabled. Assignee only shows if user has permissions to assign the issue.\n   * 4. If a field is custom then it must have valid custom field context, applicable for its project and issue type. All\n   *    system fields are assumed to have context in all projects and all issue types.\n   * 5. Issue has a project, issue type, and status defined.\n   * 6. Issue is assigned to a valid workflow, and the current status has assigned a workflow step.\n   *    `overrideEditableFlag=true` skips this condition.\n   * 7. The current workflow step is editable. This is true by default, but [can be disabled by\n   *    setting](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) the\n   *    `jira.issue.editable` property to `false`. `overrideEditableFlag=true` skips this condition.\n   * 8. User has [Edit issues\n   *    permission](https://support.atlassian.com/jira-cloud-administration/docs/permissions-for-company-managed-projects/).\n   * 9. Workflow permissions allow editing a field. This is true by default but [can be\n   *    modified](https://support.atlassian.com/jira-cloud-administration/docs/use-workflow-properties/) using\n   *    `jira.permission.*` workflow properties.\n   *\n   * Fields hidden using [Issue layout settings\n   * page](https://support.atlassian.com/jira-software-cloud/docs/configure-field-layout-in-the-issue-view/) remain\n   * editable.\n   *\n   * Connect apps having an app user with _Administer Jira_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg), and Forge apps acting on behalf of users with _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), can return additional details using:\n   *\n   * - `overrideScreenSecurity` When this flag is `true`, then this endpoint skips checking if fields are available\n   *   through screens, and field configuration (conditions 1. and 2. from the list above).\n   * - `overrideEditableFlag` When this flag is `true`, then this endpoint skips checking if workflow is present and if\n   *   the current step is editable (conditions 6. and 7. from the list above).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * Note: For any fields to be editable the user must have the _Edit issues_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the issue.\n   */\n  async getEditIssueMeta<T = Models.IssueUpdateMetadata>(\n    parameters: Parameters.GetEditIssueMeta,\n    callback?: never,\n  ): Promise<T>;\n  async getEditIssueMeta<T = Models.IssueUpdateMetadata>(\n    parameters: Parameters.GetEditIssueMeta,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/editmeta`,\n      method: 'GET',\n      params: {\n        overrideScreenSecurity: parameters.overrideScreenSecurity,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an email notification for an issue and adds it to the mail queue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async notify<T = void>(parameters: Parameters.Notify, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates an email notification for an issue and adds it to the mail queue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async notify<T = void>(parameters: Parameters.Notify, callback?: never): Promise<T>;\n  async notify<T = void>(parameters: Parameters.Notify, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/notify`,\n      method: 'POST',\n      data: {\n        htmlBody: parameters.htmlBody,\n        restrict: parameters.restrict,\n        subject: parameters.subject,\n        textBody: parameters.textBody,\n        to: parameters.to,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns either all transitions or a transition that can be performed by the user on an issue, based on the issue's\n   * status.\n   *\n   * Note, if a request is made for a transition that does not exist or cannot be performed on the issue, given its\n   * status, the response will return any empty transitions list.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required: A list or\n   * transition is returned only when the user has:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * However, if the user does not have the _Transition issues_ [ project\n   * permission](https://confluence.atlassian.com/x/yodKLg) the response will not list any transitions.\n   */\n  async getTransitions<T = Models.Transitions>(\n    parameters: Parameters.GetTransitions,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns either all transitions or a transition that can be performed by the user on an issue, based on the issue's\n   * status.\n   *\n   * Note, if a request is made for a transition that does not exist or cannot be performed on the issue, given its\n   * status, the response will return any empty transitions list.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required: A list or\n   * transition is returned only when the user has:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * However, if the user does not have the _Transition issues_ [ project\n   * permission](https://confluence.atlassian.com/x/yodKLg) the response will not list any transitions.\n   */\n  async getTransitions<T = Models.Transitions>(parameters: Parameters.GetTransitions, callback?: never): Promise<T>;\n  async getTransitions<T = Models.Transitions>(\n    parameters: Parameters.GetTransitions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/transitions`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n        transitionId: parameters.transitionId,\n        skipRemoteOnlyCondition: parameters.skipRemoteOnlyCondition,\n        includeUnavailableTransitions: parameters.includeUnavailableTransitions,\n        sortByOpsBarAndStatus: parameters.sortByOpsBarAndStatus,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen.\n   *\n   * SortByCategory To update the fields on the transition screen, specify the fields in the `fields` or `update`\n   * parameters in the request body. Get details about the fields using [ Get\n   * transitions](#api-rest-api-3-issue-issueIdOrKey-transitions-get) with the `transitions.fields` expand.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Transition issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async doTransition<T = void>(parameters: Parameters.DoTransition, callback: Callback<T>): Promise<void>;\n  /**\n   * Performs an issue transition and, if the transition has a screen, updates the fields from the transition screen.\n   *\n   * SortByCategory To update the fields on the transition screen, specify the fields in the `fields` or `update`\n   * parameters in the request body. Get details about the fields using [ Get\n   * transitions](#api-rest-api-3-issue-issueIdOrKey-transitions-get) with the `transitions.fields` expand.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Transition issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async doTransition<T = void>(parameters: Parameters.DoTransition, callback?: never): Promise<T>;\n  async doTransition<T = void>(parameters: Parameters.DoTransition, callback?: Callback<T>): Promise<void | T> {\n    if (parameters.fields?.description && typeof parameters.fields.description === 'string') {\n      parameters.fields.description = {\n        type: 'doc',\n        version: 1,\n        content: [\n          {\n            type: 'paragraph',\n            content: [\n              {\n                text: parameters.fields.description,\n                type: 'text',\n              },\n            ],\n          },\n        ],\n      };\n    }\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/transitions`,\n      method: 'POST',\n      data: {\n        fields: parameters.fields,\n        historyMetadata: parameters.historyMetadata,\n        properties: parameters.properties,\n        transition: parameters.transition,\n        update: parameters.update,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Enables admins to retrieve details of all archived issues. Upon a successful request, the admin who submitted it\n   * will receive an email with a link to download a CSV file with the issue details.\n   *\n   * Note that this API only exports the values of system fields and archival-specific fields (`ArchivedBy` and\n   * `ArchivedDate`). Custom fields aren't supported.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   *\n   * **Rate limiting:** Only a single request can be active at any given time.\n   */\n  async exportArchivedIssues<T = Models.ExportArchivedIssuesTaskProgress>(\n    parameters: Parameters.ExportArchivedIssues | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Enables admins to retrieve details of all archived issues. Upon a successful request, the admin who submitted it\n   * will receive an email with a link to download a CSV file with the issue details.\n   *\n   * Note that this API only exports the values of system fields and archival-specific fields (`ArchivedBy` and\n   * `ArchivedDate`). Custom fields aren't supported.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Jira\n   * admin or site admin: [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   *\n   * **License required:** Premium or Enterprise\n   *\n   * **Signed-in users only:** This API can't be accessed anonymously.\n   *\n   * **Rate limiting:** Only a single request can be active at any given time.\n   */\n  async exportArchivedIssues<T = Models.ExportArchivedIssuesTaskProgress>(\n    parameters?: Parameters.ExportArchivedIssues,\n    callback?: never,\n  ): Promise<T>;\n  async exportArchivedIssues<T = Models.ExportArchivedIssuesTaskProgress>(\n    parameters?: Parameters.ExportArchivedIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issues/archive/export',\n      method: 'PUT',\n      data: {\n        archivedBy: parameters?.archivedBy,\n        archivedDateRange: parameters?.archivedDateRange,\n        issueTypes: parameters?.issueTypes,\n        projects: parameters?.projects,\n        reporters: parameters?.reporters,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueSearch {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns lists of issues matching a query string. Use this resource to provide auto-completion suggestions when the\n   * user is looking for an issue using a word or string.\n   *\n   * This operation returns two lists:\n   *\n   * - `History Search` which includes issues from the user's history of created, edited, or viewed issues that contain\n   *   the string in the `query` parameter.\n   * - `Current Search` which includes issues that match the JQL expression in `currentJQL` and contain the string in the\n   *   `query` parameter.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getIssuePickerResource<T = Models.IssuePickerSuggestions>(\n    parameters: Parameters.GetIssuePickerResource | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns lists of issues matching a query string. Use this resource to provide auto-completion suggestions when the\n   * user is looking for an issue using a word or string.\n   *\n   * This operation returns two lists:\n   *\n   * - `History Search` which includes issues from the user's history of created, edited, or viewed issues that contain\n   *   the string in the `query` parameter.\n   * - `Current Search` which includes issues that match the JQL expression in `currentJQL` and contain the string in the\n   *   `query` parameter.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getIssuePickerResource<T = Models.IssuePickerSuggestions>(\n    parameters?: Parameters.GetIssuePickerResource,\n    callback?: never,\n  ): Promise<T>;\n  async getIssuePickerResource<T = Models.IssuePickerSuggestions>(\n    parameters?: Parameters.GetIssuePickerResource,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/picker',\n      method: 'GET',\n      params: {\n        query: parameters?.query,\n        currentJQL: parameters?.currentJQL,\n        currentIssueKey: parameters?.currentIssueKey,\n        currentProjectId: parameters?.currentProjectId,\n        showSubTasks: parameters?.showSubTasks,\n        showSubTaskParent: parameters?.showSubTaskParent,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Checks whether one or more issues would be returned by one or more JQL queries.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, issues are only matched against JQL queries where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async matchIssues<T = Models.IssueMatches>(parameters: Parameters.MatchIssues, callback: Callback<T>): Promise<void>;\n  /**\n   * Checks whether one or more issues would be returned by one or more JQL queries.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None,\n   * however, issues are only matched against JQL queries where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async matchIssues<T = Models.IssueMatches>(parameters: Parameters.MatchIssues, callback?: never): Promise<T>;\n  async matchIssues<T = Models.IssueMatches>(\n    parameters: Parameters.MatchIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/jql/match',\n      method: 'POST',\n      data: {\n        issueIds: parameters.issueIds,\n        jqls: parameters.jqls,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * @deprecated Use {@link searchForIssuesUsingJqlEnhancedSearch} instead. This endpoint doesn't support newer features\n   *   like read-after-write consistency.\n   *\n   *   Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   If the JQL query expression is too large to be encoded as a query parameter, use the\n   *   [POST](#api-rest-api-3-search-post) version of this resource.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesUsingJql<T = Models.SearchResults>(\n    parameters: Parameters.SearchForIssuesUsingJql,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * @deprecated Use {@link searchForIssuesUsingJqlEnhancedSearch} instead. This endpoint doesn't support newer features\n   *   like read-after-write consistency.\n   *\n   *   Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   If the JQL query expression is too large to be encoded as a query parameter, use the\n   *   [POST](#api-rest-api-3-search-post) version of this resource.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesUsingJql<T = Models.SearchResults>(\n    parameters: Parameters.SearchForIssuesUsingJql,\n    callback?: never,\n  ): Promise<T>;\n  async searchForIssuesUsingJql<T = Models.SearchResults>(\n    parameters: Parameters.SearchForIssuesUsingJql,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/search',\n      method: 'GET',\n      params: {\n        jql: parameters.jql,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        validateQuery: parameters.validateQuery,\n        fields: parameters.fields,\n        expand: parameters.expand,\n        properties: parameters.properties,\n        fieldsByKeys: parameters.fieldsByKeys,\n        failFast: parameters.failFast,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * @deprecated Use {@link searchForIssuesUsingJqlEnhancedSearchPost} instead. This endpoint doesn't support newer\n   *   features like read-after-write consistency.\n   *\n   *   Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   There is a [GET](#api-rest-api-3-search-get) version of this resource that can be used for smaller JQL query\n   *   expressions.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesUsingJqlPost<T = Models.SearchResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlPost | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * @deprecated Use {@link searchForIssuesUsingJqlEnhancedSearchPost} instead. This endpoint doesn't support newer\n   *   features like read-after-write consistency.\n   *\n   *   Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   There is a [GET](#api-rest-api-3-search-get) version of this resource that can be used for smaller JQL query\n   *   expressions.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesUsingJqlPost<T = Models.SearchResults>(\n    parameters?: Parameters.SearchForIssuesUsingJqlPost,\n    callback?: never,\n  ): Promise<T>;\n  async searchForIssuesUsingJqlPost<T = Models.SearchResults>(\n    parameters?: Parameters.SearchForIssuesUsingJqlPost,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/search',\n      method: 'POST',\n      data: {\n        expand: parameters?.expand,\n        fields: parameters?.fields,\n        fieldsByKeys: parameters?.fieldsByKeys,\n        jql: parameters?.jql,\n        maxResults: parameters?.maxResults,\n        properties: parameters?.properties,\n        startAt: parameters?.startAt,\n        validateQuery: parameters?.validateQuery,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Provide an estimated count of the issues that match the [JQL](https://confluence.atlassian.com/x/egORLQ). Recent\n   * updates might not be immediately visible in the returned output. This endpoint requires JQL to be bounded.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async countIssues<T = Models.JQLCount>(parameters: Parameters.CountIssues, callback: Callback<T>): Promise<void>;\n  /**\n   * Provide an estimated count of the issues that match the [JQL](https://confluence.atlassian.com/x/egORLQ). Recent\n   * updates might not be immediately visible in the returned output. This endpoint requires JQL to be bounded.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async countIssues<T = Models.JQLCount>(parameters: Parameters.CountIssues, callback?: never): Promise<T>;\n  async countIssues<T = Models.JQLCount>(\n    parameters: Parameters.CountIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/search/approximate-count',\n      method: 'POST',\n      data: {\n        jql: parameters.jql,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * @deprecated This endpoint is no longer supported and may be removed in a future version.\n   *\n   *   Searches for IDs of issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   Use the [Search](#api-rest-api-3-search-post) endpoint if you need to fetch more than just issue IDs. The Search\n   *   endpoint returns more information, but may take much longer to respond to requests. This is because it uses a\n   *   different mechanism for ordering results than this endpoint and doesn't provide the total number of results for\n   *   your query.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesIds<T = Models.IdSearchResults>(\n    parameters: Parameters.SearchForIssuesIds,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * @deprecated This endpoint is no longer supported and may be removed in a future version.\n   *\n   *   Searches for IDs of issues using [JQL](https://confluence.atlassian.com/x/egORLQ).\n   *\n   *   Use the [Search](#api-rest-api-3-search-post) endpoint if you need to fetch more than just issue IDs. The Search\n   *   endpoint returns more information, but may take much longer to respond to requests. This is because it uses a\n   *   different mechanism for ordering results than this endpoint and doesn't provide the total number of results for\n   *   your query.\n   *\n   *   This operation can be accessed anonymously.\n   *\n   *   **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   *   are included in the response where the user has:\n   *\n   *   - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *       issue.\n   *   - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *       to view the issue.\n   */\n  async searchForIssuesIds<T = Models.IdSearchResults>(\n    parameters: Parameters.SearchForIssuesIds,\n    callback?: never,\n  ): Promise<T>;\n  async searchForIssuesIds<T = Models.IdSearchResults>(\n    parameters: Parameters.SearchForIssuesIds,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/search/id',\n      method: 'POST',\n      data: {\n        jql: parameters.jql,\n        maxResults: parameters.maxResults,\n        nextPageToken: parameters.nextPageToken,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). Recent updates might not be immediately\n   * visible in the returned search results. If you need\n   * [read-after-write](https://developer.atlassian.com/cloud/jira/platform/search-and-reconcile/) consistency, you can\n   * utilize the `reconcileIssues` parameter to ensure stronger consistency assurances. This operation can be accessed\n   * anonymously.\n   *\n   * If the JQL query expression is too large to be encoded as a query parameter, use the\n   * [POST](#api-rest-api-3-search-post) version of this resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async searchForIssuesUsingJqlEnhancedSearch<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearch,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). Recent updates might not be immediately\n   * visible in the returned search results. If you need\n   * [read-after-write](https://developer.atlassian.com/cloud/jira/platform/search-and-reconcile/) consistency, you can\n   * utilize the `reconcileIssues` parameter to ensure stronger consistency assurances. This operation can be accessed\n   * anonymously.\n   *\n   * If the JQL query expression is too large to be encoded as a query parameter, use the\n   * [POST](#api-rest-api-3-search-post) version of this resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async searchForIssuesUsingJqlEnhancedSearch<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearch,\n    callback?: never,\n  ): Promise<T>;\n  async searchForIssuesUsingJqlEnhancedSearch<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearch,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/search/jql',\n      method: 'GET',\n      params: {\n        jql: parameters.jql,\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n        fields: parameters.fields,\n        expand: parameters.expand,\n        properties: parameters.properties,\n        fieldsByKeys: parameters.fieldsByKeys,\n        failFast: parameters.failFast,\n        reconcileIssues: parameters.reconcileIssues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). Recent updates might not be immediately\n   * visible in the returned search results. If you need\n   * [read-after-write](https://developer.atlassian.com/cloud/jira/platform/search-and-reconcile/) consistency, you can\n   * utilize the `reconcileIssues` parameter to ensure stronger consistency assurances. This operation can be accessed\n   * anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async searchForIssuesUsingJqlEnhancedSearchPost<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearchPost,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Searches for issues using [JQL](https://confluence.atlassian.com/x/egORLQ). Recent updates might not be immediately\n   * visible in the returned search results. If you need\n   * [read-after-write](https://developer.atlassian.com/cloud/jira/platform/search-and-reconcile/) consistency, you can\n   * utilize the `reconcileIssues` parameter to ensure stronger consistency assurances. This operation can be accessed\n   * anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issues\n   * are included in the response where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async searchForIssuesUsingJqlEnhancedSearchPost<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearchPost,\n    callback?: never,\n  ): Promise<T>;\n  async searchForIssuesUsingJqlEnhancedSearchPost<T = Models.SearchAndReconcileResults>(\n    parameters: Parameters.SearchForIssuesUsingJqlEnhancedSearchPost,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/search/jql',\n      method: 'POST',\n      data: {\n        expand: parameters.expand,\n        fields: parameters.fields,\n        fieldsByKeys: parameters.fieldsByKeys,\n        jql: parameters.jql,\n        maxResults: parameters.maxResults,\n        nextPageToken: parameters.nextPageToken,\n        properties: parameters.properties,\n        reconcileIssues: parameters.reconcileIssues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueSecurityLevel {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns issue security level members.\n   *\n   * Only issue security level members in context of classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueSecurityLevelMembers<T = Models.PageIssueSecurityLevelMember>(\n    parameters: Parameters.GetIssueSecurityLevelMembers,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns issue security level members.\n   *\n   * Only issue security level members in context of classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueSecurityLevelMembers<T = Models.PageIssueSecurityLevelMember>(\n    parameters: Parameters.GetIssueSecurityLevelMembers,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueSecurityLevelMembers<T = Models.PageIssueSecurityLevelMember>(\n    parameters: Parameters.GetIssueSecurityLevelMembers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuesecurityschemes/${parameters.issueSecuritySchemeId}/members`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        issueSecurityLevelId: parameters.issueSecurityLevelId,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns details of an issue security level.\n   *\n   * Use [Get issue security scheme](#api-rest-api-3-issuesecurityschemes-id-get) to obtain the IDs of issue security\n   * levels associated with the issue security scheme.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getIssueSecurityLevel<T = Models.SecurityLevel>(\n    parameters: Parameters.GetIssueSecurityLevel,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns details of an issue security level.\n   *\n   * Use [Get issue security scheme](#api-rest-api-3-issuesecurityschemes-id-get) to obtain the IDs of issue security\n   * levels associated with the issue security scheme.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getIssueSecurityLevel<T = Models.SecurityLevel>(\n    parameters: Parameters.GetIssueSecurityLevel,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueSecurityLevel<T = Models.SecurityLevel>(\n    parameters: Parameters.GetIssueSecurityLevel,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/securitylevel/${parameters.id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueSecuritySchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all [issue security schemes](https://confluence.atlassian.com/x/J4lKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueSecuritySchemes<T = Models.SecuritySchemes>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all [issue security schemes](https://confluence.atlassian.com/x/J4lKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueSecuritySchemes<T = Models.SecuritySchemes>(callback?: never): Promise<T>;\n  async getIssueSecuritySchemes<T = Models.SecuritySchemes>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuesecurityschemes',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a security scheme with security scheme levels and levels' members. You can create up to 100 security scheme\n   * levels and security scheme levels' members per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueSecurityScheme<T = Models.SecuritySchemeId>(\n    parameters: Parameters.CreateIssueSecurityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a security scheme with security scheme levels and levels' members. You can create up to 100 security scheme\n   * levels and security scheme levels' members per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueSecurityScheme<T = Models.SecuritySchemeId>(\n    parameters: Parameters.CreateIssueSecurityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueSecurityScheme<T = Models.SecuritySchemeId>(\n    parameters: Parameters.CreateIssueSecurityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuesecurityschemes',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        levels: parameters.levels,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * security levels.\n   *\n   * Only issue security levels in the context of classic projects are returned.\n   *\n   * Filtering using IDs is inclusive: if you specify both security scheme IDs and level IDs, the result will include\n   * both specified issue security levels and all issue security levels from the specified schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSecurityLevels<T = Models.PageSecurityLevel>(\n    parameters: Parameters.GetSecurityLevels | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * security levels.\n   *\n   * Only issue security levels in the context of classic projects are returned.\n   *\n   * Filtering using IDs is inclusive: if you specify both security scheme IDs and level IDs, the result will include\n   * both specified issue security levels and all issue security levels from the specified schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSecurityLevels<T = Models.PageSecurityLevel>(\n    parameters?: Parameters.GetSecurityLevels,\n    callback?: never,\n  ): Promise<T>;\n  async getSecurityLevels<T = Models.PageSecurityLevel>(\n    parameters?: Parameters.GetSecurityLevels,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuesecurityschemes/level',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        schemeId: parameters?.schemeId,\n        onlyDefault: parameters?.onlyDefault,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets default issue security levels for schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultLevels<T = void>(\n    parameters: Parameters.SetDefaultLevels | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets default issue security levels for schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setDefaultLevels<T = void>(parameters?: Parameters.SetDefaultLevels, callback?: never): Promise<T>;\n  async setDefaultLevels<T = void>(\n    parameters?: Parameters.SetDefaultLevels,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuesecurityschemes/level/default',\n      method: 'PUT',\n      data: {\n        defaultValues: parameters?.defaultValues,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * security level members.\n   *\n   * Only issue security level members in the context of classic projects are returned.\n   *\n   * Filtering using parameters is inclusive: if you specify both security scheme IDs and level IDs, the result will\n   * include all issue security level members from the specified schemes and levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSecurityLevelMembers<T = Models.PageSecurityLevelMember>(\n    parameters: Parameters.GetSecurityLevelMembers | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * security level members.\n   *\n   * Only issue security level members in the context of classic projects are returned.\n   *\n   * Filtering using parameters is inclusive: if you specify both security scheme IDs and level IDs, the result will\n   * include all issue security level members from the specified schemes and levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSecurityLevelMembers<T = Models.PageSecurityLevelMember>(\n    parameters?: Parameters.GetSecurityLevelMembers,\n    callback?: never,\n  ): Promise<T>;\n  async getSecurityLevelMembers<T = Models.PageSecurityLevelMember>(\n    parameters?: Parameters.GetSecurityLevelMembers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuesecurityschemes/level/member',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        schemeId: parameters?.schemeId,\n        levelId: parameters?.levelId,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) mapping of\n   * projects that are using security schemes. You can provide either one or multiple security scheme IDs or project IDs\n   * to filter by. If you don't provide any, this will return a list of all mappings. Only issue security schemes in the\n   * context of classic projects are supported.\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchProjectsUsingSecuritySchemes<T = Models.PageIssueSecuritySchemeToProjectMapping>(\n    parameters: Parameters.SearchProjectsUsingSecuritySchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) mapping of\n   * projects that are using security schemes. You can provide either one or multiple security scheme IDs or project IDs\n   * to filter by. If you don't provide any, this will return a list of all mappings. Only issue security schemes in the\n   * context of classic projects are supported.\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchProjectsUsingSecuritySchemes<T = Models.PageIssueSecuritySchemeToProjectMapping>(\n    parameters?: Parameters.SearchProjectsUsingSecuritySchemes,\n    callback?: never,\n  ): Promise<T>;\n  async searchProjectsUsingSecuritySchemes<T = Models.PageIssueSecuritySchemeToProjectMapping>(\n    parameters?: Parameters.SearchProjectsUsingSecuritySchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuesecurityschemes/project',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        issueSecuritySchemeId: parameters?.issueSecuritySchemeId,\n        projectId: parameters?.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Associates an issue security scheme with a project and remaps security levels of issues to the new levels, if\n   * provided.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async associateSchemesToProjects<T = Models.TaskProgressObject>(\n    parameters: Parameters.AssociateSchemesToProjects,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Associates an issue security scheme with a project and remaps security levels of issues to the new levels, if\n   * provided.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async associateSchemesToProjects<T = Models.TaskProgressObject>(\n    parameters: Parameters.AssociateSchemesToProjects,\n    callback?: never,\n  ): Promise<T>;\n  async associateSchemesToProjects<T = Models.TaskProgressObject>(\n    parameters: Parameters.AssociateSchemesToProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuesecurityschemes/project',\n      method: 'PUT',\n      data: {\n        oldToNewSecurityLevelMappings: parameters.oldToNewSecurityLevelMappings,\n        projectId: parameters.projectId,\n        schemeId: parameters.schemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * security schemes.\\\n   * If you specify the project ID parameter, the result will contain issue security schemes and related project IDs you\n   * filter by. Use {@link IssueSecuritySchemeResource#searchProjectsUsingSecuritySchemes(String, String, Set, Set)} to\n   * obtain all projects related to scheme.\n   *\n   * Only issue security schemes in the context of classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchSecuritySchemes<T = Models.PageSecuritySchemeWithProjects>(\n    parameters: Parameters.SearchSecuritySchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * security schemes.\\\n   * If you specify the project ID parameter, the result will contain issue security schemes and related project IDs you\n   * filter by. Use {@link IssueSecuritySchemeResource#searchProjectsUsingSecuritySchemes(String, String, Set, Set)} to\n   * obtain all projects related to scheme.\n   *\n   * Only issue security schemes in the context of classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchSecuritySchemes<T = Models.PageSecuritySchemeWithProjects>(\n    parameters?: Parameters.SearchSecuritySchemes,\n    callback?: never,\n  ): Promise<T>;\n  async searchSecuritySchemes<T = Models.PageSecuritySchemeWithProjects>(\n    parameters?: Parameters.SearchSecuritySchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuesecurityschemes/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        projectId: parameters?.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue security scheme along with its security levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project that uses the\n   *   requested issue security scheme.\n   */\n  async getIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetIssueSecurityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an issue security scheme along with its security levels.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project that uses the\n   *   requested issue security scheme.\n   */\n  async getIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetIssueSecurityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetIssueSecurityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuesecurityschemes/${parameters.id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueSecurityScheme<T = void>(\n    parameters: Parameters.UpdateIssueSecurityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueSecurityScheme<T = void>(\n    parameters: Parameters.UpdateIssueSecurityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateIssueSecurityScheme<T = void>(\n    parameters: Parameters.UpdateIssueSecurityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuesecurityschemes/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteSecurityScheme<T = void>(\n    parameters: Parameters.DeleteSecurityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteSecurityScheme<T = void>(parameters: Parameters.DeleteSecurityScheme, callback?: never): Promise<T>;\n  async deleteSecurityScheme<T = void>(\n    parameters: Parameters.DeleteSecurityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuesecurityschemes/${parameters.schemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds levels and levels' members to the issue security scheme. You can add up to 100 levels per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addSecurityLevel<T = void>(parameters: Parameters.AddSecurityLevel, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds levels and levels' members to the issue security scheme. You can add up to 100 levels per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addSecurityLevel<T = void>(parameters: Parameters.AddSecurityLevel, callback?: never): Promise<T>;\n  async addSecurityLevel<T = void>(parameters: Parameters.AddSecurityLevel, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuesecurityschemes/${parameters.schemeId}/level`,\n      method: 'PUT',\n      data: {\n        levels: parameters.levels,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the issue security level.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateSecurityLevel<T = void>(parameters: Parameters.UpdateSecurityLevel, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates the issue security level.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateSecurityLevel<T = void>(parameters: Parameters.UpdateSecurityLevel, callback?: never): Promise<T>;\n  async updateSecurityLevel<T = void>(\n    parameters: Parameters.UpdateSecurityLevel,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuesecurityschemes/${parameters.schemeId}/level/${parameters.levelId}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue security level.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeLevel<T = unknown>(parameters: Parameters.RemoveLevel, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes an issue security level.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeLevel<T = unknown>(parameters: Parameters.RemoveLevel, callback?: never): Promise<T>;\n  async removeLevel<T = unknown>(parameters: Parameters.RemoveLevel, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuesecurityschemes/${parameters.schemeId}/level/${parameters.levelId}`,\n      method: 'DELETE',\n      params: {\n        replaceWith: parameters.replaceWith,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds members to the issue security level. You can add up to 100 members per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addSecurityLevelMembers<T = void>(\n    parameters: Parameters.AddSecurityLevelMembers,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds members to the issue security level. You can add up to 100 members per request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addSecurityLevelMembers<T = void>(parameters: Parameters.AddSecurityLevelMembers, callback?: never): Promise<T>;\n  async addSecurityLevelMembers<T = void>(\n    parameters: Parameters.AddSecurityLevelMembers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuesecurityschemes/${parameters.schemeId}/level/${parameters.levelId}/member`,\n      method: 'PUT',\n      data: {\n        members: parameters.members,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes an issue security level member from an issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeMemberFromSecurityLevel<T = void>(\n    parameters: Parameters.RemoveMemberFromSecurityLevel,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes an issue security level member from an issue security scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeMemberFromSecurityLevel<T = void>(\n    parameters: Parameters.RemoveMemberFromSecurityLevel,\n    callback?: never,\n  ): Promise<T>;\n  async removeMemberFromSecurityLevel<T = void>(\n    parameters: Parameters.RemoveMemberFromSecurityLevel,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuesecurityschemes/${parameters.schemeId}/level/${parameters.levelId}/member/${parameters.memberId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueTypeProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * keys of the issue type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the property keys of any\n   *   issue type.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) to get the property keys of any\n   *   issue types associated with the projects the user has permission to browse.\n   */\n  async getIssueTypePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssueTypePropertyKeys,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * keys of the issue type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the property keys of any\n   *   issue type.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) to get the property keys of any\n   *   issue types associated with the projects the user has permission to browse.\n   */\n  async getIssueTypePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssueTypePropertyKeys,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypePropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetIssueTypePropertyKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetype/${parameters.issueTypeId}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the key and value of the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the details of any issue\n   *   type.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) to get the details of any issue\n   *   types associated with the projects the user has permission to browse.\n   */\n  async getIssueTypeProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueTypeProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the key and value of the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to get the details of any issue\n   *   type.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) to get the details of any issue\n   *   types associated with the projects the user has permission to browse.\n   */\n  async getIssueTypeProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueTypeProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetIssueTypeProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetype/${parameters.issueTypeId}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates or updates the value of the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   * Use this resource to store and update data against an issue type.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setIssueTypeProperty<T = unknown>(\n    parameters: Parameters.SetIssueTypeProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates or updates the value of the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   * Use this resource to store and update data against an issue type.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setIssueTypeProperty<T = unknown>(parameters: Parameters.SetIssueTypeProperty, callback?: never): Promise<T>;\n  async setIssueTypeProperty<T = unknown>(\n    parameters: Parameters.SetIssueTypeProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetype/${parameters.issueTypeId}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeProperty<T = void>(\n    parameters: Parameters.DeleteIssueTypeProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the [issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeProperty<T = void>(parameters: Parameters.DeleteIssueTypeProperty, callback?: never): Promise<T>;\n  async deleteIssueTypeProperty<T = void>(\n    parameters: Parameters.DeleteIssueTypeProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetype/${parameters.issueTypeId}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueTypes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all issue types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issue\n   * types are only returned as follows:\n   *\n   * - If the user has the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), all issue\n   *   types are returned.\n   * - If the user has the _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or\n   *   more projects, the issue types associated with the projects the user has permission to browse are returned.\n   * - If the user is anonymous then they will be able to access projects with the _Browse projects_ for anonymous users\n   * - If the user authentication is incorrect they will fall back to anonymous\n   */\n  async getIssueAllTypes<T = Models.IssueTypeDetails[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all issue types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Issue\n   * types are only returned as follows:\n   *\n   * - If the user has the _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), all issue\n   *   types are returned.\n   * - If the user has the _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or\n   *   more projects, the issue types associated with the projects the user has permission to browse are returned.\n   * - If the user is anonymous then they will be able to access projects with the _Browse projects_ for anonymous users\n   * - If the user authentication is incorrect they will fall back to anonymous\n   */\n  async getIssueAllTypes<T = Models.IssueTypeDetails[]>(callback?: never): Promise<T>;\n  async getIssueAllTypes<T = Models.IssueTypeDetails[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetype',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue type and adds it to the default issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.CreateIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue type and adds it to the default issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.CreateIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.CreateIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetype',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        hierarchyLevel: parameters.hierarchyLevel ?? 0,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns issue types for a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the relevant project or _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypesForProject<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetIssueTypesForProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns issue types for a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) in the relevant project or _Administer\n   * Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypesForProject<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetIssueTypesForProject,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypesForProject<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetIssueTypesForProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetype/project',\n      method: 'GET',\n      params: {\n        projectId: parameters.projectId,\n        level: parameters.level,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns an issue type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) in a project the issue type is associated\n   * with or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.GetIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns an issue type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) in a project the issue type is associated\n   * with or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueType<T = Models.IssueTypeDetails>(parameters: Parameters.GetIssueType, callback?: never): Promise<T>;\n  async getIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.GetIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetype/${parameters.id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the issue type.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.UpdateIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the issue type.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.UpdateIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async updateIssueType<T = Models.IssueTypeDetails>(\n    parameters: Parameters.UpdateIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetype/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        avatarId: parameters.avatarId,\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the issue type. If the issue type is in use, all uses are updated with the alternative issue type\n   * (`alternativeIssueTypeId`). A list of alternative issue types are obtained from the [Get alternative issue\n   * types](#api-rest-api-3-issuetype-id-alternatives-get) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueType<T = void>(parameters: Parameters.DeleteIssueType, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes the issue type. If the issue type is in use, all uses are updated with the alternative issue type\n   * (`alternativeIssueTypeId`). A list of alternative issue types are obtained from the [Get alternative issue\n   * types](#api-rest-api-3-issuetype-id-alternatives-get) resource.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueType<T = void>(parameters: Parameters.DeleteIssueType, callback?: never): Promise<T>;\n  async deleteIssueType<T = void>(parameters: Parameters.DeleteIssueType, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetype/${parameters.id}`,\n      method: 'DELETE',\n      params: {\n        alternativeIssueTypeId: parameters.alternativeIssueTypeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of issue types that can be used to replace the issue type. The alternative issue types are those\n   * assigned to the same workflow scheme, field configuration scheme, and screen scheme.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAlternativeIssueTypes<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetAlternativeIssueTypes,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of issue types that can be used to replace the issue type. The alternative issue types are those\n   * assigned to the same workflow scheme, field configuration scheme, and screen scheme.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAlternativeIssueTypes<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetAlternativeIssueTypes,\n    callback?: never,\n  ): Promise<T>;\n  async getAlternativeIssueTypes<T = Models.IssueTypeDetails[]>(\n    parameters: Parameters.GetAlternativeIssueTypes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetype/${parameters.id}/alternatives`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Loads an avatar for the issue type.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar, use [ Update issue\n   * type](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-types/#api-rest-api-3-issuetype-id-put)\n   * to set it as the issue type's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateIssueTypeAvatar,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Loads an avatar for the issue type.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar, use [ Update issue\n   * type](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-types/#api-rest-api-3-issuetype-id-put)\n   * to set it as the issue type's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateIssueTypeAvatar,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueTypeAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateIssueTypeAvatar,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetype/${parameters.id}/avatar2`,\n      method: 'POST',\n      headers: {\n        'X-Atlassian-Token': 'no-check',\n        'Content-Type': parameters.mimeType,\n      },\n      params: {\n        x: parameters.x,\n        y: parameters.y,\n        size: parameters.size ?? 0,\n      },\n      data: parameters.avatar,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueTypeSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type schemes.\n   *\n   * Only issue type schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllIssueTypeSchemes<T = Models.PageIssueTypeScheme>(\n    parameters: Parameters.GetAllIssueTypeSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type schemes.\n   *\n   * Only issue type schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllIssueTypeSchemes<T = Models.PageIssueTypeScheme>(\n    parameters?: Parameters.GetAllIssueTypeSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getAllIssueTypeSchemes<T = Models.PageIssueTypeScheme>(\n    parameters?: Parameters.GetAllIssueTypeSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetypescheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        orderBy: parameters?.orderBy,\n        expand: parameters?.expand,\n        queryString: parameters?.queryString,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeScheme<T = Models.IssueTypeSchemeID>(\n    parameters: Parameters.CreateIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeScheme<T = Models.IssueTypeSchemeID>(\n    parameters: Parameters.CreateIssueTypeScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueTypeScheme<T = Models.IssueTypeSchemeID>(\n    parameters: Parameters.CreateIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetypescheme',\n      method: 'POST',\n      data: {\n        defaultIssueTypeId: parameters.defaultIssueTypeId,\n        description: parameters.description,\n        issueTypeIds: parameters.issueTypeIds,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type scheme items.\n   *\n   * Only issue type scheme items used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeSchemesMapping<T = Models.PageIssueTypeSchemeMapping>(\n    parameters: Parameters.GetIssueTypeSchemesMapping | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type scheme items.\n   *\n   * Only issue type scheme items used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeSchemesMapping<T = Models.PageIssueTypeSchemeMapping>(\n    parameters?: Parameters.GetIssueTypeSchemesMapping,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeSchemesMapping<T = Models.PageIssueTypeSchemeMapping>(\n    parameters?: Parameters.GetIssueTypeSchemesMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetypescheme/mapping',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        issueTypeSchemeId: parameters?.issueTypeSchemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type schemes and, for each issue type scheme, a list of the projects that use it.\n   *\n   * Only issue type schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeSchemeForProjects<T = Models.PageIssueTypeSchemeProjects>(\n    parameters: Parameters.GetIssueTypeSchemeForProjects,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type schemes and, for each issue type scheme, a list of the projects that use it.\n   *\n   * Only issue type schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeSchemeForProjects<T = Models.PageIssueTypeSchemeProjects>(\n    parameters: Parameters.GetIssueTypeSchemeForProjects,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeSchemeForProjects<T = Models.PageIssueTypeSchemeProjects>(\n    parameters: Parameters.GetIssueTypeSchemeForProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetypescheme/project',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns an issue type scheme to a project.\n   *\n   * If any issues in the project are assigned issue types not present in the new scheme, the operation will fail. To\n   * complete the assignment those issues must be updated to use issue types in the new scheme.\n   *\n   * Issue type schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignIssueTypeSchemeToProject<T = void>(\n    parameters: Parameters.AssignIssueTypeSchemeToProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns an issue type scheme to a project.\n   *\n   * If any issues in the project are assigned issue types not present in the new scheme, the operation will fail. To\n   * complete the assignment those issues must be updated to use issue types in the new scheme.\n   *\n   * Issue type schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignIssueTypeSchemeToProject<T = void>(\n    parameters: Parameters.AssignIssueTypeSchemeToProject,\n    callback?: never,\n  ): Promise<T>;\n  async assignIssueTypeSchemeToProject<T = void>(\n    parameters: Parameters.AssignIssueTypeSchemeToProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetypescheme/project',\n      method: 'PUT',\n      data: {\n        issueTypeSchemeId: parameters.issueTypeSchemeId,\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueTypeScheme<T = void>(\n    parameters: Parameters.UpdateIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueTypeScheme<T = void>(parameters: Parameters.UpdateIssueTypeScheme, callback?: never): Promise<T>;\n  async updateIssueTypeScheme<T = void>(\n    parameters: Parameters.UpdateIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescheme/${parameters.issueTypeSchemeId}`,\n      method: 'PUT',\n      data: {\n        defaultIssueTypeId: parameters.defaultIssueTypeId,\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue type scheme.\n   *\n   * Only issue type schemes used in classic projects can be deleted.\n   *\n   * Any projects assigned to the scheme are reassigned to the default issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an issue type scheme.\n   *\n   * Only issue type schemes used in classic projects can be deleted.\n   *\n   * Any projects assigned to the scheme are reassigned to the default issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeScheme<T = void>(parameters: Parameters.DeleteIssueTypeScheme, callback?: never): Promise<T>;\n  async deleteIssueTypeScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescheme/${parameters.issueTypeSchemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds issue types to an issue type scheme.\n   *\n   * The added issue types are appended to the issue types list.\n   *\n   * If any of the issue types exist in the issue type scheme, the operation fails and no issue types are added.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addIssueTypesToIssueTypeScheme<T = void>(\n    parameters: Parameters.AddIssueTypesToIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds issue types to an issue type scheme.\n   *\n   * The added issue types are appended to the issue types list.\n   *\n   * If any of the issue types exist in the issue type scheme, the operation fails and no issue types are added.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addIssueTypesToIssueTypeScheme<T = void>(\n    parameters: Parameters.AddIssueTypesToIssueTypeScheme,\n    callback?: never,\n  ): Promise<T>;\n  async addIssueTypesToIssueTypeScheme<T = void>(\n    parameters: Parameters.AddIssueTypesToIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescheme/${parameters.issueTypeSchemeId}/issuetype`,\n      method: 'PUT',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the order of issue types in an issue type scheme.\n   *\n   * The request body parameters must meet the following requirements:\n   *\n   * - All of the issue types must belong to the issue type scheme.\n   * - Either `after` or `position` must be provided.\n   * - The issue type in `after` must not be in the issue type list.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async reorderIssueTypesInIssueTypeScheme<T = void>(\n    parameters: Parameters.ReorderIssueTypesInIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Changes the order of issue types in an issue type scheme.\n   *\n   * The request body parameters must meet the following requirements:\n   *\n   * - All of the issue types must belong to the issue type scheme.\n   * - Either `after` or `position` must be provided.\n   * - The issue type in `after` must not be in the issue type list.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async reorderIssueTypesInIssueTypeScheme<T = void>(\n    parameters: Parameters.ReorderIssueTypesInIssueTypeScheme,\n    callback?: never,\n  ): Promise<T>;\n  async reorderIssueTypesInIssueTypeScheme<T = void>(\n    parameters: Parameters.ReorderIssueTypesInIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescheme/${parameters.issueTypeSchemeId}/issuetype/move`,\n      method: 'PUT',\n      data: {\n        after: parameters.after,\n        issueTypeIds: parameters.issueTypeIds,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes an issue type from an issue type scheme.\n   *\n   * This operation cannot remove:\n   *\n   * - Any issue type used by issues.\n   * - Any issue types from the default issue type scheme.\n   * - The last standard issue type from an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypeFromIssueTypeScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypeFromIssueTypeScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes an issue type from an issue type scheme.\n   *\n   * This operation cannot remove:\n   *\n   * - Any issue type used by issues.\n   * - Any issue types from the default issue type scheme.\n   * - The last standard issue type from an issue type scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeIssueTypeFromIssueTypeScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypeFromIssueTypeScheme,\n    callback?: never,\n  ): Promise<T>;\n  async removeIssueTypeFromIssueTypeScheme<T = void>(\n    parameters: Parameters.RemoveIssueTypeFromIssueTypeScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescheme/${parameters.issueTypeSchemeId}/issuetype/${parameters.issueTypeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueTypeScreenSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type screen schemes.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemes<T = Models.PageIssueTypeScreenScheme>(\n    parameters: Parameters.GetIssueTypeScreenSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type screen schemes.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemes<T = Models.PageIssueTypeScreenScheme>(\n    parameters?: Parameters.GetIssueTypeScreenSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeScreenSchemes<T = Models.PageIssueTypeScreenScheme>(\n    parameters?: Parameters.GetIssueTypeScreenSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetypescreenscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        queryString: parameters?.queryString,\n        orderBy: parameters?.orderBy,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeScreenScheme<T = Models.IssueTypeScreenSchemeId>(\n    parameters: Parameters.CreateIssueTypeScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createIssueTypeScreenScheme<T = Models.IssueTypeScreenSchemeId>(\n    parameters: Parameters.CreateIssueTypeScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createIssueTypeScreenScheme<T = Models.IssueTypeScreenSchemeId>(\n    parameters: Parameters.CreateIssueTypeScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetypescreenscheme',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        issueTypeMappings: parameters.issueTypeMappings,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type screen scheme items.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemeMappings<T = Models.PageIssueTypeScreenSchemeItem>(\n    parameters: Parameters.GetIssueTypeScreenSchemeMappings | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type screen scheme items.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemeMappings<T = Models.PageIssueTypeScreenSchemeItem>(\n    parameters?: Parameters.GetIssueTypeScreenSchemeMappings,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeScreenSchemeMappings<T = Models.PageIssueTypeScreenSchemeItem>(\n    parameters?: Parameters.GetIssueTypeScreenSchemeMappings,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetypescreenscheme/mapping',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        issueTypeScreenSchemeId: parameters?.issueTypeScreenSchemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type screen schemes and, for each issue type screen scheme, a list of the projects that use it.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemeProjectAssociations<T = Models.PageIssueTypeScreenSchemesProjects>(\n    parameters: Parameters.GetIssueTypeScreenSchemeProjectAssociations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of issue\n   * type screen schemes and, for each issue type screen scheme, a list of the projects that use it.\n   *\n   * Only issue type screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getIssueTypeScreenSchemeProjectAssociations<T = Models.PageIssueTypeScreenSchemesProjects>(\n    parameters: Parameters.GetIssueTypeScreenSchemeProjectAssociations,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueTypeScreenSchemeProjectAssociations<T = Models.PageIssueTypeScreenSchemesProjects>(\n    parameters: Parameters.GetIssueTypeScreenSchemeProjectAssociations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetypescreenscheme/project',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns an issue type screen scheme to a project.\n   *\n   * Issue type screen schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignIssueTypeScreenSchemeToProject<T = void>(\n    parameters: Parameters.AssignIssueTypeScreenSchemeToProject | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns an issue type screen scheme to a project.\n   *\n   * Issue type screen schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignIssueTypeScreenSchemeToProject<T = void>(\n    parameters?: Parameters.AssignIssueTypeScreenSchemeToProject,\n    callback?: never,\n  ): Promise<T>;\n  async assignIssueTypeScreenSchemeToProject<T = void>(\n    parameters?: Parameters.AssignIssueTypeScreenSchemeToProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issuetypescreenscheme/project',\n      method: 'PUT',\n      data: {\n        issueTypeScreenSchemeId: parameters?.issueTypeScreenSchemeId,\n        projectId: parameters?.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.UpdateIssueTypeScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.UpdateIssueTypeScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.UpdateIssueTypeScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescreenscheme/${parameters.issueTypeScreenSchemeId}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async deleteIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.DeleteIssueTypeScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescreenscheme/${parameters.issueTypeScreenSchemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Appends issue type to screen scheme mappings to an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async appendMappingsForIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.AppendMappingsForIssueTypeScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Appends issue type to screen scheme mappings to an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async appendMappingsForIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.AppendMappingsForIssueTypeScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async appendMappingsForIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.AppendMappingsForIssueTypeScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescreenscheme/${parameters.issueTypeScreenSchemeId}/mapping`,\n      method: 'PUT',\n      data: {\n        issueTypeMappings: parameters.issueTypeMappings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the default screen scheme of an issue type screen scheme. The default screen scheme is used for all\n   * unmapped issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultScreenScheme<T = void>(\n    parameters: Parameters.UpdateDefaultScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the default screen scheme of an issue type screen scheme. The default screen scheme is used for all\n   * unmapped issue types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultScreenScheme<T = void>(\n    parameters: Parameters.UpdateDefaultScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateDefaultScreenScheme<T = void>(\n    parameters: Parameters.UpdateDefaultScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescreenscheme/${parameters.issueTypeScreenSchemeId}/mapping/default`,\n      method: 'PUT',\n      data: {\n        screenSchemeId: parameters.screenSchemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes issue type to screen scheme mappings from an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeMappingsFromIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.RemoveMappingsFromIssueTypeScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes issue type to screen scheme mappings from an issue type screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeMappingsFromIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.RemoveMappingsFromIssueTypeScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async removeMappingsFromIssueTypeScreenScheme<T = void>(\n    parameters: Parameters.RemoveMappingsFromIssueTypeScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescreenscheme/${parameters.issueTypeScreenSchemeId}/mapping/remove`,\n      method: 'POST',\n      data: {\n        issueTypeIds: parameters.issueTypeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * projects associated with an issue type screen scheme.\n   *\n   * Only company-managed projects associated with an issue type screen scheme are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectsForIssueTypeScreenScheme<T = Models.PageProjectDetails>(\n    parameters: Parameters.GetProjectsForIssueTypeScreenScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * projects associated with an issue type screen scheme.\n   *\n   * Only company-managed projects associated with an issue type screen scheme are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectsForIssueTypeScreenScheme<T = Models.PageProjectDetails>(\n    parameters: Parameters.GetProjectsForIssueTypeScreenScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectsForIssueTypeScreenScheme<T = Models.PageProjectDetails>(\n    parameters: Parameters.GetProjectsForIssueTypeScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issuetypescreenscheme/${parameters.issueTypeScreenSchemeId}/project`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        query: parameters.query,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueVotes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns details about the votes on an issue.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   ini\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * Note that users with the necessary permissions for this operation but without the _View voters and watchers_\n   * project permissions are not returned details in the `voters` field.\n   */\n  async getVotes<T = Models.Votes>(parameters: Parameters.GetVotes, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns details about the votes on an issue.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   ini\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   *\n   * Note that users with the necessary permissions for this operation but without the _View voters and watchers_\n   * project permissions are not returned details in the `voters` field.\n   */\n  async getVotes<T = Models.Votes>(parameters: Parameters.GetVotes, callback?: never): Promise<T>;\n  async getVotes<T = Models.Votes>(parameters: Parameters.GetVotes, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/votes`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds the user's vote to an issue. This is the equivalent of the user clicking _Vote_ on an issue in Jira.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addVote<T = void>(parameters: Parameters.AddVote, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds the user's vote to an issue. This is the equivalent of the user clicking _Vote_ on an issue in Jira.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addVote<T = void>(parameters: Parameters.AddVote, callback?: never): Promise<T>;\n  async addVote<T = void>(parameters: Parameters.AddVote, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/votes`,\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a user's vote from an issue. This is the equivalent of the user clicking _Unvote_ on an issue in Jira.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async removeVote<T = void>(parameters: Parameters.RemoveVote, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a user's vote from an issue. This is the equivalent of the user clicking _Unvote_ on an issue in Jira.\n   *\n   * This operation requires the **Allow users to vote on issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async removeVote<T = void>(parameters: Parameters.RemoveVote, callback?: never): Promise<T>;\n  async removeVote<T = void>(parameters: Parameters.RemoveVote, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/votes`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueWatchers {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns, for the user, details of the watched status of issues from a list. If an issue ID is invalid, the returned\n   * watched status is `false`.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIsWatchingIssueBulk<T = Models.BulkIssueIsWatching>(\n    parameters: Parameters.GetIsWatchingIssueBulk | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns, for the user, details of the watched status of issues from a list. If an issue ID is invalid, the returned\n   * watched status is `false`.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getIsWatchingIssueBulk<T = Models.BulkIssueIsWatching>(\n    parameters?: Parameters.GetIsWatchingIssueBulk,\n    callback?: never,\n  ): Promise<T>;\n  async getIsWatchingIssueBulk<T = Models.BulkIssueIsWatching>(\n    parameters?: Parameters.GetIsWatchingIssueBulk,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/issue/watching',\n      method: 'POST',\n      data: {\n        issueIds: parameters?.issueIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the watchers for an issue.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   ini\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To see details of users on the watchlist other than themselves, _View voters and watchers_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async getIssueWatchers<T = Models.Watchers>(\n    parameters: Parameters.GetIssueWatchers,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the watchers for an issue.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   ini\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To see details of users on the watchlist other than themselves, _View voters and watchers_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async getIssueWatchers<T = Models.Watchers>(parameters: Parameters.GetIssueWatchers, callback?: never): Promise<T>;\n  async getIssueWatchers<T = Models.Watchers>(\n    parameters: Parameters.GetIssueWatchers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/watchers`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a user as a watcher of an issue by passing the account ID of the user. For example,\n   * `\"5b10ac8d82e05b22cc7d4ef5\"`. If no user is specified the calling user is added.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To add users other than themselves to the watchlist, _Manage watcher list_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async addWatcher<T = void>(parameters: Parameters.AddWatcher, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds a user as a watcher of an issue by passing the account ID of the user. For example,\n   * `\"5b10ac8d82e05b22cc7d4ef5\"`. If no user is specified the calling user is added.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To add users other than themselves to the watchlist, _Manage watcher list_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async addWatcher<T = void>(parameters: Parameters.AddWatcher, callback?: never): Promise<T>;\n  async addWatcher<T = void>(parameters: Parameters.AddWatcher, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/watchers`,\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n      },\n      data: parameters.accountId,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a user as a watcher of an issue.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To remove users other than themselves from the watchlist, _Manage watcher list_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async removeWatcher<T = void>(parameters: Parameters.RemoveWatcher, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a user as a watcher of an issue.\n   *\n   * This operation requires the **Allow users to watch issues** option to be _ON_. This option is set in General\n   * configuration for Jira. See [Configuring Jira application options](https://confluence.atlassian.com/x/uYXKM) for\n   * details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - To remove users other than themselves from the watchlist, _Manage watcher list_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is in.\n   */\n  async removeWatcher<T = void>(parameters: Parameters.RemoveWatcher, callback?: never): Promise<T>;\n  async removeWatcher<T = void>(parameters: Parameters.RemoveWatcher, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/watchers`,\n      method: 'DELETE',\n      params: {\n        username: parameters.username,\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueWorklogProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the keys of all properties for a worklog.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklogPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetWorklogPropertyKeys,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all properties for a worklog.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklogPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetWorklogPropertyKeys,\n    callback?: never,\n  ): Promise<T>;\n  async getWorklogPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetWorklogPropertyKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog/${parameters.worklogId}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of a worklog property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklogProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetWorklogProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a worklog property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklogProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetWorklogProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getWorklogProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetWorklogProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog/${parameters.worklogId}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a worklog property. Use this operation to store custom data against the worklog.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or _Edit\n   *   own worklogs_ to update worklogs created by the user.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async setWorklogProperty<T = unknown>(\n    parameters: Parameters.SetWorklogProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of a worklog property. Use this operation to store custom data against the worklog.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or _Edit\n   *   own worklogs_ to update worklogs created by the user.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async setWorklogProperty<T = unknown>(parameters: Parameters.SetWorklogProperty, callback?: never): Promise<T>;\n  async setWorklogProperty<T = unknown>(\n    parameters: Parameters.SetWorklogProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog/${parameters.worklogId}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a worklog property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async deleteWorklogProperty<T = void>(\n    parameters: Parameters.DeleteWorklogProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a worklog property.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async deleteWorklogProperty<T = void>(parameters: Parameters.DeleteWorklogProperty, callback?: never): Promise<T>;\n  async deleteWorklogProperty<T = void>(\n    parameters: Parameters.DeleteWorklogProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog/${parameters.worklogId}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class IssueWorklogs {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns worklogs for an issue (ordered by created time), starting from the oldest worklog or from the worklog\n   * started on or after a date and time.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Workloads are only returned where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getIssueWorklog<T = Models.PageOfWorklogs>(\n    parameters: Parameters.GetIssueWorklog,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns worklogs for an issue (ordered by created time), starting from the oldest worklog or from the worklog\n   * started on or after a date and time.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Workloads are only returned where the user has:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getIssueWorklog<T = Models.PageOfWorklogs>(\n    parameters: Parameters.GetIssueWorklog,\n    callback?: never,\n  ): Promise<T>;\n  async getIssueWorklog<T = Models.PageOfWorklogs>(\n    parameters: Parameters.GetIssueWorklog,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        startedAfter: parameters.startedAfter,\n        startedBefore: parameters.startedBefore,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a worklog to an issue.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Work on issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addWorklog<T = Models.Worklog>(parameters: Parameters.AddWorklog, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds a worklog to an issue.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ and _Work on issues_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the\n   *   project that the issue is in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async addWorklog<T = Models.Worklog>(parameters: Parameters.AddWorklog, callback?: never): Promise<T>;\n  async addWorklog<T = Models.Worklog>(parameters: Parameters.AddWorklog, callback?: Callback<T>): Promise<void | T> {\n    let comment: Models.Document | undefined;\n\n    if (typeof parameters.comment === 'string') {\n      comment = {\n        type: 'doc',\n        version: 1,\n        content: [\n          {\n            type: 'paragraph',\n            content: [\n              {\n                type: 'text',\n                text: parameters.comment,\n              },\n            ],\n          },\n        ],\n      };\n    } else {\n      comment = parameters.comment;\n    }\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog`,\n      method: 'POST',\n      params: {\n        notifyUsers: parameters.notifyUsers,\n        adjustEstimate: parameters.adjustEstimate,\n        newEstimate: parameters.newEstimate,\n        reduceBy: parameters.reduceBy,\n        expand: parameters.expand,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n      data: {\n        author: parameters.author,\n        comment,\n        created: parameters.created,\n        id: parameters.id,\n        issueId: parameters.issueId,\n        properties: parameters.properties,\n        self: parameters.self,\n        started: parameters.started,\n        timeSpent: parameters.timeSpent,\n        timeSpentSeconds: parameters.timeSpentSeconds,\n        updateAuthor: parameters.updateAuthor,\n        updated: parameters.updated,\n        visibility: parameters.visibility,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a list of worklogs from an issue. This is an experimental API with limitations:\n   *\n   * - You can't delete more than 5000 worklogs at once.\n   * - No notifications will be sent for deleted worklogs.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog.\n   * - If any worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async bulkDeleteWorklogs<T = void>(parameters: Parameters.BulkDeleteWorklogs, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a list of worklogs from an issue. This is an experimental API with limitations:\n   *\n   * - You can't delete more than 5000 worklogs at once.\n   * - No notifications will be sent for deleted worklogs.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the\n   *   issue.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog.\n   * - If any worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async bulkDeleteWorklogs<T = void>(parameters: Parameters.BulkDeleteWorklogs, callback?: never): Promise<T>;\n  async bulkDeleteWorklogs<T = void>(\n    parameters: Parameters.BulkDeleteWorklogs,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog`,\n      method: 'DELETE',\n      params: {\n        adjustEstimate: parameters.adjustEstimate,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n      data: {\n        ids: parameters.ids,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves a list of worklogs from one issue to another. This is an experimental API with several limitations:\n   *\n   * - You can't move more than 5000 worklogs at once.\n   * - You can't move worklogs containing an attachment.\n   * - You can't move worklogs restricted by project roles.\n   * - No notifications will be sent for moved worklogs.\n   * - No webhooks or events will be sent for moved worklogs.\n   * - No issue history will be recorded for moved worklogs.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the projects containing the\n   *   source and destination issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ and _Edit all worklogs_](https://confluence.atlassian.com/x/yodKLg)[project\n   *   permission](https://confluence.atlassian.com/x/yodKLg)\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async bulkMoveWorklogs<T = void>(parameters: Parameters.BulkMoveWorklogs, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves a list of worklogs from one issue to another. This is an experimental API with several limitations:\n   *\n   * - You can't move more than 5000 worklogs at once.\n   * - You can't move worklogs containing an attachment.\n   * - You can't move worklogs restricted by project roles.\n   * - No notifications will be sent for moved worklogs.\n   * - No webhooks or events will be sent for moved worklogs.\n   * - No issue history will be recorded for moved worklogs.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the projects containing the\n   *   source and destination issues.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ and _Edit all worklogs_](https://confluence.atlassian.com/x/yodKLg)[project\n   *   permission](https://confluence.atlassian.com/x/yodKLg)\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async bulkMoveWorklogs<T = void>(parameters: Parameters.BulkMoveWorklogs, callback?: never): Promise<T>;\n  async bulkMoveWorklogs<T = void>(parameters: Parameters.BulkMoveWorklogs, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog/move`,\n      method: 'POST',\n      params: {\n        adjustEstimate: parameters.adjustEstimate,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n      data: parameters.worklogs,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a worklog.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklog<T = Models.Worklog>(parameters: Parameters.GetWorklog, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a worklog.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async getWorklog<T = Models.Worklog>(parameters: Parameters.GetWorklog, callback?: never): Promise<T>;\n  async getWorklog<T = Models.Worklog>(parameters: Parameters.GetWorklog, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog/${parameters.id}`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a worklog.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or _Edit\n   *   own worklogs_ to update worklogs created by the user.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async updateWorklog<T = Models.Worklog>(parameters: Parameters.UpdateWorklog, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a worklog.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Edit all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to update any worklog or _Edit\n   *   own worklogs_ to update worklogs created by the user.\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async updateWorklog<T = Models.Worklog>(parameters: Parameters.UpdateWorklog, callback?: never): Promise<T>;\n  async updateWorklog<T = Models.Worklog>(\n    parameters: Parameters.UpdateWorklog,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    let comment: Models.Document | undefined;\n\n    if (typeof parameters.comment === 'string') {\n      comment = {\n        type: 'doc',\n        version: 1,\n        content: [\n          {\n            type: 'paragraph',\n            content: [\n              {\n                type: 'text',\n                text: parameters.comment,\n              },\n            ],\n          },\n        ],\n      };\n    } else {\n      comment = parameters.comment;\n    }\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog/${parameters.id}`,\n      method: 'PUT',\n      params: {\n        notifyUsers: parameters.notifyUsers,\n        adjustEstimate: parameters.adjustEstimate,\n        newEstimate: parameters.newEstimate,\n        expand: parameters.expand,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n      data: {\n        comment,\n        visibility: parameters.visibility,\n        started: parameters.started,\n        timeSpent: parameters.timeSpent,\n        timeSpentSeconds: parameters.timeSpentSeconds,\n        properties: parameters.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a worklog from an issue.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog or\n   *   _Delete own worklogs_ to delete worklogs created by the user,\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async deleteWorklog<T = void>(parameters: Parameters.DeleteWorklog, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a worklog from an issue.\n   *\n   * Time tracking must be enabled in Jira, otherwise this operation returns an error. For more information, see\n   * [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   * - _Delete all worklogs_[ project permission](https://confluence.atlassian.com/x/yodKLg) to delete any worklog or\n   *   _Delete own worklogs_ to delete worklogs created by the user,\n   * - If the worklog has visibility restrictions, belongs to the group or has the role visibility is restricted to.\n   */\n  async deleteWorklog<T = void>(parameters: Parameters.DeleteWorklog, callback?: never): Promise<T>;\n  async deleteWorklog<T = void>(parameters: Parameters.DeleteWorklog, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/issue/${parameters.issueIdOrKey}/worklog/${parameters.id}`,\n      method: 'DELETE',\n      params: {\n        notifyUsers: parameters.notifyUsers,\n        adjustEstimate: parameters.adjustEstimate,\n        newEstimate: parameters.newEstimate,\n        increaseBy: parameters.increaseBy,\n        overrideEditableFlag: parameters.overrideEditableFlag,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of IDs and delete timestamps for worklogs deleted after a date and time.\n   *\n   * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to\n   * youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest\n   * item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set\n   * to true on the last page of worklogs.\n   *\n   * This resource does not return worklogs deleted during the minute preceding the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getIdsOfWorklogsDeletedSince<T = Models.ChangedWorklogs>(\n    parameters: Parameters.GetIdsOfWorklogsDeletedSince | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of IDs and delete timestamps for worklogs deleted after a date and time.\n   *\n   * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to\n   * youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest\n   * item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set\n   * to true on the last page of worklogs.\n   *\n   * This resource does not return worklogs deleted during the minute preceding the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getIdsOfWorklogsDeletedSince<T = Models.ChangedWorklogs>(\n    parameters?: Parameters.GetIdsOfWorklogsDeletedSince,\n    callback?: never,\n  ): Promise<T>;\n  async getIdsOfWorklogsDeletedSince<T = Models.ChangedWorklogs>(\n    parameters?: Parameters.GetIdsOfWorklogsDeletedSince,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/worklog/deleted',\n      method: 'GET',\n      params: {\n        since: parameters?.since,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns worklog details for a list of worklog IDs.\n   *\n   * The returned list of worklogs is limited to 1000 items.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, worklogs are only returned where either of the following is true:\n   *\n   * - The worklog is set as _Viewable by All Users_.\n   * - The user is a member of a project role or group with permission to view the worklog.\n   */\n  async getWorklogsForIds<T = Models.Worklog[]>(\n    parameters: Parameters.GetWorklogsForIds | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns worklog details for a list of worklog IDs.\n   *\n   * The returned list of worklogs is limited to 1000 items.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, worklogs are only returned where either of the following is true:\n   *\n   * - The worklog is set as _Viewable by All Users_.\n   * - The user is a member of a project role or group with permission to view the worklog.\n   */\n  async getWorklogsForIds<T = Models.Worklog[]>(\n    parameters?: Parameters.GetWorklogsForIds,\n    callback?: never,\n  ): Promise<T>;\n  async getWorklogsForIds<T = Models.Worklog[]>(\n    parameters?: Parameters.GetWorklogsForIds,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/worklog/list',\n      method: 'POST',\n      params: {\n        expand: parameters?.expand,\n      },\n      data: {\n        ids: parameters?.ids,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of IDs and update timestamps for worklogs updated after a date and time.\n   *\n   * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to\n   * youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest\n   * item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set\n   * to true on the last page of worklogs.\n   *\n   * This resource does not return worklogs updated during the minute preceding the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, worklogs are only returned where either of the following is true:\n   *\n   * - The worklog is set as _Viewable by All Users_.\n   * - The user is a member of a project role or group with permission to view the worklog.\n   */\n  async getIdsOfWorklogsModifiedSince<T = Models.ChangedWorklogs>(\n    parameters: Parameters.GetIdsOfWorklogsModifiedSince | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of IDs and update timestamps for worklogs updated after a date and time.\n   *\n   * This resource is paginated, with a limit of 1000 worklogs per page. Each page lists worklogs from oldest to\n   * youngest. If the number of items in the date range exceeds 1000, `until` indicates the timestamp of the youngest\n   * item on the page. Also, `nextPage` provides the URL for the next page of worklogs. The `lastPage` parameter is set\n   * to true on the last page of worklogs.\n   *\n   * This resource does not return worklogs updated during the minute preceding the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira, however, worklogs are only returned where either of the following is true:\n   *\n   * - The worklog is set as _Viewable by All Users_.\n   * - The user is a member of a project role or group with permission to view the worklog.\n   */\n  async getIdsOfWorklogsModifiedSince<T = Models.ChangedWorklogs>(\n    parameters?: Parameters.GetIdsOfWorklogsModifiedSince,\n    callback?: never,\n  ): Promise<T>;\n  async getIdsOfWorklogsModifiedSince<T = Models.ChangedWorklogs>(\n    parameters?: Parameters.GetIdsOfWorklogsModifiedSince,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/worklog/updated',\n      method: 'GET',\n      params: {\n        since: parameters?.since,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class JiraExpressions {\n  constructor(private client: Client) {}\n\n  /**\n   * Analyses and validates Jira expressions.\n   *\n   * As an experimental feature, this operation can also attempt to type-check the expressions.\n   *\n   * Learn more about Jira expressions in the\n   * [documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required**: None.\n   */\n  async analyseExpression<T = Models.JiraExpressionsAnalysis>(\n    parameters: Parameters.AnalyseExpression | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Analyses and validates Jira expressions.\n   *\n   * As an experimental feature, this operation can also attempt to type-check the expressions.\n   *\n   * Learn more about Jira expressions in the\n   * [documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required**: None.\n   */\n  async analyseExpression<T = Models.JiraExpressionsAnalysis>(\n    parameters?: Parameters.AnalyseExpression,\n    callback?: never,\n  ): Promise<T>;\n  async analyseExpression<T = Models.JiraExpressionsAnalysis>(\n    parameters?: Parameters.AnalyseExpression,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/expression/analyse',\n      method: 'POST',\n      params: {\n        check: parameters?.check,\n      },\n      data: {\n        contextVariables: parameters?.contextVariables,\n        expressions: parameters?.expressions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Evaluates a Jira expression and returns its value.\n   *\n   * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible\n   * way. Consult the [Jira expressions\n   * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details.\n   *\n   * #### Context variables\n   *\n   * The following context variables are available to Jira expressions evaluated by this resource. Their presence\n   * depends on various factors; usually you need to manually request them in the context object sent in the payload,\n   * but some of them are added automatically under certain conditions.\n   *\n   * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The\n   *   current user. Always available and equal to `null` if the request is anonymous.\n   * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The\n   *   [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request.\n   *   Available only for authenticated requests made by Connect Apps (read more here: [Authentication for Connect\n   *   apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)).\n   * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The\n   *   current issue. Available only when the issue is provided in the request context object.\n   * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of\n   *   [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A\n   *   collection of issues matching a JQL query. Available only when JQL is provided in the request context object.\n   * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)):\n   *   The current project. Available only when the project is provided in the request context object.\n   * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)):\n   *   The current sprint. Available only when the sprint is provided in the request context object.\n   * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The\n   *   current board. Available only when the board is provided in the request context object.\n   * - `serviceDesk`\n   *   ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)):\n   *   The current service desk. Available only when the service desk is provided in the request context object.\n   * - `customerRequest`\n   *   ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)):\n   *   The current customer request. Available only when the customer request is provided in the request context\n   *   object.\n   *\n   * Also, custom context variables can be passed in the request with their types. Those variables can be accessed by\n   * key in the Jira expression. These variable types are available for use in a custom context:\n   *\n   * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)\n   *   specified as an Atlassian account ID.\n   * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)\n   *   specified by ID or key. All the fields of the issue object are available in the Jira expression.\n   * - `json`: A JSON object containing custom content.\n   * - `list`: A JSON list of `user`, `issue`, or `json` variable types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required**: None.\n   * However, an expression may return different results for different users depending on their permissions. For\n   * example, different users may see different comments on the same issue.\\\n   * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or\n   * fields (for example, `issue.sprint`).\n   */\n  async evaluateJiraExpression<T = Models.JiraExpressionResult>(\n    parameters: Parameters.EvaluateJiraExpression,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Evaluates a Jira expression and returns its value.\n   *\n   * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible\n   * way. Consult the [Jira expressions\n   * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details.\n   *\n   * #### Context variables\n   *\n   * The following context variables are available to Jira expressions evaluated by this resource. Their presence\n   * depends on various factors; usually you need to manually request them in the context object sent in the payload,\n   * but some of them are added automatically under certain conditions.\n   *\n   * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The\n   *   current user. Always available and equal to `null` if the request is anonymous.\n   * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The\n   *   [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request.\n   *   Available only for authenticated requests made by Connect Apps (read more here: [Authentication for Connect\n   *   apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)).\n   * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The\n   *   current issue. Available only when the issue is provided in the request context object.\n   * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of\n   *   [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A\n   *   collection of issues matching a JQL query. Available only when JQL is provided in the request context object.\n   * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)):\n   *   The current project. Available only when the project is provided in the request context object.\n   * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)):\n   *   The current sprint. Available only when the sprint is provided in the request context object.\n   * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The\n   *   current board. Available only when the board is provided in the request context object.\n   * - `serviceDesk`\n   *   ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)):\n   *   The current service desk. Available only when the service desk is provided in the request context object.\n   * - `customerRequest`\n   *   ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)):\n   *   The current customer request. Available only when the customer request is provided in the request context\n   *   object.\n   *\n   * Also, custom context variables can be passed in the request with their types. Those variables can be accessed by\n   * key in the Jira expression. These variable types are available for use in a custom context:\n   *\n   * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)\n   *   specified as an Atlassian account ID.\n   * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)\n   *   specified by ID or key. All the fields of the issue object are available in the Jira expression.\n   * - `json`: A JSON object containing custom content.\n   * - `list`: A JSON list of `user`, `issue`, or `json` variable types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required**: None.\n   * However, an expression may return different results for different users depending on their permissions. For\n   * example, different users may see different comments on the same issue.\\\n   * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or\n   * fields (for example, `issue.sprint`).\n   */\n  async evaluateJiraExpression<T = Models.JiraExpressionResult>(\n    parameters: Parameters.EvaluateJiraExpression,\n    callback?: never,\n  ): Promise<T>;\n  async evaluateJiraExpression<T = Models.JiraExpressionResult>(\n    parameters: Parameters.EvaluateJiraExpression,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/expression/eval',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        context: parameters.context,\n        expression: parameters.expression,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Evaluates a Jira expression and returns its value. The difference between this and `eval` is that this endpoint\n   * uses the enhanced search API when evaluating JQL queries. This API is eventually consistent, unlike the strongly\n   * consistent `eval` API. This allows for better performance and scalability. In addition, this API's response for JQL\n   * evaluation is based on a scrolling view (backed by a `nextPageToken`) instead of a paginated view (backed by\n   * `startAt` and `totalCount`).\n   *\n   * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible\n   * way. Consult the [Jira expressions\n   * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details.\n   *\n   * #### Context variables\n   *\n   * The following context variables are available to Jira expressions evaluated by this resource. Their presence\n   * depends on various factors; usually you need to manually request them in the context object sent in the payload,\n   * but some of them are added automatically under certain conditions.\n   *\n   * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The\n   *   current user. Always available and equal to `null` if the request is anonymous.\n   * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The\n   *   [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request.\n   *   Available only for authenticated requests made by Connect apps (read more here: [Authentication for Connect\n   *   apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)).\n   * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The\n   *   current issue. Available only when the issue is provided in the request context object.\n   * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of\n   *   [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A\n   *   collection of issues matching a JQL query. Available only when JQL is provided in the request context object.\n   * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)):\n   *   The current project. Available only when the project is provided in the request context object.\n   * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)):\n   *   The current sprint. Available only when the sprint is provided in the request context object.\n   * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The\n   *   current board. Available only when the board is provided in the request context object.\n   * - `serviceDesk`\n   *   ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)):\n   *   The current service desk. Available only when the service desk is provided in the request context object.\n   * - `customerRequest`\n   *   ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)):\n   *   The current customer request. Available only when the customer request is provided in the request context\n   *   object.\n   *\n   * In addition, you can pass custom context variables along with their types. You can then access them from the Jira\n   * expression by key. You can use the following variables in a custom context:\n   *\n   * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)\n   *   specified as an Atlassian account ID.\n   * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)\n   *   specified by ID or key. All the fields of the issue object are available in the Jira expression.\n   * - `json`: A JSON object containing custom content.\n   * - `list`: A JSON list of `user`, `issue`, or `json` variable types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required**: None.\n   * However, an expression may return different results for different users depending on their permissions. For\n   * example, different users may see different comments on the same issue.\\\n   * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or\n   * fields (for example, `issue.sprint`).\n   */\n  async evaluateJiraExpressionUsingEnhancedSearch<T = Models.EvaluatedJiraExpression>(\n    parameters: Parameters.EvaluateJiraExpressionUsingEnhancedSearch,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Evaluates a Jira expression and returns its value. The difference between this and `eval` is that this endpoint\n   * uses the enhanced search API when evaluating JQL queries. This API is eventually consistent, unlike the strongly\n   * consistent `eval` API. This allows for better performance and scalability. In addition, this API's response for JQL\n   * evaluation is based on a scrolling view (backed by a `nextPageToken`) instead of a paginated view (backed by\n   * `startAt` and `totalCount`).\n   *\n   * This resource can be used to test Jira expressions that you plan to use elsewhere, or to fetch data in a flexible\n   * way. Consult the [Jira expressions\n   * documentation](https://developer.atlassian.com/cloud/jira/platform/jira-expressions/) for more details.\n   *\n   * #### Context variables\n   *\n   * The following context variables are available to Jira expressions evaluated by this resource. Their presence\n   * depends on various factors; usually you need to manually request them in the context object sent in the payload,\n   * but some of them are added automatically under certain conditions.\n   *\n   * - `user` ([User](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)): The\n   *   current user. Always available and equal to `null` if the request is anonymous.\n   * - `app` ([App](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#app)): The\n   *   [Connect app](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) that made the request.\n   *   Available only for authenticated requests made by Connect apps (read more here: [Authentication for Connect\n   *   apps](https://developer.atlassian.com/cloud/jira/platform/security-for-connect-apps/)).\n   * - `issue` ([Issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): The\n   *   current issue. Available only when the issue is provided in the request context object.\n   * - `issues` ([List](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#list) of\n   *   [Issues](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)): A\n   *   collection of issues matching a JQL query. Available only when JQL is provided in the request context object.\n   * - `project` ([Project](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#project)):\n   *   The current project. Available only when the project is provided in the request context object.\n   * - `sprint` ([Sprint](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#sprint)):\n   *   The current sprint. Available only when the sprint is provided in the request context object.\n   * - `board` ([Board](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#board)): The\n   *   current board. Available only when the board is provided in the request context object.\n   * - `serviceDesk`\n   *   ([ServiceDesk](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#servicedesk)):\n   *   The current service desk. Available only when the service desk is provided in the request context object.\n   * - `customerRequest`\n   *   ([CustomerRequest](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#customerrequest)):\n   *   The current customer request. Available only when the customer request is provided in the request context\n   *   object.\n   *\n   * In addition, you can pass custom context variables along with their types. You can then access them from the Jira\n   * expression by key. You can use the following variables in a custom context:\n   *\n   * - `user`: A [user](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#user)\n   *   specified as an Atlassian account ID.\n   * - `issue`: An [issue](https://developer.atlassian.com/cloud/jira/platform/jira-expressions-type-reference#issue)\n   *   specified by ID or key. All the fields of the issue object are available in the Jira expression.\n   * - `json`: A JSON object containing custom content.\n   * - `list`: A JSON list of `user`, `issue`, or `json` variable types.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required**: None.\n   * However, an expression may return different results for different users depending on their permissions. For\n   * example, different users may see different comments on the same issue.\\\n   * Permission to access Jira Software is required to access Jira Software context variables (`board` and `sprint`) or\n   * fields (for example, `issue.sprint`).\n   */\n  async evaluateJiraExpressionUsingEnhancedSearch<T = Models.EvaluatedJiraExpression>(\n    parameters: Parameters.EvaluateJiraExpressionUsingEnhancedSearch,\n    callback?: never,\n  ): Promise<T>;\n  async evaluateJiraExpressionUsingEnhancedSearch<T = Models.EvaluatedJiraExpression>(\n    parameters: Parameters.EvaluateJiraExpressionUsingEnhancedSearch,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/expression/evaluate',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        context: parameters.context,\n        expression: parameters.expression,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class JiraSettings {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all application properties or an application property.\n   *\n   * If you specify a value for the `key` parameter, then an application property is returned as an object (not in an\n   * array). Otherwise, an array of all editable application properties is returned. See [Set application\n   * property](#api-rest-api-3-application-properties-id-put) for descriptions of editable properties.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApplicationProperty<T = Models.ApplicationProperty[]>(\n    parameters: Parameters.GetApplicationProperty | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all application properties or an application property.\n   *\n   * If you specify a value for the `key` parameter, then an application property is returned as an object (not in an\n   * array). Otherwise, an array of all editable application properties is returned. See [Set application\n   * property](#api-rest-api-3-application-properties-id-put) for descriptions of editable properties.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApplicationProperty<T = Models.ApplicationProperty[]>(\n    parameters?: Parameters.GetApplicationProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getApplicationProperty<T = Models.ApplicationProperty[]>(\n    parameters?: Parameters.GetApplicationProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/application-properties',\n      method: 'GET',\n      params: {\n        key: parameters?.key,\n        permissionLevel: parameters?.permissionLevel,\n        keyFilter: parameters?.keyFilter,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the application properties that are accessible on the _Advanced Settings_ page. To navigate to the\n   * _Advanced Settings_ page in Jira, choose the Jira icon > **Jira settings** > **System**, **General Configuration**\n   * and then click **Advanced Settings** (in the upper right).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAdvancedSettings<T = Models.ApplicationProperty[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the application properties that are accessible on the _Advanced Settings_ page. To navigate to the\n   * _Advanced Settings_ page in Jira, choose the Jira icon > **Jira settings** > **System**, **General Configuration**\n   * and then click **Advanced Settings** (in the upper right).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAdvancedSettings<T = Models.ApplicationProperty[]>(callback?: never): Promise<T>;\n  async getAdvancedSettings<T = Models.ApplicationProperty[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/application-properties/advanced-settings',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Changes the value of an application property. For example, you can change the value of the `jira.clone.prefix` from\n   * its default value of _CLONE -_ to _Clone -_ if you prefer sentence case capitalization. Editable properties are\n   * described below along with their default values.\n   *\n   * #### Advanced settings\n   *\n   * The advanced settings below are also accessible in [Jira](https://confluence.atlassian.com/x/vYXKM).\n   *\n   * | Key                                       | Description                                                                                                                                             | Default value            |\n   * | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |\n   * | `jira.clone.prefix`                       | The string of text prefixed to the title of a cloned issue.                                                                                             | `CLONE -`                |\n   * | `jira.date.picker.java.format`            | The date format for the Java (server-side) generated dates. This must be the same as the `jira.date.picker.javascript.format` format setting.           | `d/MMM/yy`               |\n   * | `jira.date.picker.javascript.format`      | The date format for the JavaScript (client-side) generated dates. This must be the same as the `jira.date.picker.java.format` format setting.           | `%e/%b/%y`               |\n   * | `jira.date.time.picker.java.format`       | The date format for the Java (server-side) generated date times. This must be the same as the `jira.date.time.picker.javascript.format` format setting. | `dd/MMM/yy h:mm a`       |\n   * | `jira.date.time.picker.javascript.format` | The date format for the JavaScript (client-side) generated date times. This must be the same as the `jira.date.time.picker.java.format` format setting. | `%e/%b/%y %I:%M %p`      |\n   * | `jira.issue.actions.order`                | The default order of actions (such as _Comments_ or _Change history_) displayed on the issue view.                                                      | `asc`                    |\n   * | `jira.view.issue.links.sort.order`        | The sort order of the list of issue links on the issue view.                                                                                            | `type, status, priority` |\n   * | `jira.comment.collapsing.minimum.hidden`  | The minimum number of comments required for comment collapsing to occur. A value of `0` disables comment collapsing.                                    | `4`                      |\n   * | `jira.newsletter.tip.delay.days`          | The number of days before a prompt to sign up to the Jira Insiders newsletter is shown. A value of `-1` disables this feature.                          | `7`                      |\n   *\n   * #### Look and feel\n   *\n   * The settings listed below adjust the [look and feel](https://confluence.atlassian.com/x/VwCLLg).\n   *\n   * | Key                                   | Description                                                                                                        | Default value                |\n   * | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------- |\n   * | `jira.lf.date.time`                   | The [ time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).          | `h:mm a`                     |\n   * | `jira.lf.date.day`                    | The [ day format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).           | `EEEE h:mm a`                |\n   * | `jira.lf.date.complete`               | The [ date and time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy h:mm a`           |\n   * | `jira.lf.date.dmy`                    | The [ date format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).          | `dd/MMM/yy`                  |\n   * | `jira.date.time.picker.use.iso8061`   | When enabled, sets Monday as the first day of the week in the date picker, as specified by the ISO8601 standard.   | `false`                      |\n   * | `jira.lf.logo.url`                    | The URL of the logo image file.                                                                                    | `/images/icon-jira-logo.png` |\n   * | `jira.lf.logo.show.application.title` | Controls the visibility of the application title on the sidebar.                                                   | `false`                      |\n   * | `jira.lf.favicon.url`                 | The URL of the favicon.                                                                                            | `/favicon.ico`               |\n   * | `jira.lf.favicon.hires.url`           | The URL of the high-resolution favicon.                                                                            | `/images/64jira.png`         |\n   * | `jira.lf.navigation.bgcolour`         | The background color of the sidebar.                                                                               | `#0747A6`                    |\n   * | `jira.lf.navigation.highlightcolour`  | The color of the text and logo of the sidebar.                                                                     | `#DEEBFF`                    |\n   * | `jira.lf.hero.button.base.bg.colour`  | The background color of the hero button.                                                                           | `#3b7fc4`                    |\n   * | `jira.title`                          | The text for the application title. The application title can also be set in _General settings_.                   | `Jira`                       |\n   * | `jira.option.globalsharing`           | Whether filters and dashboards can be shared with anyone signed into Jira.                                         | `true`                       |\n   * | `xflow.product.suggestions.enabled`   | Whether to expose product suggestions for other Atlassian products within Jira.                                    | `true`                       |\n   *\n   * #### Other settings\n   *\n   * | Key                                 | Description                                           | Default value |\n   * | ----------------------------------- | ----------------------------------------------------- | ------------- |\n   * | `jira.issuenav.criteria.autoupdate` | Whether instant updates to search criteria is active. | `true`        |\n   *\n   * _Note: Be careful when changing [application properties and advanced\n   * settings](https://confluence.atlassian.com/x/vYXKM)._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setApplicationProperty<T = Models.ApplicationProperty>(\n    parameters: Parameters.SetApplicationProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Changes the value of an application property. For example, you can change the value of the `jira.clone.prefix` from\n   * its default value of _CLONE -_ to _Clone -_ if you prefer sentence case capitalization. Editable properties are\n   * described below along with their default values.\n   *\n   * #### Advanced settings\n   *\n   * The advanced settings below are also accessible in [Jira](https://confluence.atlassian.com/x/vYXKM).\n   *\n   * | Key                                       | Description                                                                                                                                             | Default value            |\n   * | ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------ |\n   * | `jira.clone.prefix`                       | The string of text prefixed to the title of a cloned issue.                                                                                             | `CLONE -`                |\n   * | `jira.date.picker.java.format`            | The date format for the Java (server-side) generated dates. This must be the same as the `jira.date.picker.javascript.format` format setting.           | `d/MMM/yy`               |\n   * | `jira.date.picker.javascript.format`      | The date format for the JavaScript (client-side) generated dates. This must be the same as the `jira.date.picker.java.format` format setting.           | `%e/%b/%y`               |\n   * | `jira.date.time.picker.java.format`       | The date format for the Java (server-side) generated date times. This must be the same as the `jira.date.time.picker.javascript.format` format setting. | `dd/MMM/yy h:mm a`       |\n   * | `jira.date.time.picker.javascript.format` | The date format for the JavaScript (client-side) generated date times. This must be the same as the `jira.date.time.picker.java.format` format setting. | `%e/%b/%y %I:%M %p`      |\n   * | `jira.issue.actions.order`                | The default order of actions (such as _Comments_ or _Change history_) displayed on the issue view.                                                      | `asc`                    |\n   * | `jira.view.issue.links.sort.order`        | The sort order of the list of issue links on the issue view.                                                                                            | `type, status, priority` |\n   * | `jira.comment.collapsing.minimum.hidden`  | The minimum number of comments required for comment collapsing to occur. A value of `0` disables comment collapsing.                                    | `4`                      |\n   * | `jira.newsletter.tip.delay.days`          | The number of days before a prompt to sign up to the Jira Insiders newsletter is shown. A value of `-1` disables this feature.                          | `7`                      |\n   *\n   * #### Look and feel\n   *\n   * The settings listed below adjust the [look and feel](https://confluence.atlassian.com/x/VwCLLg).\n   *\n   * | Key                                   | Description                                                                                                        | Default value                |\n   * | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------ | ---------------------------- |\n   * | `jira.lf.date.time`                   | The [ time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).          | `h:mm a`                     |\n   * | `jira.lf.date.day`                    | The [ day format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).           | `EEEE h:mm a`                |\n   * | `jira.lf.date.complete`               | The [ date and time format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html). | `dd/MMM/yy h:mm a`           |\n   * | `jira.lf.date.dmy`                    | The [ date format](https://docs.oracle.com/javase/6/docs/api/index.html?java/text/SimpleDateFormat.html).          | `dd/MMM/yy`                  |\n   * | `jira.date.time.picker.use.iso8061`   | When enabled, sets Monday as the first day of the week in the date picker, as specified by the ISO8601 standard.   | `false`                      |\n   * | `jira.lf.logo.url`                    | The URL of the logo image file.                                                                                    | `/images/icon-jira-logo.png` |\n   * | `jira.lf.logo.show.application.title` | Controls the visibility of the application title on the sidebar.                                                   | `false`                      |\n   * | `jira.lf.favicon.url`                 | The URL of the favicon.                                                                                            | `/favicon.ico`               |\n   * | `jira.lf.favicon.hires.url`           | The URL of the high-resolution favicon.                                                                            | `/images/64jira.png`         |\n   * | `jira.lf.navigation.bgcolour`         | The background color of the sidebar.                                                                               | `#0747A6`                    |\n   * | `jira.lf.navigation.highlightcolour`  | The color of the text and logo of the sidebar.                                                                     | `#DEEBFF`                    |\n   * | `jira.lf.hero.button.base.bg.colour`  | The background color of the hero button.                                                                           | `#3b7fc4`                    |\n   * | `jira.title`                          | The text for the application title. The application title can also be set in _General settings_.                   | `Jira`                       |\n   * | `jira.option.globalsharing`           | Whether filters and dashboards can be shared with anyone signed into Jira.                                         | `true`                       |\n   * | `xflow.product.suggestions.enabled`   | Whether to expose product suggestions for other Atlassian products within Jira.                                    | `true`                       |\n   *\n   * #### Other settings\n   *\n   * | Key                                 | Description                                           | Default value |\n   * | ----------------------------------- | ----------------------------------------------------- | ------------- |\n   * | `jira.issuenav.criteria.autoupdate` | Whether instant updates to search criteria is active. | `true`        |\n   *\n   * _Note: Be careful when changing [application properties and advanced\n   * settings](https://confluence.atlassian.com/x/vYXKM)._\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setApplicationProperty<T = Models.ApplicationProperty>(\n    parameters: Parameters.SetApplicationProperty,\n    callback?: never,\n  ): Promise<T>;\n  async setApplicationProperty<T = Models.ApplicationProperty>(\n    parameters: Parameters.SetApplicationProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/application-properties/${parameters.id}`,\n      method: 'PUT',\n      data: parameters.body,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the [global settings](https://confluence.atlassian.com/x/qYXKM) in Jira. These settings determine whether\n   * optional features (for example, subtasks, time tracking, and others) are enabled. If time tracking is enabled, this\n   * operation also returns the time tracking configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getConfiguration<T = Models.Configuration>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the [global settings](https://confluence.atlassian.com/x/qYXKM) in Jira. These settings determine whether\n   * optional features (for example, subtasks, time tracking, and others) are enabled. If time tracking is enabled, this\n   * operation also returns the time tracking configuration.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getConfiguration<T = Models.Configuration>(callback?: never): Promise<T>;\n  async getConfiguration<T = Models.Configuration>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/configuration',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class JQL {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced\n   * searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions\n   * reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this\n   * information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom\n   * query builder.\n   *\n   * To filter visible field details by project or collapse non-unique fields by field type then [Get field reference\n   * data (POST)](#api-rest-api-3-jql-autocompletedata-post) can be used.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAutoComplete<T = Models.JQLReferenceData>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced\n   * searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions\n   * reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this\n   * information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom\n   * query builder.\n   *\n   * To filter visible field details by project or collapse non-unique fields by field type then [Get field reference\n   * data (POST)](#api-rest-api-3-jql-autocompletedata-post) can be used.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAutoComplete<T = Models.JQLReferenceData>(callback?: never): Promise<T>;\n  async getAutoComplete<T = Models.JQLReferenceData>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/jql/autocompletedata',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced\n   * searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions\n   * reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this\n   * information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom\n   * query builder.\n   *\n   * This operation can filter the custom fields returned by project. Invalid project IDs in `projectIds` are ignored.\n   * System fields are always returned.\n   *\n   * It can also return the collapsed field for custom fields. Collapsed fields enable searches to be performed across\n   * all fields with the same name and of the same field type. For example, the collapsed field `Component -\n   * Component[Dropdown]` enables dropdown fields `Component - cf[10061]` and `Component - cf[10062]` to be searched\n   * simultaneously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAutoCompletePost<T = Models.JQLReferenceData>(\n    parameters: Parameters.GetAutoCompletePost | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns reference data for JQL searches. This is a downloadable version of the documentation provided in [Advanced\n   * searching - fields reference](https://confluence.atlassian.com/x/gwORLQ) and [Advanced searching - functions\n   * reference](https://confluence.atlassian.com/x/hgORLQ), along with a list of JQL-reserved words. Use this\n   * information to assist with the programmatic creation of JQL queries or the validation of queries built in a custom\n   * query builder.\n   *\n   * This operation can filter the custom fields returned by project. Invalid project IDs in `projectIds` are ignored.\n   * System fields are always returned.\n   *\n   * It can also return the collapsed field for custom fields. Collapsed fields enable searches to be performed across\n   * all fields with the same name and of the same field type. For example, the collapsed field `Component -\n   * Component[Dropdown]` enables dropdown fields `Component - cf[10061]` and `Component - cf[10062]` to be searched\n   * simultaneously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAutoCompletePost<T = Models.JQLReferenceData>(\n    parameters?: Parameters.GetAutoCompletePost,\n    callback?: never,\n  ): Promise<T>;\n  async getAutoCompletePost<T = Models.JQLReferenceData>(\n    parameters?: Parameters.GetAutoCompletePost,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/jql/autocompletedata',\n      method: 'POST',\n      data: {\n        includeCollapsedFields: parameters?.includeCollapsedFields,\n        projectIds: parameters?.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the JQL search auto complete suggestions for a field.\n   *\n   * Suggestions can be obtained by providing:\n   *\n   * - `fieldName` to get a list of all values for the field.\n   * - `fieldName` and `fieldValue` to get a list of values containing the text in `fieldValue`.\n   * - `fieldName` and `predicateName` to get a list of all predicate values for the field.\n   * - `fieldName`, `predicateName`, and `predicateValue` to get a list of predicate values containing the text in\n   *   `predicateValue`.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getFieldAutoCompleteForQueryString<T = Models.AutoCompleteSuggestions>(\n    parameters: Parameters.GetFieldAutoCompleteForQueryString | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the JQL search auto complete suggestions for a field.\n   *\n   * Suggestions can be obtained by providing:\n   *\n   * - `fieldName` to get a list of all values for the field.\n   * - `fieldName` and `fieldValue` to get a list of values containing the text in `fieldValue`.\n   * - `fieldName` and `predicateName` to get a list of all predicate values for the field.\n   * - `fieldName`, `predicateName`, and `predicateValue` to get a list of predicate values containing the text in\n   *   `predicateValue`.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getFieldAutoCompleteForQueryString<T = Models.AutoCompleteSuggestions>(\n    parameters?: Parameters.GetFieldAutoCompleteForQueryString,\n    callback?: never,\n  ): Promise<T>;\n  async getFieldAutoCompleteForQueryString<T = Models.AutoCompleteSuggestions>(\n    parameters?: Parameters.GetFieldAutoCompleteForQueryString,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/jql/autocompletedata/suggestions',\n      method: 'GET',\n      params: {\n        fieldName: parameters?.fieldName,\n        fieldValue: parameters?.fieldValue,\n        predicateName: parameters?.predicateName,\n        predicateValue: parameters?.predicateValue,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Parses and validates JQL queries.\n   *\n   * Validation is performed in context of the current user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async parseJqlQueries<T = Models.ParsedJqlQueries>(\n    parameters: Parameters.ParseJqlQueries,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Parses and validates JQL queries.\n   *\n   * Validation is performed in context of the current user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async parseJqlQueries<T = Models.ParsedJqlQueries>(\n    parameters: Parameters.ParseJqlQueries,\n    callback?: never,\n  ): Promise<T>;\n  async parseJqlQueries<T = Models.ParsedJqlQueries>(\n    parameters: Parameters.ParseJqlQueries,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/jql/parse',\n      method: 'POST',\n      params: {\n        validation: parameters.validation,\n      },\n      data: {\n        queries: parameters.queries,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Converts one or more JQL queries with user identifiers (username or user key) to equivalent JQL queries with\n   * account IDs.\n   *\n   * You may wish to use this operation if your system stores JQL queries and you want to make them GDPR-compliant. For\n   * more information about GDPR-related changes, see the [migration\n   * guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async migrateQueries<T = Models.ConvertedJQLQueries>(\n    parameters: Parameters.MigrateQueries | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Converts one or more JQL queries with user identifiers (username or user key) to equivalent JQL queries with\n   * account IDs.\n   *\n   * You may wish to use this operation if your system stores JQL queries and you want to make them GDPR-compliant. For\n   * more information about GDPR-related changes, see the [migration\n   * guide](https://developer.atlassian.com/cloud/jira/platform/deprecation-notice-user-privacy-api-migration-guide/).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async migrateQueries<T = Models.ConvertedJQLQueries>(\n    parameters?: Parameters.MigrateQueries,\n    callback?: never,\n  ): Promise<T>;\n  async migrateQueries<T = Models.ConvertedJQLQueries>(\n    parameters?: Parameters.MigrateQueries,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/jql/pdcleaner',\n      method: 'POST',\n      data: {\n        queryStrings: parameters?.queryStrings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sanitizes one or more JQL queries by converting readable details into IDs where a user doesn't have permission to\n   * view the entity.\n   *\n   * For example, if the query contains the clause _project = 'Secret project'_, and a user does not have browse\n   * permission for the project \"Secret project\", the sanitized query replaces the clause with _project = 12345\"_ (where\n   * 12345 is the ID of the project). If a user has the required permission, the clause is not sanitized. If the account\n   * ID is null, sanitizing is performed for an anonymous user.\n   *\n   * Note that sanitization doesn't make the queries GDPR-compliant, because it doesn't remove user identifiers\n   * (username or user key). If you need to make queries GDPR-compliant, use [Convert user identifiers to account IDs in\n   * JQL\n   * queries](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jql/#api-rest-api-3-jql-sanitize-post).\n   *\n   * Before sanitization each JQL query is parsed. The queries are returned in the same order that they were passed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async sanitiseJqlQueries<T = Models.SanitizedJqlQueries>(\n    parameters: Parameters.SanitiseJqlQueries | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sanitizes one or more JQL queries by converting readable details into IDs where a user doesn't have permission to\n   * view the entity.\n   *\n   * For example, if the query contains the clause _project = 'Secret project'_, and a user does not have browse\n   * permission for the project \"Secret project\", the sanitized query replaces the clause with _project = 12345\"_ (where\n   * 12345 is the ID of the project). If a user has the required permission, the clause is not sanitized. If the account\n   * ID is null, sanitizing is performed for an anonymous user.\n   *\n   * Note that sanitization doesn't make the queries GDPR-compliant, because it doesn't remove user identifiers\n   * (username or user key). If you need to make queries GDPR-compliant, use [Convert user identifiers to account IDs in\n   * JQL\n   * queries](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-jql/#api-rest-api-3-jql-sanitize-post).\n   *\n   * Before sanitization each JQL query is parsed. The queries are returned in the same order that they were passed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async sanitiseJqlQueries<T = Models.SanitizedJqlQueries>(\n    parameters?: Parameters.SanitiseJqlQueries,\n    callback?: never,\n  ): Promise<T>;\n  async sanitiseJqlQueries<T = Models.SanitizedJqlQueries>(\n    parameters?: Parameters.SanitiseJqlQueries,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/jql/sanitize',\n      method: 'POST',\n      data: {\n        queries: parameters?.queries,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class JqlFunctionsApps {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the list of a function's precomputations along with information about when they were created, updated, and\n   * last used. Each precomputation has a `value` - the JQL fragment to replace the custom function clause with.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** This\n   * API is only accessible to apps and apps can only inspect their own functions.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getPrecomputations<T = Models.PageJqlFunctionPrecomputation>(\n    parameters: Parameters.GetPrecomputations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the list of a function's precomputations along with information about when they were created, updated, and\n   * last used. Each precomputation has a `value` - the JQL fragment to replace the custom function clause with.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** This\n   * API is only accessible to apps and apps can only inspect their own functions.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getPrecomputations<T = Models.PageJqlFunctionPrecomputation>(\n    parameters?: Parameters.GetPrecomputations,\n    callback?: never,\n  ): Promise<T>;\n  async getPrecomputations<T = Models.PageJqlFunctionPrecomputation>(\n    parameters?: Parameters.GetPrecomputations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/jql/function/computation',\n      method: 'GET',\n      params: {\n        functionKey: parameters?.functionKey,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        orderBy: parameters?.orderBy,\n        filter: parameters?.filter,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Update the precomputation value of a function created by a Forge/Connect app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** An API\n   * for apps to update their own precomputations.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updatePrecomputations<T = void>(\n    parameters: Parameters.UpdatePrecomputations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update the precomputation value of a function created by a Forge/Connect app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** An API\n   * for apps to update their own precomputations.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updatePrecomputations<T = void>(parameters: Parameters.UpdatePrecomputations, callback?: never): Promise<T>;\n  async updatePrecomputations<T = void>(\n    parameters: Parameters.UpdatePrecomputations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/jql/function/computation',\n      method: 'POST',\n      params: {\n        skipNotFoundPrecomputations: parameters.skipNotFoundPrecomputations,\n      },\n      data: {\n        values: parameters.values,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns function precomputations by IDs, along with information about when they were created, updated, and last\n   * used. Each precomputation has a `value` - the JQL fragment to replace the custom function clause with.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** This\n   * API is only accessible to apps and apps can only inspect their own functions.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getPrecomputationsByID<T = Models.JqlFunctionPrecomputationGetByIdResponse>(\n    parameters: Parameters.GetPrecomputationsByID,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns function precomputations by IDs, along with information about when they were created, updated, and last\n   * used. Each precomputation has a `value` - the JQL fragment to replace the custom function clause with.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** This\n   * API is only accessible to apps and apps can only inspect their own functions.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getPrecomputationsByID<T = Models.JqlFunctionPrecomputationGetByIdResponse>(\n    parameters: Parameters.GetPrecomputationsByID,\n    callback?: never,\n  ): Promise<T>;\n  async getPrecomputationsByID<T = Models.JqlFunctionPrecomputationGetByIdResponse>(\n    parameters: Parameters.GetPrecomputationsByID,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/jql/function/computation/search',\n      method: 'POST',\n      params: {\n        orderBy: parameters.orderBy,\n      },\n      data: {\n        precomputationIDs: parameters.precomputationIDs,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Labels {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * labels.\n   */\n  async getAllLabels<T = Models.PageString>(\n    parameters: Parameters.GetAllLabels | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * labels.\n   */\n  async getAllLabels<T = Models.PageString>(parameters?: Parameters.GetAllLabels, callback?: never): Promise<T>;\n  async getAllLabels<T = Models.PageString>(\n    parameters?: Parameters.GetAllLabels,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/label',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class LicenseMetrics {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns licensing information about the Jira instance.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getLicense<T = Models.License>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns licensing information about the Jira instance.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getLicense<T = Models.License>(callback?: never): Promise<T>;\n  async getLicense<T = Models.License>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/instance/license',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the approximate number of user accounts across all Jira licenses. Note that this information is cached with\n   * a 7-day lifecycle and could be stale at the time of call.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApproximateLicenseCount<T = Models.LicenseMetric>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the approximate number of user accounts across all Jira licenses. Note that this information is cached with\n   * a 7-day lifecycle and could be stale at the time of call.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApproximateLicenseCount<T = Models.LicenseMetric>(callback?: never): Promise<T>;\n  async getApproximateLicenseCount<T = Models.LicenseMetric>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/license/approximateLicenseCount',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the total approximate number of user accounts for a single Jira license. Note that this information is\n   * cached with a 7-day lifecycle and could be stale at the time of call.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApproximateApplicationLicenseCount<T = Models.LicenseMetric>(\n    applicationKey: string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the total approximate number of user accounts for a single Jira license. Note that this information is\n   * cached with a 7-day lifecycle and could be stale at the time of call.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getApproximateApplicationLicenseCount<T = Models.LicenseMetric>(\n    applicationKey: string,\n    callback?: never,\n  ): Promise<T>;\n  async getApproximateApplicationLicenseCount<T = Models.LicenseMetric>(\n    applicationKey: string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/license/approximateLicenseCount/product/${applicationKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Myself {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the value of a preference of the current user.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default this is not set and the user takes the locale of the\n   *   instance.\n   * - _jira.user.timezone_ The time zone of the user. By default this is not set and the user takes the timezone of the\n   *   instance.\n   *\n   * These system preferences keys will be deprecated by 15/07/2024. You can still retrieve these keys, but it will not\n   * have any impact on Notification behaviour.\n   *\n   * - _user.notifications.watcher_ Whether the user gets notified when they are watcher.\n   * - _user.notifications.assignee_ Whether the user gets notified when they are assignee.\n   * - _user.notifications.reporter_ Whether the user gets notified when they are reporter.\n   * - _user.notifications.mentions_ Whether the user gets notified when they are mentions.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPreference<T = string>(parameters: Parameters.GetPreference, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the value of a preference of the current user.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default this is not set and the user takes the locale of the\n   *   instance.\n   * - _jira.user.timezone_ The time zone of the user. By default this is not set and the user takes the timezone of the\n   *   instance.\n   *\n   * These system preferences keys will be deprecated by 15/07/2024. You can still retrieve these keys, but it will not\n   * have any impact on Notification behaviour.\n   *\n   * - _user.notifications.watcher_ Whether the user gets notified when they are watcher.\n   * - _user.notifications.assignee_ Whether the user gets notified when they are assignee.\n   * - _user.notifications.reporter_ Whether the user gets notified when they are reporter.\n   * - _user.notifications.mentions_ Whether the user gets notified when they are mentions.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPreference<T = string>(parameters: Parameters.GetPreference, callback?: never): Promise<T>;\n  async getPreference<T = string>(parameters: Parameters.GetPreference, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/mypreferences',\n      method: 'GET',\n      params: {\n        key: parameters.key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a preference for the user or updates a preference's value by sending a plain text string. For example,\n   * `false`. An arbitrary preference can be created with the value containing up to 255 characters. In addition, the\n   * following keys define system preferences that can be set or created:\n   *\n   * - _user.notifications.mimetype_ The mime type used in notifications sent to the user. Defaults to `html`.\n   * - _user.default.share.private_ Whether new [ filters](https://confluence.atlassian.com/x/eQiiLQ) are set to private.\n   *   Defaults to `true`.\n   * - _user.keyboard.shortcuts.disabled_ Whether keyboard shortcuts are disabled. Defaults to `false`.\n   * - _user.autowatch.disabled_ Whether the user automatically watches issues they create or add a comment to. By\n   *   default, not set: the user takes the instance autowatch setting.\n   * - _user.notifiy.own.changes_ Whether the user gets notified of their own changes.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default, not set. The user takes the instance locale.\n   * - _jira.user.timezone_ The time zone of the user. By default, not set. The user takes the instance timezone.\n   *\n   * These system preferences keys will be deprecated by 15/07/2024. You can still use these keys to create arbitrary\n   * preferences, but it will not have any impact on Notification behaviour.\n   *\n   * - _user.notifications.watcher_ Whether the user gets notified when they are watcher.\n   * - _user.notifications.assignee_ Whether the user gets notified when they are assignee.\n   * - _user.notifications.reporter_ Whether the user gets notified when they are reporter.\n   * - _user.notifications.mentions_ Whether the user gets notified when they are mentions.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async setPreference<T = void>(parameters: Parameters.SetPreference, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a preference for the user or updates a preference's value by sending a plain text string. For example,\n   * `false`. An arbitrary preference can be created with the value containing up to 255 characters. In addition, the\n   * following keys define system preferences that can be set or created:\n   *\n   * - _user.notifications.mimetype_ The mime type used in notifications sent to the user. Defaults to `html`.\n   * - _user.default.share.private_ Whether new [ filters](https://confluence.atlassian.com/x/eQiiLQ) are set to private.\n   *   Defaults to `true`.\n   * - _user.keyboard.shortcuts.disabled_ Whether keyboard shortcuts are disabled. Defaults to `false`.\n   * - _user.autowatch.disabled_ Whether the user automatically watches issues they create or add a comment to. By\n   *   default, not set: the user takes the instance autowatch setting.\n   * - _user.notifiy.own.changes_ Whether the user gets notified of their own changes.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default, not set. The user takes the instance locale.\n   * - _jira.user.timezone_ The time zone of the user. By default, not set. The user takes the instance timezone.\n   *\n   * These system preferences keys will be deprecated by 15/07/2024. You can still use these keys to create arbitrary\n   * preferences, but it will not have any impact on Notification behaviour.\n   *\n   * - _user.notifications.watcher_ Whether the user gets notified when they are watcher.\n   * - _user.notifications.assignee_ Whether the user gets notified when they are assignee.\n   * - _user.notifications.reporter_ Whether the user gets notified when they are reporter.\n   * - _user.notifications.mentions_ Whether the user gets notified when they are mentions.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async setPreference<T = void>(parameters: Parameters.SetPreference, callback?: never): Promise<T>;\n  async setPreference<T = void>(parameters: Parameters.SetPreference, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/mypreferences',\n      method: 'PUT',\n      params: {\n        key: parameters.key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a preference of the user, which restores the default value of system defined settings.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default, not set. The user takes the instance locale.\n   * - _jira.user.timezone_ The time zone of the user. By default, not set. The user takes the instance timezone.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async removePreference<T = void>(parameters: Parameters.RemovePreference, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a preference of the user, which restores the default value of system defined settings.\n   *\n   * Note that these keys are deprecated:\n   *\n   * - _jira.user.locale_ The locale of the user. By default, not set. The user takes the instance locale.\n   * - _jira.user.timezone_ The time zone of the user. By default, not set. The user takes the instance timezone.\n   *\n   * Use [ Update a user\n   * profile](https://developer.atlassian.com/cloud/admin/user-management/rest/#api-users-account-id-manage-profile-patch)\n   * from the user management REST API to manage timezone and locale instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async removePreference<T = void>(parameters: Parameters.RemovePreference, callback?: never): Promise<T>;\n  async removePreference<T = void>(parameters: Parameters.RemovePreference, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/mypreferences',\n      method: 'DELETE',\n      params: {\n        key: parameters.key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the locale for the user.\n   *\n   * If the user has no language preference set (which is the default setting) or this resource is accessed anonymous,\n   * the browser locale detected by Jira is returned. Jira detects the browser locale using the _Accept-Language_ header\n   * in the request. However, if this doesn't match a locale available Jira, the site default locale is returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getLocale<T = Models.Locale>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the locale for the user.\n   *\n   * If the user has no language preference set (which is the default setting) or this resource is accessed anonymous,\n   * the browser locale detected by Jira is returned. Jira detects the browser locale using the _Accept-Language_ header\n   * in the request. However, if this doesn't match a locale available Jira, the site default locale is returned.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getLocale<T = Models.Locale>(callback?: never): Promise<T>;\n  async getLocale<T = Models.Locale>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/mypreferences/locale',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns details for the current user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getCurrentUser<T = Models.User>(\n    parameters: Parameters.GetCurrentUser | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns details for the current user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getCurrentUser<T = Models.User>(parameters?: Parameters.GetCurrentUser, callback?: never): Promise<T>;\n  async getCurrentUser<T = Models.User>(\n    parameters?: Parameters.GetCurrentUser,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/myself',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Permissions {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of permissions indicating which permissions the user has. Details of the user's permissions can be\n   * obtained in a global, project, issue or comment context.\n   *\n   * The user is reported as having a project permission:\n   *\n   * - In the global context, if the user has the project permission in any project.\n   * - For a project, where the project permission is determined using issue data, if the user meets the permission's\n   *   criteria for any issue in the project. Otherwise, if the user has the project permission in the project.\n   * - For an issue, where a project permission is determined using issue data, if the user has the permission in the\n   *   issue. Otherwise, if the user has the project permission in the project containing the issue.\n   * - For a comment, where the user has both the permission to browse the comment and the project permission for the\n   *   comment's parent issue. Only the BROWSE_PROJECTS permission is supported. If a `commentId` is provided whose\n   *   `permissions` does not equal BROWSE_PROJECTS, a 400 error will be returned.\n   *\n   * This means that users may be shown as having an issue permission (such as EDIT_ISSUES) in the global context or a\n   * project context but may not have the permission for any or all issues. For example, if Reporters have the\n   * EDIT_ISSUES permission a user would be shown as having this permission in the global context or the context of a\n   * project, because any user can be a reporter. However, if they are not the user who reported the issue queried they\n   * would not have EDIT_ISSUES permission for that issue.\n   *\n   * For [Jira Service Management project\n   * permissions](https://support.atlassian.com/jira-cloud-administration/docs/customize-jira-service-management-permissions/),\n   * this will be evaluated similarly to a user in the customer portal. For example, if the BROWSE_PROJECTS permission\n   * is granted to Service Project Customer - Portal Access, any users with access to the customer portal will have the\n   * BROWSE_PROJECTS permission.\n   *\n   * Global permissions are unaffected by context.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getMyPermissions<T = Models.Permissions>(\n    parameters: Parameters.GetMyPermissions | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of permissions indicating which permissions the user has. Details of the user's permissions can be\n   * obtained in a global, project, issue or comment context.\n   *\n   * The user is reported as having a project permission:\n   *\n   * - In the global context, if the user has the project permission in any project.\n   * - For a project, where the project permission is determined using issue data, if the user meets the permission's\n   *   criteria for any issue in the project. Otherwise, if the user has the project permission in the project.\n   * - For an issue, where a project permission is determined using issue data, if the user has the permission in the\n   *   issue. Otherwise, if the user has the project permission in the project containing the issue.\n   * - For a comment, where the user has both the permission to browse the comment and the project permission for the\n   *   comment's parent issue. Only the BROWSE_PROJECTS permission is supported. If a `commentId` is provided whose\n   *   `permissions` does not equal BROWSE_PROJECTS, a 400 error will be returned.\n   *\n   * This means that users may be shown as having an issue permission (such as EDIT_ISSUES) in the global context or a\n   * project context but may not have the permission for any or all issues. For example, if Reporters have the\n   * EDIT_ISSUES permission a user would be shown as having this permission in the global context or the context of a\n   * project, because any user can be a reporter. However, if they are not the user who reported the issue queried they\n   * would not have EDIT_ISSUES permission for that issue.\n   *\n   * For [Jira Service Management project\n   * permissions](https://support.atlassian.com/jira-cloud-administration/docs/customize-jira-service-management-permissions/),\n   * this will be evaluated similarly to a user in the customer portal. For example, if the BROWSE_PROJECTS permission\n   * is granted to Service Project Customer - Portal Access, any users with access to the customer portal will have the\n   * BROWSE_PROJECTS permission.\n   *\n   * Global permissions are unaffected by context.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getMyPermissions<T = Models.Permissions>(\n    parameters?: Parameters.GetMyPermissions,\n    callback?: never,\n  ): Promise<T>;\n  async getMyPermissions<T = Models.Permissions>(\n    parameters?: Parameters.GetMyPermissions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/mypermissions',\n      method: 'GET',\n      params: {\n        projectKey: parameters?.projectKey,\n        projectId: parameters?.projectId,\n        issueKey: parameters?.issueKey,\n        issueId: parameters?.issueId,\n        permissions: parameters?.permissions,\n        projectUuid: parameters?.projectUuid,\n        projectConfigurationUuid: parameters?.projectConfigurationUuid,\n        commentId: parameters?.commentId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all permissions, including:\n   *\n   * - Global permissions.\n   * - Project permissions.\n   * - Global permissions added by plugins.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllPermissions<T = Models.Permissions>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all permissions, including:\n   *\n   * - Global permissions.\n   * - Project permissions.\n   * - Global permissions added by plugins.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllPermissions<T = Models.Permissions>(callback?: never): Promise<T>;\n  async getAllPermissions<T = Models.Permissions>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/permissions',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns:\n   *\n   * - For a list of global permissions, the global permissions granted to a user.\n   * - For a list of project permissions and lists of projects and issues, for each project permission a list of the\n   *   projects and issues a user can access or manipulate.\n   *\n   * If no account ID is provided, the operation returns details for the logged in user.\n   *\n   * Note that:\n   *\n   * - Invalid project and issue IDs are ignored.\n   * - A maximum of 1000 projects and 1000 issues can be checked.\n   * - Null values in `globalPermissions`, `projectPermissions`, `projectPermissions.projects`, and\n   *   `projectPermissions.issues` are ignored.\n   * - Empty strings in `projectPermissions.permissions` are ignored.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - **Classic**: `read:jira-work`\n   * - **Granular**: `read:permission:jira`\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to check the permissions for other\n   * users, otherwise none. However, Connect apps can make a call from the app server to the product to obtain\n   * permission details for any user, without admin permission. This Connect app ability doesn't apply to calls made\n   * using AP.request() in a browser.\n   */\n  async getBulkPermissions<T = Models.BulkPermissionGrants>(\n    parameters: Parameters.GetBulkPermissions | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns:\n   *\n   * - For a list of global permissions, the global permissions granted to a user.\n   * - For a list of project permissions and lists of projects and issues, for each project permission a list of the\n   *   projects and issues a user can access or manipulate.\n   *\n   * If no account ID is provided, the operation returns details for the logged in user.\n   *\n   * Note that:\n   *\n   * - Invalid project and issue IDs are ignored.\n   * - A maximum of 1000 projects and 1000 issues can be checked.\n   * - Null values in `globalPermissions`, `projectPermissions`, `projectPermissions.projects`, and\n   *   `projectPermissions.issues` are ignored.\n   * - Empty strings in `projectPermissions.permissions` are ignored.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - **Classic**: `read:jira-work`\n   * - **Granular**: `read:permission:jira`\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) to check the permissions for other\n   * users, otherwise none. However, Connect apps can make a call from the app server to the product to obtain\n   * permission details for any user, without admin permission. This Connect app ability doesn't apply to calls made\n   * using AP.request() in a browser.\n   */\n  async getBulkPermissions<T = Models.BulkPermissionGrants>(\n    parameters?: Parameters.GetBulkPermissions,\n    callback?: never,\n  ): Promise<T>;\n  async getBulkPermissions<T = Models.BulkPermissionGrants>(\n    parameters?: Parameters.GetBulkPermissions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/permissions/check',\n      method: 'POST',\n      data: {\n        accountId: parameters?.accountId,\n        globalPermissions: parameters?.globalPermissions,\n        projectPermissions: parameters?.projectPermissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all the projects where the user is granted a list of project permissions.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getPermittedProjects<T = Models.PermittedProjects>(\n    parameters: Parameters.GetPermittedProjects | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all the projects where the user is granted a list of project permissions.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getPermittedProjects<T = Models.PermittedProjects>(\n    parameters?: Parameters.GetPermittedProjects,\n    callback?: never,\n  ): Promise<T>;\n  async getPermittedProjects<T = Models.PermittedProjects>(\n    parameters?: Parameters.GetPermittedProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/permissions/project',\n      method: 'POST',\n      data: {\n        permissions: parameters?.permissions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class PermissionSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all permission schemes.\n   *\n   * ### About permission schemes and grants\n   *\n   * A permission scheme is a collection of permission grants. A permission grant consists of a `holder` and a\n   * `permission`.\n   *\n   * #### Holder object\n   *\n   * The `holder` object contains information about the user or group being granted the permission. For example, the\n   * _Administer projects_ permission is granted to a group named _Teams in space administrators_. In this case, the\n   * type is `\"type\": \"group\"`, and the parameter is the group name, `\"parameter\": \"Teams in space administrators\"` and\n   * the value is group ID, `\"value\": \"ca85fac0-d974-40ca-a615-7af99c48d24f\"`.\n   *\n   * The `holder` object is defined by the following properties:\n   *\n   * - `type` Identifies the user or group (see the list of types below).\n   * - `parameter` As a group's name can change, use of `value` is recommended. The value of this property depends on the\n   *   `type`. For example, if the `type` is a group, then you need to specify the group name.\n   * - `value` The value of this property depends on the `type`. If the `type` is a group, then you need to specify the\n   *   group ID. For other `type` it has the same value as `parameter`\n   *\n   * The following `types` are available. The expected values for `parameter` and `value` are given in parentheses (some\n   * types may not have a `parameter` or `value`):\n   *\n   * - `anyone` Grant for anonymous users.\n   * - `applicationRole` Grant for users with access to the specified application (application name, application name).\n   *   See [Update product access settings](https://confluence.atlassian.com/x/3YxjL) for more information.\n   * - `assignee` Grant for the user currently assigned to an issue.\n   * - `group` Grant for the specified group (`parameter` : group name, `value` : group ID).\n   * - `groupCustomField` Grant for a user in the group selected in the specified custom field (`parameter` : custom field\n   *   ID, `value` : custom field ID).\n   * - `projectLead` Grant for a project lead.\n   * - `projectRole` Grant for the specified project role (`parameter` :project role ID, `value` : project role ID).\n   * - `reporter` Grant for the user who reported the issue.\n   * - `sd.customer.portal.only` Jira Service Desk only. Grants customers permission to access the customer portal but not\n   *   Jira. See [Customizing Jira Service Desk permissions](https://confluence.atlassian.com/x/24dKLg) for more\n   *   information.\n   * - `user` Grant for the specified user (`parameter` : user ID - historically this was the userkey but that is\n   *   deprecated and the account ID should be used, `value` : user ID).\n   * - `userCustomField` Grant for a user selected in the specified custom field (`parameter` : custom field ID, `value` :\n   *   custom field ID).\n   *\n   * #### Built-in permissions\n   *\n   * The [built-in Jira permissions](https://confluence.atlassian.com/x/yodKLg) are listed below. Apps can also define\n   * custom permissions. See the [project\n   * permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/) and [global\n   * permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/) module documentation\n   * for more information.\n   *\n   * **Administration permissions**\n   *\n   * - `ADMINISTER_PROJECTS`\n   * - `EDIT_WORKFLOW`\n   * - `EDIT_ISSUE_LAYOUT`\n   *\n   * **Project permissions**\n   *\n   * - `BROWSE_PROJECTS`\n   * - `MANAGE_SPRINTS_PERMISSION` (Jira Software only)\n   * - `SERVICEDESK_AGENT` (Jira Service Desk only)\n   * - `VIEW_DEV_TOOLS` (Jira Software only)\n   * - `VIEW_READONLY_WORKFLOW`\n   *\n   * **Issue permissions**\n   *\n   * - `ASSIGNABLE_USER`\n   * - `ASSIGN_ISSUES`\n   * - `CLOSE_ISSUES`\n   * - `CREATE_ISSUES`\n   * - `DELETE_ISSUES`\n   * - `EDIT_ISSUES`\n   * - `LINK_ISSUES`\n   * - `MODIFY_REPORTER`\n   * - `MOVE_ISSUES`\n   * - `RESOLVE_ISSUES`\n   * - `SCHEDULE_ISSUES`\n   * - `SET_ISSUE_SECURITY`\n   * - `TRANSITION_ISSUES`\n   *\n   * **Voters and watchers permissions**\n   *\n   * - `MANAGE_WATCHERS`\n   * - `VIEW_VOTERS_AND_WATCHERS`\n   *\n   * **Comments permissions**\n   *\n   * - `ADD_COMMENTS`\n   * - `DELETE_ALL_COMMENTS`\n   * - `DELETE_OWN_COMMENTS`\n   * - `EDIT_ALL_COMMENTS`\n   * - `EDIT_OWN_COMMENTS`\n   *\n   * **Attachments permissions**\n   *\n   * - `CREATE_ATTACHMENTS`\n   * - `DELETE_ALL_ATTACHMENTS`\n   * - `DELETE_OWN_ATTACHMENTS`\n   *\n   * **Time tracking permissions**\n   *\n   * - `DELETE_ALL_WORKLOGS`\n   * - `DELETE_OWN_WORKLOGS`\n   * - `EDIT_ALL_WORKLOGS`\n   * - `EDIT_OWN_WORKLOGS`\n   * - `WORK_ON_ISSUES`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAllPermissionSchemes<T = Models.PermissionSchemes>(\n    parameters: Parameters.GetAllPermissionSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all permission schemes.\n   *\n   * ### About permission schemes and grants\n   *\n   * A permission scheme is a collection of permission grants. A permission grant consists of a `holder` and a\n   * `permission`.\n   *\n   * #### Holder object\n   *\n   * The `holder` object contains information about the user or group being granted the permission. For example, the\n   * _Administer projects_ permission is granted to a group named _Teams in space administrators_. In this case, the\n   * type is `\"type\": \"group\"`, and the parameter is the group name, `\"parameter\": \"Teams in space administrators\"` and\n   * the value is group ID, `\"value\": \"ca85fac0-d974-40ca-a615-7af99c48d24f\"`.\n   *\n   * The `holder` object is defined by the following properties:\n   *\n   * - `type` Identifies the user or group (see the list of types below).\n   * - `parameter` As a group's name can change, use of `value` is recommended. The value of this property depends on the\n   *   `type`. For example, if the `type` is a group, then you need to specify the group name.\n   * - `value` The value of this property depends on the `type`. If the `type` is a group, then you need to specify the\n   *   group ID. For other `type` it has the same value as `parameter`\n   *\n   * The following `types` are available. The expected values for `parameter` and `value` are given in parentheses (some\n   * types may not have a `parameter` or `value`):\n   *\n   * - `anyone` Grant for anonymous users.\n   * - `applicationRole` Grant for users with access to the specified application (application name, application name).\n   *   See [Update product access settings](https://confluence.atlassian.com/x/3YxjL) for more information.\n   * - `assignee` Grant for the user currently assigned to an issue.\n   * - `group` Grant for the specified group (`parameter` : group name, `value` : group ID).\n   * - `groupCustomField` Grant for a user in the group selected in the specified custom field (`parameter` : custom field\n   *   ID, `value` : custom field ID).\n   * - `projectLead` Grant for a project lead.\n   * - `projectRole` Grant for the specified project role (`parameter` :project role ID, `value` : project role ID).\n   * - `reporter` Grant for the user who reported the issue.\n   * - `sd.customer.portal.only` Jira Service Desk only. Grants customers permission to access the customer portal but not\n   *   Jira. See [Customizing Jira Service Desk permissions](https://confluence.atlassian.com/x/24dKLg) for more\n   *   information.\n   * - `user` Grant for the specified user (`parameter` : user ID - historically this was the userkey but that is\n   *   deprecated and the account ID should be used, `value` : user ID).\n   * - `userCustomField` Grant for a user selected in the specified custom field (`parameter` : custom field ID, `value` :\n   *   custom field ID).\n   *\n   * #### Built-in permissions\n   *\n   * The [built-in Jira permissions](https://confluence.atlassian.com/x/yodKLg) are listed below. Apps can also define\n   * custom permissions. See the [project\n   * permission](https://developer.atlassian.com/cloud/jira/platform/modules/project-permission/) and [global\n   * permission](https://developer.atlassian.com/cloud/jira/platform/modules/global-permission/) module documentation\n   * for more information.\n   *\n   * **Administration permissions**\n   *\n   * - `ADMINISTER_PROJECTS`\n   * - `EDIT_WORKFLOW`\n   * - `EDIT_ISSUE_LAYOUT`\n   *\n   * **Project permissions**\n   *\n   * - `BROWSE_PROJECTS`\n   * - `MANAGE_SPRINTS_PERMISSION` (Jira Software only)\n   * - `SERVICEDESK_AGENT` (Jira Service Desk only)\n   * - `VIEW_DEV_TOOLS` (Jira Software only)\n   * - `VIEW_READONLY_WORKFLOW`\n   *\n   * **Issue permissions**\n   *\n   * - `ASSIGNABLE_USER`\n   * - `ASSIGN_ISSUES`\n   * - `CLOSE_ISSUES`\n   * - `CREATE_ISSUES`\n   * - `DELETE_ISSUES`\n   * - `EDIT_ISSUES`\n   * - `LINK_ISSUES`\n   * - `MODIFY_REPORTER`\n   * - `MOVE_ISSUES`\n   * - `RESOLVE_ISSUES`\n   * - `SCHEDULE_ISSUES`\n   * - `SET_ISSUE_SECURITY`\n   * - `TRANSITION_ISSUES`\n   *\n   * **Voters and watchers permissions**\n   *\n   * - `MANAGE_WATCHERS`\n   * - `VIEW_VOTERS_AND_WATCHERS`\n   *\n   * **Comments permissions**\n   *\n   * - `ADD_COMMENTS`\n   * - `DELETE_ALL_COMMENTS`\n   * - `DELETE_OWN_COMMENTS`\n   * - `EDIT_ALL_COMMENTS`\n   * - `EDIT_OWN_COMMENTS`\n   *\n   * **Attachments permissions**\n   *\n   * - `CREATE_ATTACHMENTS`\n   * - `DELETE_ALL_ATTACHMENTS`\n   * - `DELETE_OWN_ATTACHMENTS`\n   *\n   * **Time tracking permissions**\n   *\n   * - `DELETE_ALL_WORKLOGS`\n   * - `DELETE_OWN_WORKLOGS`\n   * - `EDIT_ALL_WORKLOGS`\n   * - `EDIT_OWN_WORKLOGS`\n   * - `WORK_ON_ISSUES`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAllPermissionSchemes<T = Models.PermissionSchemes>(\n    parameters?: Parameters.GetAllPermissionSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getAllPermissionSchemes<T = Models.PermissionSchemes>(\n    parameters?: Parameters.GetAllPermissionSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/permissionscheme',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a new permission scheme. You can create a permission scheme with or without defining a set of permission\n   * grants.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.CreatePermissionScheme | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a new permission scheme. You can create a permission scheme with or without defining a set of permission\n   * grants.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPermissionScheme<T = Models.PermissionScheme>(\n    parameters?: Parameters.CreatePermissionScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createPermissionScheme<T = Models.PermissionScheme>(\n    parameters?: Parameters.CreatePermissionScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/permissionscheme',\n      method: 'POST',\n      params: {\n        expand: parameters?.expand,\n      },\n      data: {\n        ...parameters,\n        expand: undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetPermissionScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetPermissionScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetPermissionScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/permissionscheme/${parameters.schemeId}`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a permission scheme. Below are some important things to note when using this resource:\n   *\n   * - If a permissions list is present in the request, then it is set in the permission scheme, overwriting _all\n   *   existing_ grants.\n   * - If you want to update only the name and description, then do not send a permissions list in the request.\n   * - Sending an empty list will remove all permission grants from the permission scheme.\n   *\n   * If you want to add or delete a permission grant instead of updating the whole list, see [Create permission\n   * grant](#api-rest-api-3-permissionscheme-schemeId-permission-post) or [Delete permission scheme\n   * entity](#api-rest-api-3-permissionscheme-schemeId-permission-permissionId-delete).\n   *\n   * See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for\n   * more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.UpdatePermissionScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a permission scheme. Below are some important things to note when using this resource:\n   *\n   * - If a permissions list is present in the request, then it is set in the permission scheme, overwriting _all\n   *   existing_ grants.\n   * - If you want to update only the name and description, then do not send a permissions list in the request.\n   * - Sending an empty list will remove all permission grants from the permission scheme.\n   *\n   * If you want to add or delete a permission grant instead of updating the whole list, see [Create permission\n   * grant](#api-rest-api-3-permissionscheme-schemeId-permission-post) or [Delete permission scheme\n   * entity](#api-rest-api-3-permissionscheme-schemeId-permission-permissionId-delete).\n   *\n   * See [About permission schemes and grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for\n   * more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.UpdatePermissionScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updatePermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.UpdatePermissionScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/permissionscheme/${parameters.schemeId}`,\n      method: 'PUT',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        ...parameters,\n        schemeId: undefined,\n        expand: undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePermissionScheme<T = void>(\n    parameters: Parameters.DeletePermissionScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePermissionScheme<T = void>(parameters: Parameters.DeletePermissionScheme, callback?: never): Promise<T>;\n  async deletePermissionScheme<T = void>(\n    parameters: Parameters.DeletePermissionScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/permissionscheme/${parameters.schemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all permission grants for a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionSchemeGrants<T = Models.PermissionGrants>(\n    parameters: Parameters.GetPermissionSchemeGrants,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all permission grants for a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionSchemeGrants<T = Models.PermissionGrants>(\n    parameters: Parameters.GetPermissionSchemeGrants,\n    callback?: never,\n  ): Promise<T>;\n  async getPermissionSchemeGrants<T = Models.PermissionGrants>(\n    parameters: Parameters.GetPermissionSchemeGrants,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/permissionscheme/${parameters.schemeId}/permission`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a permission grant in a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPermissionGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.CreatePermissionGrant,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a permission grant in a permission scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPermissionGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.CreatePermissionGrant,\n    callback?: never,\n  ): Promise<T>;\n  async createPermissionGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.CreatePermissionGrant,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/permissionscheme/${parameters.schemeId}/permission`,\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        holder: parameters.holder,\n        id: parameters.id,\n        permission: parameters.permission,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a permission grant.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionSchemeGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.GetPermissionSchemeGrant,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a permission grant.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPermissionSchemeGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.GetPermissionSchemeGrant,\n    callback?: never,\n  ): Promise<T>;\n  async getPermissionSchemeGrant<T = Models.PermissionGrant>(\n    parameters: Parameters.GetPermissionSchemeGrant,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/permissionscheme/${parameters.schemeId}/permission/${parameters.permissionId}`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a permission grant from a permission scheme. See [About permission schemes and\n   * grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePermissionSchemeEntity<T = void>(\n    parameters: Parameters.DeletePermissionSchemeEntity,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a permission grant from a permission scheme. See [About permission schemes and\n   * grants](../api-group-permission-schemes/#about-permission-schemes-and-grants) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePermissionSchemeEntity<T = void>(\n    parameters: Parameters.DeletePermissionSchemeEntity,\n    callback?: never,\n  ): Promise<T>;\n  async deletePermissionSchemeEntity<T = void>(\n    parameters: Parameters.DeletePermissionSchemeEntity,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/permissionscheme/${parameters.schemeId}/permission/${parameters.permissionId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Plans {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of plans.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlans<T = Models.PageWithCursorGetPlanResponseForPage>(\n    parameters: Parameters.GetPlans | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of plans.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlans<T = Models.PageWithCursorGetPlanResponseForPage>(\n    parameters?: Parameters.GetPlans,\n    callback?: never,\n  ): Promise<T>;\n  async getPlans<T = Models.PageWithCursorGetPlanResponseForPage>(\n    parameters?: Parameters.GetPlans,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/plans/plan',\n      method: 'GET',\n      params: {\n        includeTrashed: parameters?.includeTrashed,\n        includeArchived: parameters?.includeArchived,\n        cursor: parameters?.cursor,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPlan<T = unknown>(parameters: Parameters.CreatePlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPlan<T = unknown>(parameters: Parameters.CreatePlan, callback?: never): Promise<T>;\n  async createPlan<T = unknown>(parameters: Parameters.CreatePlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/plans/plan',\n      method: 'POST',\n      params: {\n        useGroupId: parameters.useGroupId,\n      },\n      data: {\n        crossProjectReleases: parameters.crossProjectReleases,\n        customFields: parameters.customFields,\n        exclusionRules: parameters.exclusionRules,\n        issueSources: parameters.issueSources,\n        leadAccountId: parameters.leadAccountId,\n        name: parameters.name,\n        permissions: parameters.permissions,\n        scheduling: parameters.scheduling,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlan<T = Models.Plan>(parameters: Parameters.GetPlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlan<T = Models.Plan>(parameters: Parameters.GetPlan, callback?: never): Promise<T>;\n  async getPlan<T = Models.Plan>(parameters: Parameters.GetPlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}`,\n      method: 'GET',\n      params: {\n        useGroupId: parameters.useGroupId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates any of the following details of a plan using [JSON Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get plan\" endpoint to find\n   * out the order of array elements._\n   */\n  async updatePlan<T = void>(parameters: Parameters.UpdatePlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates any of the following details of a plan using [JSON Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get plan\" endpoint to find\n   * out the order of array elements._\n   */\n  async updatePlan<T = void>(parameters: Parameters.UpdatePlan, callback?: never): Promise<T>;\n  async updatePlan<T = void>(parameters: Parameters.UpdatePlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}`,\n      method: 'PUT',\n      params: {\n        useGroupId: parameters.useGroupId,\n      },\n      data: {\n        crossProjectReleases: parameters.crossProjectReleases,\n        customFields: parameters.customFields,\n        exclusionRules: parameters.exclusionRules,\n        issueSources: parameters.issueSources,\n        leadAccountId: parameters.leadAccountId,\n        name: parameters.name,\n        permissions: parameters.permissions,\n        scheduling: parameters.scheduling,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Archives a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async archivePlan<T = void>(parameters: Parameters.ArchivePlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Archives a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async archivePlan<T = void>(parameters: Parameters.ArchivePlan, callback?: never): Promise<T>;\n  async archivePlan<T = void>(parameters: Parameters.ArchivePlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/archive`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Duplicates a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async duplicatePlan<T = unknown>(parameters: Parameters.DuplicatePlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Duplicates a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async duplicatePlan<T = unknown>(parameters: Parameters.DuplicatePlan, callback?: never): Promise<T>;\n  async duplicatePlan<T = unknown>(parameters: Parameters.DuplicatePlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/duplicate`,\n      method: 'POST',\n      data: {\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves a plan to trash.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async trashPlan<T = void>(parameters: Parameters.TrashPlan, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves a plan to trash.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async trashPlan<T = void>(parameters: Parameters.TrashPlan, callback?: never): Promise<T>;\n  async trashPlan<T = void>(parameters: Parameters.TrashPlan, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/trash`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\nimport { paramSerializer } from '../paramSerializer';\nimport type { Paginated } from '../paginated';\n\nexport class PrioritySchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * priority schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPrioritySchemes<T = Paginated<Models.PrioritySchemeWithPaginatedPrioritiesAndProjects>>(\n    parameters: Parameters.GetPrioritySchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * priority schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPrioritySchemes<T = Paginated<Models.PrioritySchemeWithPaginatedPrioritiesAndProjects>>(\n    parameters?: Parameters.GetPrioritySchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getPrioritySchemes<T = Paginated<Models.PrioritySchemeWithPaginatedPrioritiesAndProjects>>(\n    parameters?: Parameters.GetPrioritySchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/priorityscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        priorityId: paramSerializer('priorityId', parameters?.priorityId),\n        schemeId: paramSerializer('schemeId', parameters?.schemeId),\n        schemeName: parameters?.schemeName,\n        onlyDefault: parameters?.onlyDefault,\n        orderBy: parameters?.orderBy,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a new priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPriorityScheme<T = Models.PrioritySchemeId>(\n    parameters: Parameters.CreatePriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a new priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPriorityScheme<T = Models.PrioritySchemeId>(\n    parameters: Parameters.CreatePriorityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createPriorityScheme<T = Models.PrioritySchemeId>(\n    parameters: Parameters.CreatePriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/priorityscheme',\n      method: 'POST',\n      data: {\n        defaultPriorityId: parameters.defaultPriorityId,\n        description: parameters.description,\n        mappings: parameters.mappings,\n        name: parameters.name,\n        priorityIds: parameters.priorityIds,\n        projectIds: parameters.projectIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * priorities that would require mapping, given a change in priorities or projects associated with a priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async suggestedPrioritiesForMappings<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.SuggestedPrioritiesForMappings | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * priorities that would require mapping, given a change in priorities or projects associated with a priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async suggestedPrioritiesForMappings<T = Paginated<Models.PriorityWithSequence>>(\n    parameters?: Parameters.SuggestedPrioritiesForMappings,\n    callback?: never,\n  ): Promise<T>;\n  async suggestedPrioritiesForMappings<T = Paginated<Models.PriorityWithSequence>>(\n    parameters?: Parameters.SuggestedPrioritiesForMappings,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/priorityscheme/mappings',\n      method: 'POST',\n      data: {\n        maxResults: parameters?.maxResults,\n        priorities: parameters?.priorities,\n        projects: parameters?.projects,\n        schemeId: parameters?.schemeId,\n        startAt: parameters?.startAt,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * priorities available for adding to a priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAvailablePrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetAvailablePrioritiesByPriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * priorities available for adding to a priority scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAvailablePrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetAvailablePrioritiesByPriorityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getAvailablePrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetAvailablePrioritiesByPriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/priorityscheme/priorities/available',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        query: parameters.query,\n        schemeId: parameters.schemeId,\n        exclude: parameters.exclude,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a priority scheme. This includes its details, the lists of priorities and projects in it\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePriorityScheme<T = Models.UpdatePrioritySchemeResponse>(\n    parameters: Parameters.UpdatePriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a priority scheme. This includes its details, the lists of priorities and projects in it\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updatePriorityScheme<T = Models.UpdatePrioritySchemeResponse>(\n    parameters: Parameters.UpdatePriorityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updatePriorityScheme<T = Models.UpdatePrioritySchemeResponse>(\n    parameters: Parameters.UpdatePriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/priorityscheme/${parameters.schemeId}`,\n      method: 'PUT',\n      data: {\n        defaultPriorityId: parameters.defaultPriorityId,\n        description: parameters.description,\n        mappings: parameters.mappings,\n        name: parameters.name,\n        priorities: parameters.priorities,\n        projects: parameters.projects,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a priority scheme.\n   *\n   * This operation is only available for priority schemes without any associated projects. Any associated projects must\n   * be removed from the priority scheme before this operation can be performed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePriorityScheme<T = void>(\n    parameters: Parameters.DeletePriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a priority scheme.\n   *\n   * This operation is only available for priority schemes without any associated projects. Any associated projects must\n   * be removed from the priority scheme before this operation can be performed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePriorityScheme<T = void>(parameters: Parameters.DeletePriorityScheme, callback?: never): Promise<T>;\n  async deletePriorityScheme<T = void>(\n    parameters: Parameters.DeletePriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/priorityscheme/${parameters.schemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * priorities by scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetPrioritiesByPriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * priorities by scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getPrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetPrioritiesByPriorityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getPrioritiesByPriorityScheme<T = Paginated<Models.PriorityWithSequence>>(\n    parameters: Parameters.GetPrioritiesByPriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/priorityscheme/${parameters.schemeId}/priorities`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * projects by scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getProjectsByPriorityScheme<T = Models.PageProject>(\n    parameters: Parameters.GetProjectsByPriorityScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * projects by scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getProjectsByPriorityScheme<T = Models.PageProject>(\n    parameters: Parameters.GetProjectsByPriorityScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectsByPriorityScheme<T = Models.PageProject>(\n    parameters: Parameters.GetProjectsByPriorityScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/priorityscheme/${parameters.schemeId}/projects`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        projectId: paramSerializer('projectId', parameters.projectId),\n        query: parameters.query,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectAvatars {\n  constructor(private client: Client) {}\n\n  /**\n   * Sets the avatar displayed for a project.\n   *\n   * Use [Load project avatar](#api-rest-api-3-project-projectIdOrKey-avatar2-post) to store avatars against the\n   * project, before using this operation to set the displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async updateProjectAvatar<T = void>(parameters: Parameters.UpdateProjectAvatar, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the avatar displayed for a project.\n   *\n   * Use [Load project avatar](#api-rest-api-3-project-projectIdOrKey-avatar2-post) to store avatars against the\n   * project, before using this operation to set the displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async updateProjectAvatar<T = void>(parameters: Parameters.UpdateProjectAvatar, callback?: never): Promise<T>;\n  async updateProjectAvatar<T = void>(\n    parameters: Parameters.UpdateProjectAvatar,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/avatar`,\n      method: 'PUT',\n      data: {\n        fileName: parameters.fileName,\n        id: parameters.id,\n        isDeletable: parameters.isDeletable,\n        isSelected: parameters.isSelected,\n        isSystemAvatar: parameters.isSystemAvatar,\n        owner: parameters.owner,\n        urls: parameters.urls,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a custom avatar from a project. Note that system avatars cannot be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async deleteProjectAvatar<T = void>(parameters: Parameters.DeleteProjectAvatar, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a custom avatar from a project. Note that system avatars cannot be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async deleteProjectAvatar<T = void>(parameters: Parameters.DeleteProjectAvatar, callback?: never): Promise<T>;\n  async deleteProjectAvatar<T = void>(\n    parameters: Parameters.DeleteProjectAvatar,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/avatar/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Loads an avatar for a project.\n   *\n   * Specify the avatar's local file location in the body of the request. Also, include the following headers:\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar use [Set project\n   * avatar](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-avatars/#api-rest-api-3-project-projectidorkey-avatar-put)\n   * to set it as the project's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async createProjectAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateProjectAvatar,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Loads an avatar for a project.\n   *\n   * The avatar is cropped to a square. If no crop parameters are specified, the square originates at the top left of\n   * the image. The length of the square's sides is set to the smaller of the height or width of the image.\n   *\n   * The cropped image is then used to create avatars of 16x16, 24x24, 32x32, and 48x48 in size.\n   *\n   * After creating the avatar use [Set project\n   * avatar](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-project-avatars/#api-rest-api-3-project-projectidorkey-avatar-put)\n   * to set it as the project's displayed avatar.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async createProjectAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateProjectAvatar,\n    callback?: never,\n  ): Promise<T>;\n  async createProjectAvatar<T = Models.Avatar>(\n    parameters: Parameters.CreateProjectAvatar,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/avatar2`,\n      method: 'POST',\n      headers: {\n        'X-Atlassian-Token': 'no-check',\n        'Content-Type': parameters.mimeType,\n      },\n      params: {\n        x: parameters.x,\n        y: parameters.y,\n        size: parameters.size ?? 0,\n      },\n      data: parameters.avatar,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all project avatars, grouped by system and custom avatars.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getAllProjectAvatars<T = Models.ProjectAvatars>(\n    parameters: Parameters.GetAllProjectAvatars,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all project avatars, grouped by system and custom avatars.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getAllProjectAvatars<T = Models.ProjectAvatars>(\n    parameters: Parameters.GetAllProjectAvatars,\n    callback?: never,\n  ): Promise<T>;\n  async getAllProjectAvatars<T = Models.ProjectAvatars>(\n    parameters: Parameters.GetAllProjectAvatars,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/avatars`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectCategories {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all project categories.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAllProjectCategories<T = Models.ProjectCategory[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all project categories.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAllProjectCategories<T = Models.ProjectCategory[]>(callback?: never): Promise<T>;\n  async getAllProjectCategories<T = Models.ProjectCategory[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/projectCategory',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProjectCategory<T = Models.ProjectCategory>(\n    parameters: Parameters.CreateProjectCategory,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProjectCategory<T = Models.ProjectCategory>(\n    parameters: Parameters.CreateProjectCategory,\n    callback?: never,\n  ): Promise<T>;\n  async createProjectCategory<T = Models.ProjectCategory>(\n    parameters: Parameters.CreateProjectCategory,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/projectCategory',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        id: parameters.id,\n        name: parameters.name,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getProjectCategoryById<T = Models.ProjectCategory>(\n    parameters: Parameters.GetProjectCategoryById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getProjectCategoryById<T = Models.ProjectCategory>(\n    parameters: Parameters.GetProjectCategoryById,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectCategoryById<T = Models.ProjectCategory>(\n    parameters: Parameters.GetProjectCategoryById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/projectCategory/${parameters.id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateProjectCategory<T = Models.UpdatedProjectCategory>(\n    parameters: Parameters.UpdateProjectCategory,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateProjectCategory<T = Models.UpdatedProjectCategory>(\n    parameters: Parameters.UpdateProjectCategory,\n    callback?: never,\n  ): Promise<T>;\n  async updateProjectCategory<T = Models.UpdatedProjectCategory>(\n    parameters: Parameters.UpdateProjectCategory,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/projectCategory/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeProjectCategory<T = void>(\n    parameters: Parameters.RemoveProjectCategory,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a project category.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeProjectCategory<T = void>(parameters: Parameters.RemoveProjectCategory, callback?: never): Promise<T>;\n  async removeProjectCategory<T = void>(\n    parameters: Parameters.RemoveProjectCategory,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/projectCategory/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectClassificationLevels {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the default data classification for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultProjectClassification<T = unknown>(\n    parameters: Parameters.GetDefaultProjectClassification,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the default data classification for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultProjectClassification<T = unknown>(\n    parameters: Parameters.GetDefaultProjectClassification,\n    callback?: never,\n  ): Promise<T>;\n  async getDefaultProjectClassification<T = unknown>(\n    parameters: Parameters.GetDefaultProjectClassification,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/classification-level/default`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the default data classification level for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultProjectClassification<T = void>(\n    parameters: Parameters.UpdateDefaultProjectClassification,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the default data classification level for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultProjectClassification<T = void>(\n    parameters: Parameters.UpdateDefaultProjectClassification,\n    callback?: never,\n  ): Promise<T>;\n  async updateDefaultProjectClassification<T = void>(\n    parameters: Parameters.UpdateDefaultProjectClassification,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/classification-level/default`,\n      method: 'PUT',\n      data: {\n        id: parameters.id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Remove the default data classification level for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeDefaultProjectClassification<T = void>(\n    parameters: Parameters.RemoveDefaultProjectClassification,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Remove the default data classification level for a project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeDefaultProjectClassification<T = void>(\n    parameters: Parameters.RemoveDefaultProjectClassification,\n    callback?: never,\n  ): Promise<T>;\n  async removeDefaultProjectClassification<T = void>(\n    parameters: Parameters.RemoveDefaultProjectClassification,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/classification-level/default`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\nimport type { Paginated } from '../paginated';\n\nexport class ProjectComponents {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * components in a project, including global (Compass) components when applicable.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async findComponentsForProjects<T = Paginated<Models.Component>>(\n    parameters: Parameters.FindComponentsForProjects,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * components in a project, including global (Compass) components when applicable.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async findComponentsForProjects<T = Paginated<Models.Component>>(\n    parameters: Parameters.FindComponentsForProjects,\n    callback?: never,\n  ): Promise<T>;\n  async findComponentsForProjects<T = Paginated<Models.Component>>(\n    parameters: Parameters.FindComponentsForProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/component',\n      method: 'GET',\n      params: {\n        projectIdsOrKeys: parameters.projectIdsOrKeys,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        orderBy: parameters.orderBy,\n        query: parameters.query,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a component. Use components to provide containers for issues within a project. Use components to provide\n   * containers for issues within a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the\n   * component is created or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.CreateComponent,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a component. Use components to provide containers for issues within a project. Use components to provide\n   * containers for issues within a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the\n   * component is created or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.CreateComponent,\n    callback?: never,\n  ): Promise<T>;\n  async createComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.CreateComponent,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/component',\n      method: 'POST',\n      data: {\n        ari: parameters.ari,\n        assignee: parameters.assignee,\n        assigneeType: parameters.assigneeType,\n        description: parameters.description,\n        id: parameters.id,\n        isAssigneeTypeValid: parameters.isAssigneeTypeValid,\n        lead: parameters.lead,\n        leadAccountId: parameters.leadAccountId,\n        leadUserName: parameters.leadUserName,\n        metadata: parameters.metadata,\n        name: parameters.name,\n        project: parameters.project,\n        projectId: parameters.projectId,\n        realAssignee: parameters.realAssignee,\n        realAssigneeType: parameters.realAssigneeType,\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for project containing the component.\n   */\n  async getComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.GetComponent,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for project containing the component.\n   */\n  async getComponent<T = Models.ProjectComponent>(parameters: Parameters.GetComponent, callback?: never): Promise<T>;\n  async getComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.GetComponent,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/component/${parameters.id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a component. Any fields included in the request are overwritten. If `leadAccountId` is an empty string (\"\")\n   * the component lead is removed.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   * the component or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.UpdateComponent,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a component. Any fields included in the request are overwritten. If `leadAccountId` is an empty string (\"\")\n   * the component lead is removed.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   * the component or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.UpdateComponent,\n    callback?: never,\n  ): Promise<T>;\n  async updateComponent<T = Models.ProjectComponent>(\n    parameters: Parameters.UpdateComponent,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/component/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        leadUserName: parameters.leadUserName,\n        leadAccountId: parameters.leadAccountId,\n        assigneeType: parameters.assigneeType,\n        project: parameters.project,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   * the component or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteComponent<T = void>(parameters: Parameters.DeleteComponent, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing\n   * the component or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteComponent<T = void>(parameters: Parameters.DeleteComponent, callback?: never): Promise<T>;\n  async deleteComponent<T = void>(parameters: Parameters.DeleteComponent, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/component/${parameters.id}`,\n      method: 'DELETE',\n      params: {\n        moveIssuesTo: parameters.moveIssuesTo,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the counts of issues assigned to the component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - **Classic**: `read:jira-work`\n   * - **Granular**: `read:field:jira`, `read:project.component:jira`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getComponentRelatedIssues<T = Models.ComponentIssuesCount>(\n    parameters: Parameters.GetComponentRelatedIssues,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the counts of issues assigned to the component.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - **Classic**: `read:jira-work`\n   * - **Granular**: `read:field:jira`, `read:project.component:jira`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getComponentRelatedIssues<T = Models.ComponentIssuesCount>(\n    parameters: Parameters.GetComponentRelatedIssues,\n    callback?: never,\n  ): Promise<T>;\n  async getComponentRelatedIssues<T = Models.ComponentIssuesCount>(\n    parameters: Parameters.GetComponentRelatedIssues,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/component/${parameters.id}/relatedIssueCounts`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * components in a project. See the [Get project components](#api-rest-api-3-project-projectIdOrKey-components-get)\n   * resource if you want to get a full list of versions without pagination.\n   *\n   * If your project uses Compass components, this API will return a list of Compass components that are linked to\n   * issues in that project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectComponentsPaginated<T = Models.PageComponentWithIssueCount>(\n    parameters: Parameters.GetProjectComponentsPaginated,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * components in a project. See the [Get project components](#api-rest-api-3-project-projectIdOrKey-components-get)\n   * resource if you want to get a full list of versions without pagination.\n   *\n   * If your project uses Compass components, this API will return a list of Compass components that are linked to\n   * issues in that project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectComponentsPaginated<T = Models.PageComponentWithIssueCount>(\n    parameters: Parameters.GetProjectComponentsPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectComponentsPaginated<T = Models.PageComponentWithIssueCount>(\n    parameters: Parameters.GetProjectComponentsPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/component`,\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        orderBy: parameters.orderBy,\n        componentSource: parameters.componentSource,\n        query: parameters.query,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all components in a project. See the [Get project components\n   * paginated](#api-rest-api-3-project-projectIdOrKey-component-get) resource if you want to get a full list of\n   * components with pagination.\n   *\n   * If your project uses Compass components, this API will return a paginated list of Compass components that are\n   * linked to issues in that project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectComponents<T = Models.ProjectComponent[]>(\n    parameters: Parameters.GetProjectComponents,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all components in a project. See the [Get project components\n   * paginated](#api-rest-api-3-project-projectIdOrKey-component-get) resource if you want to get a full list of\n   * components with pagination.\n   *\n   * If your project uses Compass components, this API will return a paginated list of Compass components that are\n   * linked to issues in that project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectComponents<T = Models.ProjectComponent[]>(\n    parameters: Parameters.GetProjectComponents,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectComponents<T = Models.ProjectComponent[]>(\n    parameters: Parameters.GetProjectComponents,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/components`,\n      method: 'GET',\n      params: {\n        componentSource: parameters.componentSource,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectEmail {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the [project's sender email address](https://confluence.atlassian.com/x/dolKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectEmail<T = Models.ProjectEmailAddress>(\n    parameters: Parameters.GetProjectEmail | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the [project's sender email address](https://confluence.atlassian.com/x/dolKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectEmail<T = Models.ProjectEmailAddress>(\n    parameters: Parameters.GetProjectEmail | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectEmail<T = Models.ProjectEmailAddress>(\n    parameters: Parameters.GetProjectEmail | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectId = typeof parameters === 'string' ? parameters : parameters.projectId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectId}/email`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the [project's sender email address](https://confluence.atlassian.com/x/dolKLg).\n   *\n   * If `emailAddress` is an empty string, the default email address is restored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateProjectEmail<T = void>(parameters: Parameters.UpdateProjectEmail, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the [project's sender email address](https://confluence.atlassian.com/x/dolKLg).\n   *\n   * If `emailAddress` is an empty string, the default email address is restored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateProjectEmail<T = void>(parameters: Parameters.UpdateProjectEmail, callback?: never): Promise<T>;\n  async updateProjectEmail<T = void>(\n    parameters: Parameters.UpdateProjectEmail,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectId}/email`,\n      method: 'PUT',\n      data: {\n        emailAddress: parameters.emailAddress,\n        emailAddressStatus: parameters.emailAddressStatus,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectFeatures {\n  constructor(private client: Client) {}\n\n  /** Returns the list of features for a project. */\n  async getFeaturesForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.GetFeaturesForProject | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns the list of features for a project. */\n  async getFeaturesForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.GetFeaturesForProject | string,\n    callback?: never,\n  ): Promise<T>;\n  async getFeaturesForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.GetFeaturesForProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}/features`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Sets the state of a project feature. */\n  async toggleFeatureForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.ToggleFeatureForProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Sets the state of a project feature. */\n  async toggleFeatureForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.ToggleFeatureForProject,\n    callback?: never,\n  ): Promise<T>;\n  async toggleFeatureForProject<T = Models.ContainerForProjectFeatures>(\n    parameters: Parameters.ToggleFeatureForProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/features/${parameters.featureKey}`,\n      method: 'PUT',\n      data: {\n        state: parameters.state,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectKeyAndNameValidation {\n  constructor(private client: Client) {}\n\n  /**\n   * Validates a project key by confirming the key is a valid string and not in use.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async validateProjectKey<T = Models.ErrorCollection>(\n    parameters: Parameters.ValidateProjectKey | string | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Validates a project key by confirming the key is a valid string and not in use.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async validateProjectKey<T = Models.ErrorCollection>(\n    parameters?: Parameters.ValidateProjectKey | string,\n    callback?: never,\n  ): Promise<T>;\n  async validateProjectKey<T = Models.ErrorCollection>(\n    parameters?: Parameters.ValidateProjectKey | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const key = typeof parameters === 'string' ? parameters : parameters?.key;\n\n    const config: RequestConfig = {\n      url: '/rest/api/3/projectvalidate/key',\n      method: 'GET',\n      params: {\n        key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Validates a project key and, if the key is invalid or in use, generates a valid random string for the project key.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getValidProjectKey<T = string>(\n    parameters: Parameters.GetValidProjectKey | string | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Validates a project key and, if the key is invalid or in use, generates a valid random string for the project key.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getValidProjectKey<T = string>(\n    parameters?: Parameters.GetValidProjectKey | string,\n    callback?: never,\n  ): Promise<T>;\n  async getValidProjectKey<T = string>(\n    parameters?: Parameters.GetValidProjectKey | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const key = typeof parameters === 'string' ? parameters : parameters?.key;\n\n    const config: RequestConfig = {\n      url: '/rest/api/3/projectvalidate/validProjectKey',\n      method: 'GET',\n      params: {\n        key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Checks that a project name isn't in use. If the name isn't in use, the passed string is returned. If the name is in\n   * use, this operation attempts to generate a valid project name based on the one supplied, usually by adding a\n   * sequence number. If a valid project name cannot be generated, a 404 response is returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getValidProjectName<T = string>(\n    parameters: Parameters.GetValidProjectName | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Checks that a project name isn't in use. If the name isn't in use, the passed string is returned. If the name is in\n   * use, this operation attempts to generate a valid project name based on the one supplied, usually by adding a\n   * sequence number. If a valid project name cannot be generated, a 404 response is returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getValidProjectName<T = string>(\n    parameters: Parameters.GetValidProjectName | string,\n    callback?: never,\n  ): Promise<T>;\n  async getValidProjectName<T = string>(\n    parameters: Parameters.GetValidProjectName | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const name = typeof parameters === 'string' ? parameters : parameters.name;\n\n    const config: RequestConfig = {\n      url: '/rest/api/3/projectvalidate/validProjectName',\n      method: 'GET',\n      params: {\n        name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectPermissionSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the [issue security scheme](https://confluence.atlassian.com/x/J4lKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or the _Administer Projects_\n   * [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getProjectIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetProjectIssueSecurityScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the [issue security scheme](https://confluence.atlassian.com/x/J4lKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or the _Administer Projects_\n   * [project permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getProjectIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetProjectIssueSecurityScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectIssueSecurityScheme<T = Models.SecurityScheme>(\n    parameters: Parameters.GetProjectIssueSecurityScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectKeyOrId = typeof parameters === 'string' ? parameters : parameters.projectKeyOrId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectKeyOrId}/issuesecuritylevelscheme`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets the [permission scheme](https://confluence.atlassian.com/x/yodKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getAssignedPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetAssignedPermissionScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets the [permission scheme](https://confluence.atlassian.com/x/yodKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getAssignedPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetAssignedPermissionScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAssignedPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.GetAssignedPermissionScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectKeyOrId = typeof parameters === 'string' ? parameters : parameters.projectKeyOrId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectKeyOrId}/permissionscheme`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns a permission scheme with a project. See [Managing project\n   * permissions](https://confluence.atlassian.com/x/yodKLg) for more information about permission schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   */\n  async assignPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.AssignPermissionScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns a permission scheme with a project. See [Managing project\n   * permissions](https://confluence.atlassian.com/x/yodKLg) for more information about permission schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)\n   */\n  async assignPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.AssignPermissionScheme,\n    callback?: never,\n  ): Promise<T>;\n  async assignPermissionScheme<T = Models.PermissionScheme>(\n    parameters: Parameters.AssignPermissionScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectKeyOrId}/permissionscheme`,\n      method: 'PUT',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        id: parameters.id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all [issue security](https://confluence.atlassian.com/x/J4lKLg) levels for the project that the user has\n   * access to.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project, however, issue security\n   * levels are only returned for authenticated user with _Set Issue Security_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) for the project.\n   */\n  async getSecurityLevelsForProject<T = Models.ProjectIssueSecurityLevels>(\n    parameters: Parameters.GetSecurityLevelsForProject | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all [issue security](https://confluence.atlassian.com/x/J4lKLg) levels for the project that the user has\n   * access to.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [global permission](https://confluence.atlassian.com/x/x4dKLg) for the project, however, issue security\n   * levels are only returned for authenticated user with _Set Issue Security_ [global\n   * permission](https://confluence.atlassian.com/x/x4dKLg) for the project.\n   */\n  async getSecurityLevelsForProject<T = Models.ProjectIssueSecurityLevels>(\n    parameters: Parameters.GetSecurityLevelsForProject | string,\n    callback?: never,\n  ): Promise<T>;\n  async getSecurityLevelsForProject<T = Models.ProjectIssueSecurityLevels>(\n    parameters: Parameters.GetSecurityLevelsForProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectKeyOrId = typeof parameters === 'string' ? parameters : parameters.projectKeyOrId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectKeyOrId}/securitylevel`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * keys for the project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetProjectPropertyKeys | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * keys for the project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetProjectPropertyKeys | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetProjectPropertyKeys | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}/properties`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of a [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property.\n   */\n  async getProjectProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetProjectProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property.\n   */\n  async getProjectProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetProjectProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetProjectProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of the [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   * You can use project properties to store custom data against the project.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the property is created.\n   */\n  async setProjectProperty<T = unknown>(\n    parameters: Parameters.SetProjectProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of the [project\n   * property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties).\n   * You can use project properties to store custom data against the project.\n   *\n   * The value of the request body must be a [valid](http://tools.ietf.org/html/rfc4627), non-empty JSON blob. The\n   * maximum length is 32768 characters.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project in which the property is created.\n   */\n  async setProjectProperty<T = unknown>(parameters: Parameters.SetProjectProperty, callback?: never): Promise<T>;\n  async setProjectProperty<T = unknown>(\n    parameters: Parameters.SetProjectProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the\n   * [property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * from a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property.\n   */\n  async deleteProjectProperty<T = void>(\n    parameters: Parameters.DeleteProjectProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the\n   * [property](https://developer.atlassian.com/cloud/jira/platform/storing-data-without-a-database/#a-id-jira-entity-properties-a-jira-entity-properties)\n   * from a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the property.\n   */\n  async deleteProjectProperty<T = void>(parameters: Parameters.DeleteProjectProperty, callback?: never): Promise<T>;\n  async deleteProjectProperty<T = void>(\n    parameters: Parameters.DeleteProjectProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectRoleActors {\n  constructor(private client: Client) {}\n\n  /**\n   * Adds actors to a project role for the project.\n   *\n   * To replace all actors for the project, use [Set actors for project\n   * role](#api-rest-api-3-project-projectIdOrKey-role-id-put).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addActorUsers<T = Models.ProjectRole>(\n    parameters: Parameters.AddActorUsers,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds actors to a project role for the project.\n   *\n   * To replace all actors for the project, use [Set actors for project\n   * role](#api-rest-api-3-project-projectIdOrKey-role-id-put).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addActorUsers<T = Models.ProjectRole>(parameters: Parameters.AddActorUsers, callback?: never): Promise<T>;\n  async addActorUsers<T = Models.ProjectRole>(\n    parameters: Parameters.AddActorUsers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/role/${parameters.id}`,\n      method: 'POST',\n      data: {\n        group: parameters.group,\n        groupId: parameters.groupId,\n        user: parameters.user,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the actors for a project role for a project, replacing all existing actors.\n   *\n   * To add actors to the project without overwriting the existing list, use [Add actors to project\n   * role](#api-rest-api-3-project-projectIdOrKey-role-id-post).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setActors<T = Models.ProjectRole>(parameters: Parameters.SetActors, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the actors for a project role for a project, replacing all existing actors.\n   *\n   * To add actors to the project without overwriting the existing list, use [Add actors to project\n   * role](#api-rest-api-3-project-projectIdOrKey-role-id-post).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setActors<T = Models.ProjectRole>(parameters: Parameters.SetActors, callback?: never): Promise<T>;\n  async setActors<T = Models.ProjectRole>(parameters: Parameters.SetActors, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/role/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        categorisedActors: parameters.categorisedActors,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes actors from a project role for the project.\n   *\n   * To remove default actors from the project role, use [Delete default actors from project\n   * role](#api-rest-api-3-role-id-actors-delete).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteActor<T = void>(parameters: Parameters.DeleteActor, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes actors from a project role for the project.\n   *\n   * To remove default actors from the project role, use [Delete default actors from project\n   * role](#api-rest-api-3-role-id-actors-delete).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteActor<T = void>(parameters: Parameters.DeleteActor, callback?: never): Promise<T>;\n  async deleteActor<T = void>(parameters: Parameters.DeleteActor, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/role/${parameters.id}`,\n      method: 'DELETE',\n      params: {\n        user: parameters.user,\n        group: parameters.group,\n        groupId: parameters.groupId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the [default actors](#api-rest-api-3-resolution-get) for the project role.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoleActorsForRole<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleActorsForRole | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the [default actors](#api-rest-api-3-resolution-get) for the project role.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoleActorsForRole<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleActorsForRole | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectRoleActorsForRole<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleActorsForRole | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/role/${id}/actors`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds [default actors](#api-rest-api-3-resolution-get) to a role. You may add groups or users, but you cannot add\n   * groups and users in the same request.\n   *\n   * Changing a project role's default actors does not affect project role members for projects already created.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addProjectRoleActorsToRole<T = Models.ProjectRole>(\n    parameters: Parameters.AddProjectRoleActorsToRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds [default actors](#api-rest-api-3-resolution-get) to a role. You may add groups or users, but you cannot add\n   * groups and users in the same request.\n   *\n   * Changing a project role's default actors does not affect project role members for projects already created.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addProjectRoleActorsToRole<T = Models.ProjectRole>(\n    parameters: Parameters.AddProjectRoleActorsToRole,\n    callback?: never,\n  ): Promise<T>;\n  async addProjectRoleActorsToRole<T = Models.ProjectRole>(\n    parameters: Parameters.AddProjectRoleActorsToRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/role/${parameters.id}/actors`,\n      method: 'POST',\n      data: {\n        group: parameters.group,\n        groupId: parameters.groupId,\n        user: parameters.user,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the [default actors](#api-rest-api-3-resolution-get) from a project role. You may delete a group or user,\n   * but you cannot delete a group and a user in the same request.\n   *\n   * Changing a project role's default actors does not affect project role members for projects already created.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectRoleActorsFromRole<T = Models.ProjectRole>(\n    parameters: Parameters.DeleteProjectRoleActorsFromRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the [default actors](#api-rest-api-3-resolution-get) from a project role. You may delete a group or user,\n   * but you cannot delete a group and a user in the same request.\n   *\n   * Changing a project role's default actors does not affect project role members for projects already created.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectRoleActorsFromRole<T = Models.ProjectRole>(\n    parameters: Parameters.DeleteProjectRoleActorsFromRole,\n    callback?: never,\n  ): Promise<T>;\n  async deleteProjectRoleActorsFromRole<T = Models.ProjectRole>(\n    parameters: Parameters.DeleteProjectRoleActorsFromRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/role/${parameters.id}/actors`,\n      method: 'DELETE',\n      params: {\n        user: parameters.user,\n        groupId: parameters.groupId,\n        group: parameters.group,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectRoles {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of [project\n   * roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) for the project\n   * returning the name and self URL for each role.\n   *\n   * Note that all project roles are shared with all projects in Jira Cloud. See [Get all project\n   * roles](#api-rest-api-3-role-get) for more information.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for any project on the site\n   * or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoles<T = Record<string, string>>(\n    parameters: Parameters.GetProjectRoles | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of [project\n   * roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) for the project\n   * returning the name and self URL for each role.\n   *\n   * Note that all project roles are shared with all projects in Jira Cloud. See [Get all project\n   * roles](#api-rest-api-3-role-get) for more information.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for any project on the site\n   * or _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoles<T = Record<string, string>>(\n    parameters: Parameters.GetProjectRoles | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectRoles<T = Record<string, string>>(\n    parameters: Parameters.GetProjectRoles | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}/role`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a project role's details and actors associated with the project. The list of actors is sorted by display\n   * name.\n   *\n   * To check whether a user belongs to a role based on their group memberships, use [Get\n   * user](#api-rest-api-3-user-get) with the `groups` expand parameter selected. Then check whether the user keys and\n   * groups match with the actors returned for the project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a project role's details and actors associated with the project. The list of actors is sorted by display\n   * name.\n   *\n   * To check whether a user belongs to a role based on their group memberships, use [Get\n   * user](#api-rest-api-3-user-get) with the `groups` expand parameter selected. Then check whether the user keys and\n   * groups match with the actors returned for the project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project or\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRole<T = Models.ProjectRole>(parameters: Parameters.GetProjectRole, callback?: never): Promise<T>;\n  async getProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}/role/${parameters.id}`,\n      method: 'GET',\n      params: {\n        excludeInactiveUsers: parameters.excludeInactiveUsers,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) and\n   * the details for each role. Note that the list of project roles is common to all projects.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectRoleDetails<T = Models.ProjectRoleDetails[]>(\n    parameters: Parameters.GetProjectRoleDetails | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all [project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) and\n   * the details for each role. Note that the list of project roles is common to all projects.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectRoleDetails<T = Models.ProjectRoleDetails[]>(\n    parameters: Parameters.GetProjectRoleDetails | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectRoleDetails<T = Models.ProjectRoleDetails[]>(\n    parameters: Parameters.GetProjectRoleDetails | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}/roledetails`,\n      method: 'GET',\n      params: {\n        currentMember: typeof parameters !== 'string' && parameters.currentMember,\n        excludeConnectAddons: typeof parameters !== 'string' && parameters.excludeConnectAddons,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets a list of all project roles, complete with project role details and default actors.\n   *\n   * ### About project roles\n   *\n   * [Project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) are a flexible\n   * way to to associate users and groups with projects. In Jira Cloud, the list of project roles is shared globally\n   * with all projects, but each project can have a different set of actors associated with it (unlike groups, which\n   * have the same membership throughout all Jira applications).\n   *\n   * Project roles are used in [permission schemes](#api-rest-api-3-permissionscheme-get), [email notification\n   * schemes](#api-rest-api-3-notificationscheme-get), [issue security\n   * levels](#api-rest-api-3-issuesecurityschemes-get), [comment visibility](#api-rest-api-3-comment-list-post), and\n   * workflow conditions.\n   *\n   * #### Members and actors\n   *\n   * In the Jira REST API, a member of a project role is called an _actor_. An _actor_ is a group or user associated\n   * with a project role.\n   *\n   * Actors may be set as [default\n   * members](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/#Specifying-'default-members'-for-a-project-role)\n   * of the project role or set at the project level:\n   *\n   * - Default actors: Users and groups that are assigned to the project role for all newly created projects. The default\n   *   actors can be removed at the project level later if desired.\n   * - Actors: Users and groups that are associated with a project role for a project, which may differ from the default\n   *   actors. This enables you to assign a user to different roles in different projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllProjectRoles<T = Models.ProjectRole[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Gets a list of all project roles, complete with project role details and default actors.\n   *\n   * ### About project roles\n   *\n   * [Project roles](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/) are a flexible\n   * way to to associate users and groups with projects. In Jira Cloud, the list of project roles is shared globally\n   * with all projects, but each project can have a different set of actors associated with it (unlike groups, which\n   * have the same membership throughout all Jira applications).\n   *\n   * Project roles are used in [permission schemes](#api-rest-api-3-permissionscheme-get), [email notification\n   * schemes](#api-rest-api-3-notificationscheme-get), [issue security\n   * levels](#api-rest-api-3-issuesecurityschemes-get), [comment visibility](#api-rest-api-3-comment-list-post), and\n   * workflow conditions.\n   *\n   * #### Members and actors\n   *\n   * In the Jira REST API, a member of a project role is called an _actor_. An _actor_ is a group or user associated\n   * with a project role.\n   *\n   * Actors may be set as [default\n   * members](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-roles/#Specifying-'default-members'-for-a-project-role)\n   * of the project role or set at the project level:\n   *\n   * - Default actors: Users and groups that are assigned to the project role for all newly created projects. The default\n   *   actors can be removed at the project level later if desired.\n   * - Actors: Users and groups that are associated with a project role for a project, which may differ from the default\n   *   actors. This enables you to assign a user to different roles in different projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllProjectRoles<T = Models.ProjectRole[]>(callback?: never): Promise<T>;\n  async getAllProjectRoles<T = Models.ProjectRole[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/role',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a new project role with no [default actors](#api-rest-api-3-resolution-get). You can use the [Add default\n   * actors to project role](#api-rest-api-3-role-id-actors-post) operation to add default actors to the project role\n   * after creating it.\n   *\n   * _Note that although a new project role is available to all projects upon creation, any default actors that are\n   * associated with the project role are not added to projects that existed prior to the role being created._<\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.CreateProjectRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a new project role with no [default actors](#api-rest-api-3-resolution-get). You can use the [Add default\n   * actors to project role](#api-rest-api-3-role-id-actors-post) operation to add default actors to the project role\n   * after creating it.\n   *\n   * _Note that although a new project role is available to all projects upon creation, any default actors that are\n   * associated with the project role are not added to projects that existed prior to the role being created._<\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.CreateProjectRole,\n    callback?: never,\n  ): Promise<T>;\n  async createProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.CreateProjectRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/role',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets the project role details and the default actors associated with the role. The list of default actors is sorted\n   * by display name.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoleById<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleById | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets the project role details and the default actors associated with the role. The list of default actors is sorted\n   * by display name.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getProjectRoleById<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleById | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectRoleById<T = Models.ProjectRole>(\n    parameters: Parameters.GetProjectRoleById | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/role/${id}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates either the project role's name or its description.\n   *\n   * You cannot update both the name and description at the same time using this operation. If you send a request with a\n   * name and a description only the name is updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async partialUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.PartialUpdateProjectRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates either the project role's name or its description.\n   *\n   * You cannot update both the name and description at the same time using this operation. If you send a request with a\n   * name and a description only the name is updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async partialUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.PartialUpdateProjectRole,\n    callback?: never,\n  ): Promise<T>;\n  async partialUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.PartialUpdateProjectRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/role/${parameters.id}`,\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the project role's name and description. You must include both a name and a description in the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async fullyUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.FullyUpdateProjectRole,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the project role's name and description. You must include both a name and a description in the request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async fullyUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.FullyUpdateProjectRole,\n    callback?: never,\n  ): Promise<T>;\n  async fullyUpdateProjectRole<T = Models.ProjectRole>(\n    parameters: Parameters.FullyUpdateProjectRole,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/role/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a project role. You must specify a replacement project role if you wish to delete a project role that is in\n   * use.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectRole<T = void>(\n    parameters: Parameters.DeleteProjectRole | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a project role. You must specify a replacement project role if you wish to delete a project role that is in\n   * use.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectRole<T = void>(parameters: Parameters.DeleteProjectRole | string, callback?: never): Promise<T>;\n  async deleteProjectRole<T = void>(\n    parameters: Parameters.DeleteProjectRole | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/role/${id}`,\n      method: 'DELETE',\n      params: {\n        swap: typeof parameters !== 'string' && parameters.swap,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Projects {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a project based on a project type template, as shown in the following table:\n   *\n   * | Project Type Key | Project Template Key                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n   * | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n   * | `business`       | `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-tracking`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n   * | `service_desk`   | `com.atlassian.servicedesk:simplified-it-service-management`, `com.atlassian.servicedesk:simplified-general-service-desk-it`, `com.atlassian.servicedesk:simplified-general-service-desk-business`, `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-analytics-service-desk`, `com.atlassian.servicedesk:simplified-marketing-service-desk`, `com.atlassian.servicedesk:simplified-design-service-desk`, `com.atlassian.servicedesk:simplified-sales-service-desk`, `com.atlassian.servicedesk:simplified-blank-project-business`, `com.atlassian.servicedesk:simplified-blank-project-it`, `com.atlassian.servicedesk:simplified-finance-service-desk`, `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-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` |\n   * | `software`       | `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`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n   *\n   * The project types are available according to the installed Jira features as follows:\n   *\n   * - Jira Core, the default, enables `business` projects.\n   * - Jira Service Management enables `service_desk` projects.\n   * - Jira Software enables `software` projects.\n   *\n   * To determine which features are installed, go to **Jira settings** > **Apps** > **Manage apps** and review the\n   * System Apps list. To add Jira Software or Jira Service Management into a JIRA instance, use **Jira settings** >\n   * **Apps** > **Finding new apps**. For more information, see [ Managing\n   * add-ons](https://confluence.atlassian.com/x/S31NLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProject<T = Models.ProjectIdentifiers>(\n    parameters: Parameters.CreateProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a project based on a project type template, as shown in the following table:\n   *\n   * | Project Type Key | Project Template Key                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |\n   * | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n   * | `business`       | `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-tracking`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n   * | `service_desk`   | `com.atlassian.servicedesk:simplified-it-service-management`, `com.atlassian.servicedesk:simplified-general-service-desk-it`, `com.atlassian.servicedesk:simplified-general-service-desk-business`, `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-analytics-service-desk`, `com.atlassian.servicedesk:simplified-marketing-service-desk`, `com.atlassian.servicedesk:simplified-design-service-desk`, `com.atlassian.servicedesk:simplified-sales-service-desk`, `com.atlassian.servicedesk:simplified-blank-project-business`, `com.atlassian.servicedesk:simplified-blank-project-it`, `com.atlassian.servicedesk:simplified-finance-service-desk`, `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-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` |\n   * | `software`       | `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`                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |\n   *\n   * The project types are available according to the installed Jira features as follows:\n   *\n   * - Jira Core, the default, enables `business` projects.\n   * - Jira Service Management enables `service_desk` projects.\n   * - Jira Software enables `software` projects.\n   *\n   * To determine which features are installed, go to **Jira settings** > **Apps** > **Manage apps** and review the\n   * System Apps list. To add Jira Software or Jira Service Management into a JIRA instance, use **Jira settings** >\n   * **Apps** > **Finding new apps**. For more information, see [ Managing\n   * add-ons](https://confluence.atlassian.com/x/S31NLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createProject<T = Models.ProjectIdentifiers>(\n    parameters: Parameters.CreateProject,\n    callback?: never,\n  ): Promise<T>;\n  async createProject<T = Models.ProjectIdentifiers>(\n    parameters: Parameters.CreateProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/project',\n      method: 'POST',\n      data: {\n        assigneeType: parameters.assigneeType,\n        avatarId: parameters.avatarId,\n        categoryId: parameters.categoryId,\n        description: parameters.description,\n        fieldConfigurationScheme: parameters.fieldConfigurationScheme,\n        issueSecurityScheme: parameters.issueSecurityScheme,\n        issueTypeScheme: parameters.issueTypeScheme,\n        issueTypeScreenScheme: parameters.issueTypeScreenScheme,\n        key: parameters.key,\n        leadAccountId: parameters.leadAccountId,\n        name: parameters.name,\n        notificationScheme: parameters.notificationScheme,\n        permissionScheme: parameters.permissionScheme,\n        projectTemplateKey: parameters.projectTemplateKey,\n        projectTypeKey: parameters.projectTypeKey,\n        url: parameters.url,\n        workflowScheme: parameters.workflowScheme,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of up to 20 projects recently viewed by the user that are still visible to the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Projects are returned only where the user has one of:\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getRecent<T = Models.Project[]>(\n    parameters: Parameters.GetRecent | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of up to 20 projects recently viewed by the user that are still visible to the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Projects are returned only where the user has one of:\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getRecent<T = Models.Project[]>(parameters?: Parameters.GetRecent, callback?: never): Promise<T>;\n  async getRecent<T = Models.Project[]>(parameters?: Parameters.GetRecent, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/project/recent',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n        properties: parameters?.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * projects visible to the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Projects are returned only where the user has one of:\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchProjects<T = Models.PageProject>(\n    parameters: Parameters.SearchProjects | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * projects visible to the user.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Projects are returned only where the user has one of:\n   *\n   * - _Browse Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async searchProjects<T = Models.PageProject>(parameters?: Parameters.SearchProjects, callback?: never): Promise<T>;\n  async searchProjects<T = Models.PageProject>(\n    parameters?: Parameters.SearchProjects,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/project/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        orderBy: parameters?.orderBy,\n        id: parameters?.id,\n        keys: parameters?.keys,\n        query: parameters?.query,\n        typeKey: parameters?.typeKey,\n        categoryId: parameters?.categoryId,\n        action: parameters?.action,\n        expand: parameters?.expand,\n        status: parameters?.status,\n        properties: parameters?.properties,\n        propertyQuery: parameters?.propertyQuery,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the [project details](https://confluence.atlassian.com/x/ahLpNw) for a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProject<T = Models.Project>(\n    parameters: Parameters.GetProject | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the [project details](https://confluence.atlassian.com/x/ahLpNw) for a project.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProject<T = Models.Project>(parameters: Parameters.GetProject | string, callback?: never): Promise<T>;\n  async getProject<T = Models.Project>(\n    parameters: Parameters.GetProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n        properties: typeof parameters !== 'string' && parameters.properties,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the [project details](https://confluence.atlassian.com/x/ahLpNw) of a project.\n   *\n   * All parameters are optional in the body of the request. Schemes will only be updated if they are included in the\n   * request, any omitted schemes will be left unchanged.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). is only needed when changing the\n   * schemes or project key. Otherwise you will only need _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateProject<T = Models.Project>(parameters: Parameters.UpdateProject, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates the [project details](https://confluence.atlassian.com/x/ahLpNw) of a project.\n   *\n   * All parameters are optional in the body of the request. Schemes will only be updated if they are included in the\n   * request, any omitted schemes will be left unchanged.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg). is only needed when changing the\n   * schemes or project key. Otherwise you will only need _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateProject<T = Models.Project>(parameters: Parameters.UpdateProject, callback?: never): Promise<T>;\n  async updateProject<T = Models.Project>(\n    parameters: Parameters.UpdateProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectIdOrKey}`,\n      method: 'PUT',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        assigneeType: parameters.assigneeType,\n        avatarId: parameters.avatarId,\n        categoryId: parameters.categoryId,\n        description: parameters.description,\n        issueSecurityScheme: parameters.issueSecurityScheme,\n        key: parameters.key,\n        leadAccountId: parameters.leadAccountId,\n        name: parameters.name,\n        notificationScheme: parameters.notificationScheme,\n        permissionScheme: parameters.permissionScheme,\n        projectTemplateKey: parameters.projectTemplateKey,\n        projectTypeKey: parameters.projectTypeKey,\n        releasedProjectKeys: parameters.releasedProjectKeys,\n        url: parameters.url,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a project.\n   *\n   * You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it.\n   * To restore a project, use the Jira UI.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProject<T = void>(parameters: Parameters.DeleteProject | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a project.\n   *\n   * You can't delete a project if it's archived. To delete an archived project, restore the project and then delete it.\n   * To restore a project, use the Jira UI.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProject<T = void>(parameters: Parameters.DeleteProject | string, callback?: never): Promise<T>;\n  async deleteProject<T = void>(\n    parameters: Parameters.DeleteProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}`,\n      method: 'DELETE',\n      params: {\n        enableUndo: typeof parameters !== 'string' && parameters.enableUndo,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Archives a project. You can't delete a project if it's archived. To delete an archived project, restore the project\n   * and then delete it. To restore a project, use the Jira UI.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async archiveProject<T = void>(parameters: Parameters.ArchiveProject | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Archives a project. You can't delete a project if it's archived. To delete an archived project, restore the project\n   * and then delete it. To restore a project, use the Jira UI.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async archiveProject<T = void>(parameters: Parameters.ArchiveProject | string, callback?: never): Promise<T>;\n  async archiveProject<T = void>(\n    parameters: Parameters.ArchiveProject | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}/archive`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a project asynchronously.\n   *\n   * This operation is:\n   *\n   * - Transactional, that is, if part of the delete fails the project is not deleted.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectAsynchronously<T = unknown>(\n    parameters: Parameters.DeleteProjectAsynchronously | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a project asynchronously.\n   *\n   * This operation is:\n   *\n   * - Transactional, that is, if part of the delete fails the project is not deleted.\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `location` link in the response to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteProjectAsynchronously<T = unknown>(\n    parameters: Parameters.DeleteProjectAsynchronously | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteProjectAsynchronously<T = unknown>(\n    parameters: Parameters.DeleteProjectAsynchronously | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}/delete`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Restores a project that has been archived or placed in the Jira recycle bin.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)for Company managed projects.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project for Team managed projects.\n   */\n  async restore<T = Models.Project>(parameters: Parameters.Restore | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Restores a project that has been archived or placed in the Jira recycle bin.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg)for Company managed projects.\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer projects_ [project\n   *   permission](https://confluence.atlassian.com/x/yodKLg) for the project for Team managed projects.\n   */\n  async restore<T = Models.Project>(parameters: Parameters.Restore | string, callback?: never): Promise<T>;\n  async restore<T = Models.Project>(\n    parameters: Parameters.Restore | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}/restore`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the valid statuses for a project. The statuses are grouped by issue type, as each project has a set of\n   * valid issue types and each issue type has a set of valid statuses.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getAllStatuses<T = Models.IssueTypeWithStatus[]>(\n    parameters: Parameters.GetAllStatuses | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the valid statuses for a project. The statuses are grouped by issue type, as each project has a set of\n   * valid issue types and each issue type has a set of valid statuses.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getAllStatuses<T = Models.IssueTypeWithStatus[]>(\n    parameters: Parameters.GetAllStatuses | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllStatuses<T = Models.IssueTypeWithStatus[]>(\n    parameters: Parameters.GetAllStatuses | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}/statuses`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Get the issue type hierarchy for a next-gen project.\n   *\n   * The issue type hierarchy for a project consists of:\n   *\n   * - _Epic_ at level 1 (optional).\n   * - One or more issue types at level 0 such as _Story_, _Task_, or _Bug_. Where the issue type _Epic_ is defined, these\n   *   issue types are used to break down the content of an epic.\n   * - _Subtask_ at level -1 (optional). This issue type enables level 0 issue types to be broken down into components.\n   *   Issues based on a level -1 issue type must have a parent issue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getHierarchy<T = Models.ProjectIssueTypeHierarchy>(\n    parameters: Parameters.GetHierarchy | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Get the issue type hierarchy for a next-gen project.\n   *\n   * The issue type hierarchy for a project consists of:\n   *\n   * - _Epic_ at level 1 (optional).\n   * - One or more issue types at level 0 such as _Story_, _Task_, or _Bug_. Where the issue type _Epic_ is defined, these\n   *   issue types are used to break down the content of an epic.\n   * - _Subtask_ at level -1 (optional). This issue type enables level 0 issue types to be broken down into components.\n   *   Issues based on a level -1 issue type must have a parent issue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getHierarchy<T = Models.ProjectIssueTypeHierarchy>(\n    parameters: Parameters.GetHierarchy | string,\n    callback?: never,\n  ): Promise<T>;\n  async getHierarchy<T = Models.ProjectIssueTypeHierarchy>(\n    parameters: Parameters.GetHierarchy | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectId = typeof parameters === 'string' ? parameters : parameters.projectId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectId}/hierarchy`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets a [notification scheme](https://confluence.atlassian.com/x/8YdKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getNotificationSchemeForProject<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationSchemeForProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets a [notification scheme](https://confluence.atlassian.com/x/8YdKLg) associated with the project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg).\n   */\n  async getNotificationSchemeForProject<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationSchemeForProject,\n    callback?: never,\n  ): Promise<T>;\n  async getNotificationSchemeForProject<T = Models.NotificationScheme>(\n    parameters: Parameters.GetNotificationSchemeForProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${parameters.projectKeyOrId}/notificationscheme`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectTemplates {\n  constructor(private client: Client) {}\n\n  /**\n   * @experimental\n   * Creates a project based on a custom template provided in the request.\n   *\n   * The request body should contain the project details and the capabilities that comprise the project:\n   *\n   * - `details` - represents the project details settings\n   * - `template` - represents a list of capabilities responsible for creating specific parts of a project\n   *\n   * A capability is defined as a unit of configuration for the project you want to create.\n   *\n   * This operation is:\n   *\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `Location` link in the response header to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * _**Note: This API is only supported for Jira Enterprise edition.**_\n   */\n  async createProjectWithCustomTemplate<T = unknown>(\n    parameters: Parameters.CreateProjectWithCustomTemplate,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * @experimental\n   * Creates a project based on a custom template provided in the request.\n   *\n   * The request body should contain the project details and the capabilities that comprise the project:\n   *\n   * - `details` - represents the project details settings\n   * - `template` - represents a list of capabilities responsible for creating specific parts of a project\n   *\n   * A capability is defined as a unit of configuration for the project you want to create.\n   *\n   * This operation is:\n   *\n   * - [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   *   `Location` link in the response header to determine the status of the task and use [Get\n   *   task](#api-rest-api-3-task-taskId-get) to obtain subsequent updates.\n   *\n   * _**Note: This API is only supported for Jira Enterprise edition.**_\n   */\n  async createProjectWithCustomTemplate<T = unknown>(\n    parameters: Parameters.CreateProjectWithCustomTemplate,\n    callback?: never,\n  ): Promise<T>;\n  async createProjectWithCustomTemplate<T = unknown>(\n    parameters: Parameters.CreateProjectWithCustomTemplate,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/project-template',\n      method: 'POST',\n      data: {\n        details: parameters.details,\n        template: parameters.template,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectTypes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all [project types](https://confluence.atlassian.com/x/Var1Nw), whether or not the instance has a valid\n   * license for each type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllProjectTypes<T = Models.ProjectType[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns all [project types](https://confluence.atlassian.com/x/Var1Nw), whether or not the instance has a valid\n   * license for each type.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getAllProjectTypes<T = Models.ProjectType[]>(callback?: never): Promise<T>;\n  async getAllProjectTypes<T = Models.ProjectType[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/project/type',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns all [project types](https://confluence.atlassian.com/x/Var1Nw) with a valid license. */\n  async getAllAccessibleProjectTypes<T = Models.ProjectType[]>(callback: Callback<T>): Promise<void>;\n  /** Returns all [project types](https://confluence.atlassian.com/x/Var1Nw) with a valid license. */\n  async getAllAccessibleProjectTypes<T = Models.ProjectType[]>(callback?: never): Promise<T>;\n  async getAllAccessibleProjectTypes<T = Models.ProjectType[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/project/type/accessible',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [project type](https://confluence.atlassian.com/x/Var1Nw).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetProjectTypeByKey | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [project type](https://confluence.atlassian.com/x/Var1Nw).\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetProjectTypeByKey | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetProjectTypeByKey | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectTypeKey = typeof parameters === 'string' ? parameters : parameters.projectTypeKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/type/${projectTypeKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [project type](https://confluence.atlassian.com/x/Var1Nw) if it is accessible to the user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAccessibleProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetAccessibleProjectTypeByKey | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [project type](https://confluence.atlassian.com/x/Var1Nw) if it is accessible to the user.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getAccessibleProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetAccessibleProjectTypeByKey | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAccessibleProjectTypeByKey<T = Models.ProjectType>(\n    parameters: Parameters.GetAccessibleProjectTypeByKey | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectTypeKey = typeof parameters === 'string' ? parameters : parameters.projectTypeKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/type/${projectTypeKey}/accessible`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ProjectVersions {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * versions in a project. See the [Get project versions](#api-rest-api-3-project-projectIdOrKey-versions-get) resource\n   * if you want to get a full list of versions without pagination.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectVersionsPaginated<T = Models.PageVersion>(\n    parameters: Parameters.GetProjectVersionsPaginated | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * versions in a project. See the [Get project versions](#api-rest-api-3-project-projectIdOrKey-versions-get) resource\n   * if you want to get a full list of versions without pagination.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectVersionsPaginated<T = Models.PageVersion>(\n    parameters: Parameters.GetProjectVersionsPaginated | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectVersionsPaginated<T = Models.PageVersion>(\n    parameters: Parameters.GetProjectVersionsPaginated | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}/version`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        orderBy: typeof parameters !== 'string' && parameters.orderBy,\n        query: typeof parameters !== 'string' && parameters.query,\n        status: typeof parameters !== 'string' && parameters.status,\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all versions in a project. The response is not paginated. Use [Get project versions\n   * paginated](#api-rest-api-3-project-projectIdOrKey-version-get) if you want to get the versions in a project with\n   * pagination.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectVersions<T = Models.Version[]>(\n    parameters: Parameters.GetProjectVersions | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all versions in a project. The response is not paginated. Use [Get project versions\n   * paginated](#api-rest-api-3-project-projectIdOrKey-version-get) if you want to get the versions in a project with\n   * pagination.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project.\n   */\n  async getProjectVersions<T = Models.Version[]>(\n    parameters: Parameters.GetProjectVersions | string,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectVersions<T = Models.Version[]>(\n    parameters: Parameters.GetProjectVersions | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const projectIdOrKey = typeof parameters === 'string' ? parameters : parameters.projectIdOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/project/${projectIdOrKey}/versions`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project the version is added to.\n   */\n  async createVersion<T = Models.Version>(parameters: Parameters.CreateVersion, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project the version is added to.\n   */\n  async createVersion<T = Models.Version>(parameters: Parameters.CreateVersion, callback?: never): Promise<T>;\n  async createVersion<T = Models.Version>(\n    parameters: Parameters.CreateVersion,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/version',\n      method: 'POST',\n      data: {\n        approvers: parameters.approvers,\n        archived: parameters.archived,\n        description: parameters.description,\n        driver: parameters.driver,\n        expand: parameters.expand,\n        id: parameters.id,\n        issuesStatusForFixVersion: parameters.issuesStatusForFixVersion,\n        moveUnfixedIssuesTo: parameters.moveUnfixedIssuesTo,\n        name: parameters.name,\n        operations: parameters.operations,\n        overdue: parameters.overdue,\n        projectId: parameters.projectId,\n        releaseDate: parameters.releaseDate,\n        released: parameters.released,\n        self: parameters.self,\n        startDate: parameters.startDate,\n        userReleaseDate: parameters.userReleaseDate,\n        userStartDate: parameters.userStartDate,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version.\n   */\n  async getVersion<T = Models.Version>(\n    parameters: Parameters.GetVersion | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version.\n   */\n  async getVersion<T = Models.Version>(parameters: Parameters.GetVersion | string, callback?: never): Promise<T>;\n  async getVersion<T = Models.Version>(\n    parameters: Parameters.GetVersion | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${id}`,\n      method: 'GET',\n      params: {\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async updateVersion<T = Models.Version>(parameters: Parameters.UpdateVersion, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async updateVersion<T = Models.Version>(parameters: Parameters.UpdateVersion, callback?: never): Promise<T>;\n  async updateVersion<T = Models.Version>(\n    parameters: Parameters.UpdateVersion,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        approvers: parameters.approvers,\n        driver: parameters.driver,\n        expand: parameters.expand,\n        description: parameters.description,\n        name: parameters.name,\n        archived: parameters.archived,\n        released: parameters.released,\n        startDate: parameters.startDate,\n        releaseDate: parameters.releaseDate,\n        projectId: parameters.projectId,\n        moveUnfixedIssuesTo: parameters.moveUnfixedIssuesTo,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Merges two project versions. The merge is completed by deleting the version specified in `id` and replacing any\n   * occurrences of its ID in `fixVersion` with the version ID specified in `moveIssuesTo`.\n   *\n   * Consider using [ Delete and replace version](#api-rest-api-3-version-id-removeAndSwap-post) instead. This resource\n   * supports swapping version values in `fixVersion`, `affectedVersion`, and custom fields.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async mergeVersions<T = void>(parameters: Parameters.MergeVersions, callback: Callback<T>): Promise<void>;\n  /**\n   * Merges two project versions. The merge is completed by deleting the version specified in `id` and replacing any\n   * occurrences of its ID in `fixVersion` with the version ID specified in `moveIssuesTo`.\n   *\n   * Consider using [ Delete and replace version](#api-rest-api-3-version-id-removeAndSwap-post) instead. This resource\n   * supports swapping version values in `fixVersion`, `affectedVersion`, and custom fields.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async mergeVersions<T = void>(parameters: Parameters.MergeVersions, callback?: never): Promise<T>;\n  async mergeVersions<T = void>(parameters: Parameters.MergeVersions, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${parameters.id}/mergeto/${parameters.moveIssuesTo}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Modifies the version's sequence within the project, which affects the display order of the versions in Jira.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async moveVersion<T = Models.Version>(parameters: Parameters.MoveVersion, callback: Callback<T>): Promise<void>;\n  /**\n   * Modifies the version's sequence within the project, which affects the display order of the versions in Jira.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async moveVersion<T = Models.Version>(parameters: Parameters.MoveVersion, callback?: never): Promise<T>;\n  async moveVersion<T = Models.Version>(parameters: Parameters.MoveVersion, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${parameters.id}/move`,\n      method: 'POST',\n      data: {\n        after: parameters.after,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the following counts for a version:\n   *\n   * - Number of issues where the `fixVersion` is set to the version.\n   * - Number of issues where the `affectedVersion` is set to the version.\n   * - Number of issues where a version custom field is set to the version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async getVersionRelatedIssues<T = Models.VersionIssueCounts>(\n    parameters: Parameters.GetVersionRelatedIssues | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the following counts for a version:\n   *\n   * - Number of issues where the `fixVersion` is set to the version.\n   * - Number of issues where the `affectedVersion` is set to the version.\n   * - Number of issues where a version custom field is set to the version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async getVersionRelatedIssues<T = Models.VersionIssueCounts>(\n    parameters: Parameters.GetVersionRelatedIssues | string,\n    callback?: never,\n  ): Promise<T>;\n  async getVersionRelatedIssues<T = Models.VersionIssueCounts>(\n    parameters: Parameters.GetVersionRelatedIssues | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${id}/relatedIssueCounts`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns related work items for the given version id.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version.\n   */\n  async getRelatedWork<T = Models.VersionRelatedWork[]>(\n    parameters: Parameters.GetRelatedWork,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns related work items for the given version id.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project containing the version.\n   */\n  async getRelatedWork<T = Models.VersionRelatedWork[]>(\n    parameters: Parameters.GetRelatedWork,\n    callback?: never,\n  ): Promise<T>;\n  async getRelatedWork<T = Models.VersionRelatedWork[]>(\n    parameters: Parameters.GetRelatedWork,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${parameters.id}/relatedwork`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a related work for the given version. You can only create a generic link type of related works via this\n   * API. relatedWorkId will be auto-generated UUID, that does not need to be provided.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async createRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.CreateRelatedWork,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a related work for the given version. You can only create a generic link type of related works via this\n   * API. relatedWorkId will be auto-generated UUID, that does not need to be provided.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async createRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.CreateRelatedWork,\n    callback?: never,\n  ): Promise<T>;\n  async createRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.CreateRelatedWork,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${parameters.id}/relatedwork`,\n      method: 'POST',\n      data: {\n        category: parameters.category,\n        issueId: parameters.issueId,\n        relatedWorkId: parameters.relatedWorkId,\n        title: parameters.title,\n        url: parameters.url,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the given related work. You can only update generic link related works via Rest APIs. Any archived version\n   * related works can't be edited.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async updateRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.UpdateRelatedWork,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the given related work. You can only update generic link related works via Rest APIs. Any archived version\n   * related works can't be edited.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async updateRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.UpdateRelatedWork,\n    callback?: never,\n  ): Promise<T>;\n  async updateRelatedWork<T = Models.VersionRelatedWork>(\n    parameters: Parameters.UpdateRelatedWork,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${parameters.id}/relatedwork`,\n      method: 'PUT',\n      data: {\n        category: parameters.category,\n        issueId: parameters.issueId,\n        relatedWorkId: parameters.relatedWorkId,\n        title: parameters.title,\n        url: parameters.url,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a project version.\n   *\n   * Alternative versions can be provided to update issues that use the deleted version in `fixVersion`,\n   * `affectedVersion`, or any version picker custom fields. If alternatives are not provided, occurrences of\n   * `fixVersion`, `affectedVersion`, and any version picker custom field, that contain the deleted version, are\n   * cleared. Any replacement version must be in the same project as the version being deleted and cannot be the version\n   * being deleted.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async deleteAndReplaceVersion<T = void>(\n    parameters: Parameters.DeleteAndReplaceVersion,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a project version.\n   *\n   * Alternative versions can be provided to update issues that use the deleted version in `fixVersion`,\n   * `affectedVersion`, or any version picker custom fields. If alternatives are not provided, occurrences of\n   * `fixVersion`, `affectedVersion`, and any version picker custom field, that contain the deleted version, are\n   * cleared. Any replacement version must be in the same project as the version being deleted and cannot be the version\n   * being deleted.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Administer Projects_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg) for the project that contains the version.\n   */\n  async deleteAndReplaceVersion<T = void>(parameters: Parameters.DeleteAndReplaceVersion, callback?: never): Promise<T>;\n  async deleteAndReplaceVersion<T = void>(\n    parameters: Parameters.DeleteAndReplaceVersion,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${parameters.id}/removeAndSwap`,\n      method: 'POST',\n      data: {\n        customFieldReplacementList: parameters.customFieldReplacementList,\n        moveAffectedIssuesTo: parameters.moveAffectedIssuesTo,\n        moveFixIssuesTo: parameters.moveFixIssuesTo,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns counts of the issues and unresolved issues for the project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async getVersionUnresolvedIssues<T = Models.VersionUnresolvedIssuesCount>(\n    parameters: Parameters.GetVersionUnresolvedIssues | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns counts of the issues and unresolved issues for the project version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * projects_ project permission for the project that contains the version.\n   */\n  async getVersionUnresolvedIssues<T = Models.VersionUnresolvedIssuesCount>(\n    parameters: Parameters.GetVersionUnresolvedIssues | string,\n    callback?: never,\n  ): Promise<T>;\n  async getVersionUnresolvedIssues<T = Models.VersionUnresolvedIssuesCount>(\n    parameters: Parameters.GetVersionUnresolvedIssues | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${id}/unresolvedIssueCount`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the given related work for the given version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async deleteRelatedWork<T = void>(parameters: Parameters.DeleteRelatedWork, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes the given related work for the given version.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Resolve issues:_ and _Edit issues_ [Managing project\n   * permissions](https://confluence.atlassian.com/adminjiraserver/managing-project-permissions-938847145.html) for the\n   * project that contains the version.\n   */\n  async deleteRelatedWork<T = void>(parameters: Parameters.DeleteRelatedWork, callback?: never): Promise<T>;\n  async deleteRelatedWork<T = void>(\n    parameters: Parameters.DeleteRelatedWork,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/version/${parameters.versionId}/relatedwork/${parameters.relatedWorkId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Screens {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of the\n   * screens a field is used in.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreensForField<T = Models.PageScreenWithTab>(\n    parameters: Parameters.GetScreensForField | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of the\n   * screens a field is used in.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreensForField<T = Models.PageScreenWithTab>(\n    parameters: Parameters.GetScreensForField | string,\n    callback?: never,\n  ): Promise<T>;\n  async getScreensForField<T = Models.PageScreenWithTab>(\n    parameters: Parameters.GetScreensForField | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/field/${fieldId}/screens`,\n      method: 'GET',\n      params: {\n        startAt: typeof parameters !== 'string' && parameters.startAt,\n        maxResults: typeof parameters !== 'string' && parameters.maxResults,\n        expand: typeof parameters !== 'string' && parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * screens or those specified by one or more screen IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreens<T = Models.PageScreen>(\n    parameters: Parameters.GetScreens | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * screens or those specified by one or more screen IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreens<T = Models.PageScreen>(parameters?: Parameters.GetScreens, callback?: never): Promise<T>;\n  async getScreens<T = Models.PageScreen>(\n    parameters?: Parameters.GetScreens,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/screens',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        queryString: parameters?.queryString,\n        scope: parameters?.scope,\n        orderBy: parameters?.orderBy,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a screen with a default field tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createScreen<T = Models.Screen>(parameters: Parameters.CreateScreen, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a screen with a default field tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createScreen<T = Models.Screen>(parameters: Parameters.CreateScreen, callback?: never): Promise<T>;\n  async createScreen<T = Models.Screen>(\n    parameters: Parameters.CreateScreen,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/screens',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a field to the default tab of the default screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addFieldToDefaultScreen<T = unknown>(\n    parameters: Parameters.AddFieldToDefaultScreen | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds a field to the default tab of the default screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addFieldToDefaultScreen<T = unknown>(\n    parameters: Parameters.AddFieldToDefaultScreen | string,\n    callback?: never,\n  ): Promise<T>;\n  async addFieldToDefaultScreen<T = unknown>(\n    parameters: Parameters.AddFieldToDefaultScreen | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const fieldId = typeof parameters === 'string' ? parameters : parameters.fieldId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/addToDefault/${fieldId}`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a screen. Only screens used in classic projects can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateScreen<T = Models.Screen>(parameters: Parameters.UpdateScreen, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a screen. Only screens used in classic projects can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateScreen<T = Models.Screen>(parameters: Parameters.UpdateScreen, callback?: never): Promise<T>;\n  async updateScreen<T = Models.Screen>(\n    parameters: Parameters.UpdateScreen,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${parameters.screenId}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a screen. A screen cannot be deleted if it is used in a screen scheme, workflow, or workflow draft.\n   *\n   * Only screens used in classic projects can be deleted.\n   */\n  async deleteScreen<T = void>(parameters: Parameters.DeleteScreen | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a screen. A screen cannot be deleted if it is used in a screen scheme, workflow, or workflow draft.\n   *\n   * Only screens used in classic projects can be deleted.\n   */\n  async deleteScreen<T = void>(parameters: Parameters.DeleteScreen | string, callback?: never): Promise<T>;\n  async deleteScreen<T = void>(\n    parameters: Parameters.DeleteScreen | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const screenId = typeof parameters === 'string' ? parameters : parameters.screenId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${screenId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the fields that can be added to a tab on a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAvailableScreenFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAvailableScreenFields | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the fields that can be added to a tab on a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAvailableScreenFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAvailableScreenFields | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAvailableScreenFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAvailableScreenFields | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const screenId = typeof parameters === 'string' ? parameters : parameters.screenId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${screenId}/availableFields`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ScreenSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of screen\n   * schemes.\n   *\n   * Only screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreenSchemes<T = Models.PageScreenScheme>(\n    parameters: Parameters.GetScreenSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of screen\n   * schemes.\n   *\n   * Only screen schemes used in classic projects are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getScreenSchemes<T = Models.PageScreenScheme>(\n    parameters?: Parameters.GetScreenSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getScreenSchemes<T = Models.PageScreenScheme>(\n    parameters?: Parameters.GetScreenSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/screenscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        id: parameters?.id,\n        expand: parameters?.expand,\n        queryString: parameters?.queryString,\n        orderBy: parameters?.orderBy,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createScreenScheme<T = Models.ScreenSchemeId>(\n    parameters: Parameters.CreateScreenScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a screen scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createScreenScheme<T = Models.ScreenSchemeId>(\n    parameters: Parameters.CreateScreenScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async createScreenScheme<T = Models.ScreenSchemeId>(\n    parameters: Parameters.CreateScreenScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const name = typeof parameters === 'string' ? parameters : parameters.name;\n\n    const config: RequestConfig = {\n      url: '/rest/api/3/screenscheme',\n      method: 'POST',\n      data: {\n        name,\n        description: typeof parameters !== 'string' && parameters.description,\n        screens: typeof parameters !== 'string' && parameters.screens,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a screen scheme. Only screen schemes used in classic projects can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateScreenScheme<T = void>(parameters: Parameters.UpdateScreenScheme, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates a screen scheme. Only screen schemes used in classic projects can be updated.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateScreenScheme<T = void>(parameters: Parameters.UpdateScreenScheme, callback?: never): Promise<T>;\n  async updateScreenScheme<T = void>(\n    parameters: Parameters.UpdateScreenScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/screenscheme/${parameters.screenSchemeId}`,\n      method: 'PUT',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n        screens: parameters.screens,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a screen scheme. A screen scheme cannot be deleted if it is used in an issue type screen scheme.\n   *\n   * Only screens schemes used in classic projects can be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteScreenScheme<T = void>(\n    parameters: Parameters.DeleteScreenScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a screen scheme. A screen scheme cannot be deleted if it is used in an issue type screen scheme.\n   *\n   * Only screens schemes used in classic projects can be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteScreenScheme<T = void>(parameters: Parameters.DeleteScreenScheme | string, callback?: never): Promise<T>;\n  async deleteScreenScheme<T = void>(\n    parameters: Parameters.DeleteScreenScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const screenSchemeId = typeof parameters === 'string' ? parameters : parameters.screenSchemeId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/screenscheme/${screenSchemeId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ScreenTabFields {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns all fields for a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is\n   *   specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen\n   *   Scheme.\n   */\n  async getAllScreenTabFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAllScreenTabFields,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all fields for a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is\n   *   specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen\n   *   Scheme.\n   */\n  async getAllScreenTabFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAllScreenTabFields,\n    callback?: never,\n  ): Promise<T>;\n  async getAllScreenTabFields<T = Models.ScreenableField[]>(\n    parameters: Parameters.GetAllScreenTabFields,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${parameters.screenId}/tabs/${parameters.tabId}/fields`,\n      method: 'GET',\n      params: {\n        projectKey: parameters.projectKey,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a field to a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addScreenTabField<T = Models.ScreenableField>(\n    parameters: Parameters.AddScreenTabField,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds a field to a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addScreenTabField<T = Models.ScreenableField>(\n    parameters: Parameters.AddScreenTabField,\n    callback?: never,\n  ): Promise<T>;\n  async addScreenTabField<T = Models.ScreenableField>(\n    parameters: Parameters.AddScreenTabField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${parameters.screenId}/tabs/${parameters.tabId}/fields`,\n      method: 'POST',\n      data: {\n        fieldId: parameters.fieldId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a field from a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeScreenTabField<T = void>(\n    parameters: Parameters.RemoveScreenTabField,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a field from a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeScreenTabField<T = void>(parameters: Parameters.RemoveScreenTabField, callback?: never): Promise<T>;\n  async removeScreenTabField<T = void>(\n    parameters: Parameters.RemoveScreenTabField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${parameters.screenId}/tabs/${parameters.tabId}/fields/${parameters.id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves a screen tab field.\n   *\n   * If `after` and `position` are provided in the request, `position` is ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveScreenTabField<T = void>(parameters: Parameters.MoveScreenTabField, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves a screen tab field.\n   *\n   * If `after` and `position` are provided in the request, `position` is ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveScreenTabField<T = void>(parameters: Parameters.MoveScreenTabField, callback?: never): Promise<T>;\n  async moveScreenTabField<T = void>(\n    parameters: Parameters.MoveScreenTabField,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${parameters.screenId}/tabs/${parameters.tabId}/fields/${parameters.id}/move`,\n      method: 'POST',\n      data: {\n        after: parameters.after,\n        position: parameters.position,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\nimport { paramSerializer } from '../paramSerializer';\n\nexport class ScreenTabs {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the list of tabs for a bulk of screens.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getBulkScreenTabs<T = unknown>(\n    parameters: Parameters.GetBulkScreenTabs | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the list of tabs for a bulk of screens.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getBulkScreenTabs<T = unknown>(parameters?: Parameters.GetBulkScreenTabs, callback?: never): Promise<T>;\n  async getBulkScreenTabs<T = unknown>(\n    parameters?: Parameters.GetBulkScreenTabs,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/screens/tabs',\n      method: 'GET',\n      params: {\n        screenId: paramSerializer('screenId', parameters?.screenId),\n        tabId: parameters?.tabId,\n        startAt: parameters?.startAt,\n        maxResult: parameters?.maxResult,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the list of tabs for a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is\n   *   specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen\n   *   Scheme.\n   */\n  async getAllScreenTabs<T = Models.ScreenableTab[]>(\n    parameters: Parameters.GetAllScreenTabs | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the list of tabs for a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - _Administer projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) when the project key is\n   *   specified, providing that the screen is associated with the project through a Screen Scheme and Issue Type Screen\n   *   Scheme.\n   */\n  async getAllScreenTabs<T = Models.ScreenableTab[]>(\n    parameters: Parameters.GetAllScreenTabs | string,\n    callback?: never,\n  ): Promise<T>;\n  async getAllScreenTabs<T = Models.ScreenableTab[]>(\n    parameters: Parameters.GetAllScreenTabs | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const screenId = typeof parameters === 'string' ? parameters : parameters.screenId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${screenId}/tabs`,\n      method: 'GET',\n      params: {\n        projectKey: typeof parameters !== 'string' && parameters.projectKey,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a tab for a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addScreenTab<T = Models.ScreenableTab>(\n    parameters: Parameters.AddScreenTab,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a tab for a screen.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addScreenTab<T = Models.ScreenableTab>(parameters: Parameters.AddScreenTab, callback?: never): Promise<T>;\n  async addScreenTab<T = Models.ScreenableTab>(\n    parameters: Parameters.AddScreenTab,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${parameters.screenId}/tabs`,\n      method: 'POST',\n      data: {\n        id: parameters.id,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates the name of a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async renameScreenTab<T = Models.ScreenableTab>(\n    parameters: Parameters.RenameScreenTab,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates the name of a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async renameScreenTab<T = Models.ScreenableTab>(parameters: Parameters.RenameScreenTab, callback?: never): Promise<T>;\n  async renameScreenTab<T = Models.ScreenableTab>(\n    parameters: Parameters.RenameScreenTab,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${parameters.screenId}/tabs/${parameters.tabId}`,\n      method: 'PUT',\n      data: {\n        id: parameters.id,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteScreenTab<T = void>(parameters: Parameters.DeleteScreenTab, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteScreenTab<T = void>(parameters: Parameters.DeleteScreenTab, callback?: never): Promise<T>;\n  async deleteScreenTab<T = void>(parameters: Parameters.DeleteScreenTab, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${parameters.screenId}/tabs/${parameters.tabId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Moves a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveScreenTab<T = void>(parameters: Parameters.MoveScreenTab, callback: Callback<T>): Promise<void>;\n  /**\n   * Moves a screen tab.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async moveScreenTab<T = void>(parameters: Parameters.MoveScreenTab, callback?: never): Promise<T>;\n  async moveScreenTab<T = void>(parameters: Parameters.MoveScreenTab, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/screens/${parameters.screenId}/tabs/${parameters.tabId}/move/${parameters.pos}`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ServerInfo {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns information about the Jira instance.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getServerInfo<T = Models.ServerInformation>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns information about the Jira instance.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async getServerInfo<T = Models.ServerInformation>(callback?: never): Promise<T>;\n  async getServerInfo<T = Models.ServerInformation>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/serverInfo',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ServiceRegistry {\n  constructor(private client: Client) {}\n\n  /**\n   * Retrieve the attributes of given service registries.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can make this request and the servicesIds belong to the tenant you are requesting\n   */\n  async services<T = Models.ServiceRegistry[]>(parameters: Parameters.Services, callback: Callback<T>): Promise<void>;\n  /**\n   * Retrieve the attributes of given service registries.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can make this request and the servicesIds belong to the tenant you are requesting\n   */\n  async services<T = Models.ServiceRegistry[]>(parameters: Parameters.Services, callback?: never): Promise<T>;\n  async services<T = Models.ServiceRegistry[]>(\n    parameters: Parameters.Services,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/atlassian-connect/1/service-registry',\n      method: 'GET',\n      params: {\n        serviceIds: parameters.serviceIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Status {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of the statuses specified by one or more status IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async getStatusesById<T = Models.JiraStatus[]>(\n    parameters: Parameters.GetStatusesById | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of the statuses specified by one or more status IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async getStatusesById<T = Models.JiraStatus[]>(\n    parameters: Parameters.GetStatusesById | string,\n    callback?: never,\n  ): Promise<T>;\n  async getStatusesById<T = Models.JiraStatus[]>(\n    parameters: Parameters.GetStatusesById | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: '/rest/api/3/statuses',\n      method: 'GET',\n      params: {\n        id,\n        expand: typeof parameters !== 'string' ? parameters.expand : undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates statuses for a global or project scope.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async createStatuses<T = Models.JiraStatus[]>(\n    parameters: Parameters.CreateStatuses,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates statuses for a global or project scope.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async createStatuses<T = Models.JiraStatus[]>(parameters: Parameters.CreateStatuses, callback?: never): Promise<T>;\n  async createStatuses<T = Models.JiraStatus[]>(\n    parameters: Parameters.CreateStatuses,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/statuses',\n      method: 'POST',\n      data: {\n        scope: parameters.scope,\n        statuses: parameters.statuses,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates statuses by ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateStatuses<T = void>(parameters: Parameters.UpdateStatuses, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates statuses by ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async updateStatuses<T = void>(parameters: Parameters.UpdateStatuses, callback?: never): Promise<T>;\n  async updateStatuses<T = void>(parameters: Parameters.UpdateStatuses, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/statuses',\n      method: 'PUT',\n      data: {\n        statuses: parameters.statuses,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes statuses by ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async deleteStatusesById<T = void>(\n    parameters: Parameters.DeleteStatusesById | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes statuses by ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async deleteStatusesById<T = void>(parameters: Parameters.DeleteStatusesById | string, callback?: never): Promise<T>;\n  async deleteStatusesById<T = void>(\n    parameters: Parameters.DeleteStatusesById | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: '/rest/api/3/statuses',\n      method: 'DELETE',\n      params: {\n        id,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * statuses that match a search on name or project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async search<T = Models.PageOfStatuses>(\n    parameters: Parameters.Search | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * statuses that match a search on name or project.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer projects_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   * - _Administer Jira_ [project permission.](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async search<T = Models.PageOfStatuses>(parameters?: Parameters.Search, callback?: never): Promise<T>;\n  async search<T = Models.PageOfStatuses>(parameters?: Parameters.Search, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/statuses/search',\n      method: 'GET',\n      params: {\n        expand: parameters?.expand,\n        projectId: parameters?.projectId,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        searchString: parameters?.searchString,\n        statusCategory: parameters?.statusCategory,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of issue types in a project using a given status. */\n  async getProjectIssueTypeUsagesForStatus<T = Models.StatusProjectIssueTypeUsage>(\n    parameters: Parameters.GetProjectIssueTypeUsagesForStatus,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of issue types in a project using a given status. */\n  async getProjectIssueTypeUsagesForStatus<T = Models.StatusProjectIssueTypeUsage>(\n    parameters: Parameters.GetProjectIssueTypeUsagesForStatus,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectIssueTypeUsagesForStatus<T = Models.StatusProjectIssueTypeUsage>(\n    parameters: Parameters.GetProjectIssueTypeUsagesForStatus,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/statuses/${parameters.statusId}/project/${parameters.projectId}/issueTypeUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of projects using a given status. */\n  async getProjectUsagesForStatus<T = Models.StatusProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForStatus,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of projects using a given status. */\n  async getProjectUsagesForStatus<T = Models.StatusProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForStatus,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectUsagesForStatus<T = Models.StatusProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForStatus,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/statuses/${parameters.statusId}/projectUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of workflows using a given status. */\n  async getWorkflowUsagesForStatus<T = Models.StatusWorkflowUsage>(\n    parameters: Parameters.GetWorkflowUsagesForStatus,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of workflows using a given status. */\n  async getWorkflowUsagesForStatus<T = Models.StatusWorkflowUsage>(\n    parameters: Parameters.GetWorkflowUsagesForStatus,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowUsagesForStatus<T = Models.StatusWorkflowUsage>(\n    parameters: Parameters.GetWorkflowUsagesForStatus,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/statuses/${parameters.statusId}/workflowUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Tasks {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the status of a [long-running asynchronous\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations).\n   *\n   * When a task has finished, this operation returns the JSON blob applicable to the task. See the documentation of the\n   * operation that created the task for details. Task details are not permanently retained. As of September 2019,\n   * details are retained for 14 days although this period may change without notice.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - `read:jira-work`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - Creator of the task.\n   */\n  async getTask<T = Models.TaskProgressObject>(\n    parameters: Parameters.GetTask | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the status of a [long-running asynchronous\n   * task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations).\n   *\n   * When a task has finished, this operation returns the JSON blob applicable to the task. See the documentation of the\n   * operation that created the task for details. Task details are not permanently retained. As of September 2019,\n   * details are retained for 14 days although this period may change without notice.\n   *\n   * **Deprecation notice:** The required OAuth 2.0 scopes will be updated on June 15, 2024.\n   *\n   * - `read:jira-work`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - Creator of the task.\n   */\n  async getTask<T = Models.TaskProgressObject>(parameters: Parameters.GetTask | string, callback?: never): Promise<T>;\n  async getTask<T = Models.TaskProgressObject>(\n    parameters: Parameters.GetTask | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const taskId = typeof parameters === 'string' ? parameters : parameters.taskId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/task/${taskId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Cancels a task.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - Creator of the task.\n   */\n  async cancelTask<T = unknown>(parameters: Parameters.CancelTask | string, callback: Callback<T>): Promise<void>;\n  /**\n   * Cancels a task.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** either\n   * of:\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   * - Creator of the task.\n   */\n  async cancelTask<T = unknown>(parameters: Parameters.CancelTask | string, callback?: never): Promise<T>;\n  async cancelTask<T = unknown>(parameters: Parameters.CancelTask | string, callback?: Callback<T>): Promise<void | T> {\n    const taskId = typeof parameters === 'string' ? parameters : parameters.taskId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/task/${taskId}/cancel`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class TeamsInPlan {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * plan-only and Atlassian teams in a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getTeams<T = Models.PageWithCursorGetTeamResponseForPage>(\n    parameters: Parameters.GetTeams,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * plan-only and Atlassian teams in a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getTeams<T = Models.PageWithCursorGetTeamResponseForPage>(\n    parameters: Parameters.GetTeams,\n    callback?: never,\n  ): Promise<T>;\n  async getTeams<T = Models.PageWithCursorGetTeamResponseForPage>(\n    parameters: Parameters.GetTeams,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/team`,\n      method: 'GET',\n      params: {\n        cursor: parameters.cursor,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds an existing Atlassian team to a plan and configures their plannning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addAtlassianTeam<T = void>(parameters: Parameters.AddAtlassianTeam, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds an existing Atlassian team to a plan and configures their plannning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async addAtlassianTeam<T = void>(parameters: Parameters.AddAtlassianTeam, callback?: never): Promise<T>;\n  async addAtlassianTeam<T = void>(parameters: Parameters.AddAtlassianTeam, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/team/atlassian`,\n      method: 'POST',\n      data: {\n        capacity: parameters.capacity,\n        id: parameters.id,\n        issueSourceId: parameters.issueSourceId,\n        planningStyle: parameters.planningStyle,\n        sprintLength: parameters.sprintLength,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns planning settings for an Atlassian team in a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAtlassianTeam<T = Models.GetAtlassianTeamResponse>(\n    parameters: Parameters.GetAtlassianTeam,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns planning settings for an Atlassian team in a plan.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAtlassianTeam<T = Models.GetAtlassianTeamResponse>(\n    parameters: Parameters.GetAtlassianTeam,\n    callback?: never,\n  ): Promise<T>;\n  async getAtlassianTeam<T = Models.GetAtlassianTeamResponse>(\n    parameters: Parameters.GetAtlassianTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/team/atlassian/${parameters.atlassianTeamId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates any of the following planning settings of an Atlassian team in a plan using [JSON\n   * Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * - PlanningStyle\n   * - IssueSourceId\n   * - SprintLength\n   * - Capacity\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get Atlassian team in plan\"\n   * endpoint to find out the order of array elements._\n   */\n  async updateAtlassianTeam<T = void>(parameters: Parameters.UpdateAtlassianTeam, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates any of the following planning settings of an Atlassian team in a plan using [JSON\n   * Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * - PlanningStyle\n   * - IssueSourceId\n   * - SprintLength\n   * - Capacity\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get Atlassian team in plan\"\n   * endpoint to find out the order of array elements._\n   */\n  async updateAtlassianTeam<T = void>(parameters: Parameters.UpdateAtlassianTeam, callback?: never): Promise<T>;\n  async updateAtlassianTeam<T = void>(\n    parameters: Parameters.UpdateAtlassianTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/team/atlassian/${parameters.atlassianTeamId}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes an Atlassian team from a plan and deletes their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeAtlassianTeam<T = void>(parameters: Parameters.RemoveAtlassianTeam, callback: Callback<T>): Promise<void>;\n  /**\n   * Removes an Atlassian team from a plan and deletes their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async removeAtlassianTeam<T = void>(parameters: Parameters.RemoveAtlassianTeam, callback?: never): Promise<T>;\n  async removeAtlassianTeam<T = void>(\n    parameters: Parameters.RemoveAtlassianTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/team/atlassian/${parameters.atlassianTeamId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a plan-only team and configures their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPlanOnlyTeam<T = unknown>(\n    parameters: Parameters.CreatePlanOnlyTeam,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a plan-only team and configures their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createPlanOnlyTeam<T = unknown>(parameters: Parameters.CreatePlanOnlyTeam, callback?: never): Promise<T>;\n  async createPlanOnlyTeam<T = unknown>(\n    parameters: Parameters.CreatePlanOnlyTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/team/planonly`,\n      method: 'POST',\n      data: {\n        capacity: parameters.capacity,\n        issueSourceId: parameters.issueSourceId,\n        memberAccountIds: parameters.memberAccountIds,\n        name: parameters.name,\n        planningStyle: parameters.planningStyle,\n        sprintLength: parameters.sprintLength,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns planning settings for a plan-only team.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlanOnlyTeam<T = Models.GetPlanOnlyTeamResponse>(\n    parameters: Parameters.GetPlanOnlyTeam,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns planning settings for a plan-only team.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getPlanOnlyTeam<T = Models.GetPlanOnlyTeamResponse>(\n    parameters: Parameters.GetPlanOnlyTeam,\n    callback?: never,\n  ): Promise<T>;\n  async getPlanOnlyTeam<T = Models.GetPlanOnlyTeamResponse>(\n    parameters: Parameters.GetPlanOnlyTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/team/planonly/${parameters.planOnlyTeamId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates any of the following planning settings of a plan-only team using [JSON\n   * Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * - Name\n   * - PlanningStyle\n   * - IssueSourceId\n   * - SprintLength\n   * - Capacity\n   * - MemberAccountIds\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get plan-only team\"\n   * endpoint to find out the order of array elements._\n   */\n  async updatePlanOnlyTeam<T = void>(parameters: Parameters.UpdatePlanOnlyTeam, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates any of the following planning settings of a plan-only team using [JSON\n   * Patch](https://datatracker.ietf.org/doc/html/rfc6902).\n   *\n   * - Name\n   * - PlanningStyle\n   * - IssueSourceId\n   * - SprintLength\n   * - Capacity\n   * - MemberAccountIds\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * _Note that \"add\" operations do not respect array indexes in target locations. Call the \"Get plan-only team\"\n   * endpoint to find out the order of array elements._\n   */\n  async updatePlanOnlyTeam<T = void>(parameters: Parameters.UpdatePlanOnlyTeam, callback?: never): Promise<T>;\n  async updatePlanOnlyTeam<T = void>(\n    parameters: Parameters.UpdatePlanOnlyTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/team/planonly/${parameters.planOnlyTeamId}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a plan-only team and their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePlanOnlyTeam<T = void>(parameters: Parameters.DeletePlanOnlyTeam, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a plan-only team and their planning settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deletePlanOnlyTeam<T = void>(parameters: Parameters.DeletePlanOnlyTeam, callback?: never): Promise<T>;\n  async deletePlanOnlyTeam<T = void>(\n    parameters: Parameters.DeletePlanOnlyTeam,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/plans/plan/${parameters.planId}/team/planonly/${parameters.planOnlyTeamId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class TimeTracking {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the time tracking provider that is currently selected. Note that if time tracking is disabled, then a\n   * successful but empty response is returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSelectedTimeTrackingImplementation<T = void>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the time tracking provider that is currently selected. Note that if time tracking is disabled, then a\n   * successful but empty response is returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSelectedTimeTrackingImplementation<T = void>(callback?: never): Promise<T>;\n  async getSelectedTimeTrackingImplementation<T = void>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/configuration/timetracking',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Selects a time tracking provider.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async selectTimeTrackingImplementation<T = void>(\n    parameters: Parameters.SelectTimeTrackingImplementation | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Selects a time tracking provider.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async selectTimeTrackingImplementation<T = void>(\n    parameters?: Parameters.SelectTimeTrackingImplementation,\n    callback?: never,\n  ): Promise<T>;\n  async selectTimeTrackingImplementation<T = void>(\n    parameters?: Parameters.SelectTimeTrackingImplementation,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/configuration/timetracking',\n      method: 'PUT',\n      data: {\n        key: parameters?.key,\n        name: parameters?.name,\n        url: parameters?.url,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns all time tracking providers. By default, Jira only has one time tracking provider: _JIRA provided time\n   * tracking_. However, you can install other time tracking providers via apps from the Atlassian Marketplace. For more\n   * information on time tracking providers, see the documentation for the [ Time Tracking\n   * Provider](https://developer.atlassian.com/cloud/jira/platform/modules/time-tracking-provider/) module.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAvailableTimeTrackingImplementations<T = Models.TimeTrackingProvider[]>(\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns all time tracking providers. By default, Jira only has one time tracking provider: _JIRA provided time\n   * tracking_. However, you can install other time tracking providers via apps from the Atlassian Marketplace. For more\n   * information on time tracking providers, see the documentation for the [ Time Tracking\n   * Provider](https://developer.atlassian.com/cloud/jira/platform/modules/time-tracking-provider/) module.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAvailableTimeTrackingImplementations<T = Models.TimeTrackingProvider[]>(callback?: never): Promise<T>;\n  async getAvailableTimeTrackingImplementations<T = Models.TimeTrackingProvider[]>(\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/configuration/timetracking/list',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the time tracking settings. This includes settings such as the time format, default time unit, and others.\n   * For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns the time tracking settings. This includes settings such as the time format, default time unit, and others.\n   * For more information, see [Configuring time tracking](https://confluence.atlassian.com/x/qoXKM).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(callback?: never): Promise<T>;\n  async getSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/configuration/timetracking/options',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the time tracking settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(\n    parameters: Parameters.SetSharedTimeTrackingConfiguration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the time tracking settings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(\n    parameters: Parameters.SetSharedTimeTrackingConfiguration,\n    callback?: never,\n  ): Promise<T>;\n  async setSharedTimeTrackingConfiguration<T = Models.TimeTrackingConfiguration>(\n    parameters: Parameters.SetSharedTimeTrackingConfiguration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/configuration/timetracking/options',\n      method: 'PUT',\n      data: {\n        defaultUnit: parameters.defaultUnit,\n        timeFormat: parameters.timeFormat,\n        workingDaysPerWeek: parameters.workingDaysPerWeek,\n        workingHoursPerDay: parameters.workingHoursPerDay,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class UIModificationsApps {\n  constructor(private client: Client) {}\n\n  /**\n   * Gets UI modifications. UI modifications can only be retrieved by Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getUiModifications<T = Models.PageUiModificationDetails>(\n    parameters: Parameters.GetUiModifications | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets UI modifications. UI modifications can only be retrieved by Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   *\n   * The new `read:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async getUiModifications<T = Models.PageUiModificationDetails>(\n    parameters?: Parameters.GetUiModifications,\n    callback?: never,\n  ): Promise<T>;\n  async getUiModifications<T = Models.PageUiModificationDetails>(\n    parameters?: Parameters.GetUiModifications,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/uiModifications',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a UI modification. UI modification can only be created by Forge apps.\n   *\n   * Each app can define up to 3000 UI modifications. Each UI modification can define up to 1000 contexts. The same\n   * context can be assigned to maximum 100 UI modifications.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _None_ if the UI modification is created without contexts.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the\n   *   UI modification is created with contexts.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async createUiModification<T = Models.UiModificationIdentifiers>(\n    parameters: Parameters.CreateUiModification,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a UI modification. UI modification can only be created by Forge apps.\n   *\n   * Each app can define up to 3000 UI modifications. Each UI modification can define up to 1000 contexts. The same\n   * context can be assigned to maximum 100 UI modifications.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _None_ if the UI modification is created without contexts.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the\n   *   UI modification is created with contexts.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async createUiModification<T = Models.UiModificationIdentifiers>(\n    parameters: Parameters.CreateUiModification,\n    callback?: never,\n  ): Promise<T>;\n  async createUiModification<T = Models.UiModificationIdentifiers>(\n    parameters: Parameters.CreateUiModification,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/uiModifications',\n      method: 'POST',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        data: parameters.data,\n        contexts: parameters.contexts,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a UI modification. UI modification can only be updated by Forge apps.\n   *\n   * Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI\n   * modifications.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _None_ if the UI modification is created without contexts.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the\n   *   UI modification is created with contexts.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateUiModification<T = void>(\n    parameters: Parameters.UpdateUiModification,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a UI modification. UI modification can only be updated by Forge apps.\n   *\n   * Each UI modification can define up to 1000 contexts. The same context can be assigned to maximum 100 UI\n   * modifications.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _None_ if the UI modification is created without contexts.\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for one or more projects, if the\n   *   UI modification is created with contexts.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async updateUiModification<T = void>(parameters: Parameters.UpdateUiModification, callback?: never): Promise<T>;\n  async updateUiModification<T = void>(\n    parameters: Parameters.UpdateUiModification,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/uiModifications/${parameters.uiModificationId}`,\n      method: 'PUT',\n      data: {\n        contexts: parameters.contexts,\n        data: parameters.data,\n        description: parameters.description,\n        name: parameters.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a UI modification. All the contexts that belong to the UI modification are deleted too. UI modification can\n   * only be deleted by Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async deleteUiModification<T = void>(\n    parameters: Parameters.DeleteUiModification | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a UI modification. All the contexts that belong to the UI modification are deleted too. UI modification can\n   * only be deleted by Forge apps.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   *\n   * The new `write:app-data:jira` OAuth scope is 100% optional now, and not using it won't break your app. However, we\n   * recommend adding it to your app's scope list because we will eventually make it mandatory.\n   */\n  async deleteUiModification<T = void>(\n    parameters: Parameters.DeleteUiModification | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteUiModification<T = void>(\n    parameters: Parameters.DeleteUiModification | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const uiModificationId = typeof parameters === 'string' ? parameters : parameters.uiModificationId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/uiModifications/${uiModificationId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class UserNavProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the value of a user nav preference.\n   *\n   * Note: This operation fetches the property key value directly from RbacClient.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user.\n   * - Access to Jira, to get a property from the calling user's record.\n   */\n  async getUserNavProperty<T = Models.UserNavProperty>(\n    parameters: Parameters.GetUserNavProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a user nav preference.\n   *\n   * Note: This operation fetches the property key value directly from RbacClient.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user.\n   * - Access to Jira, to get a property from the calling user's record.\n   */\n  async getUserNavProperty<T = Models.UserNavProperty>(\n    parameters: Parameters.GetUserNavProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getUserNavProperty<T = Models.UserNavProperty>(\n    parameters: Parameters.GetUserNavProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/user/nav4-opt-property/${parameters.propertyKey}`,\n      method: 'GET',\n      params: {\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a Nav4 preference. Use this resource to store Nav4 preference data against a user in the Identity\n   * service.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user.\n   * - Access to Jira, to set a property on the calling user's record.\n   */\n  async setUserNavProperty<T = unknown>(\n    parameters: Parameters.SetUserNavProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the value of a Nav4 preference. Use this resource to store Nav4 preference data against a user in the Identity\n   * service.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user.\n   * - Access to Jira, to set a property on the calling user's record.\n   */\n  async setUserNavProperty<T = unknown>(parameters: Parameters.SetUserNavProperty, callback?: never): Promise<T>;\n  async setUserNavProperty<T = unknown>(\n    parameters: Parameters.SetUserNavProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/user/nav4-opt-property/${parameters.propertyKey}`,\n      method: 'PUT',\n      params: {\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class UserProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the keys of all properties for a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to access the property keys on\n   *   any user.\n   * - Access to Jira, to access the calling user's property keys.\n   */\n  async getUserPropertyKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetUserPropertyKeys | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all properties for a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to access the property keys on\n   *   any user.\n   * - Access to Jira, to access the calling user's property keys.\n   */\n  async getUserPropertyKeys<T = Models.PropertyKeys>(\n    parameters?: Parameters.GetUserPropertyKeys,\n    callback?: never,\n  ): Promise<T>;\n  async getUserPropertyKeys<T = Models.PropertyKeys>(\n    parameters?: Parameters.GetUserPropertyKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/properties',\n      method: 'GET',\n      params: {\n        accountId: parameters?.accountId,\n        userKey: parameters?.userKey,\n        username: parameters?.username,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of a user's property. If no property key is provided [Get user property\n   * keys](#api-rest-api-3-user-properties-get) is called.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user.\n   * - Access to Jira, to get a property from the calling user's record.\n   */\n  async getUserProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetUserProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a user's property. If no property key is provided [Get user property\n   * keys](#api-rest-api-3-user-properties-get) is called.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get a property from any user.\n   * - Access to Jira, to get a property from the calling user's record.\n   */\n  async getUserProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetUserProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getUserProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetUserProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/user/properties/${parameters.propertyKey}`,\n      method: 'GET',\n      params: {\n        accountId: parameters.accountId,\n        userKey: parameters.userKey,\n        username: parameters.username,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a user's property. Use this resource to store custom data against a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user.\n   * - Access to Jira, to set a property on the calling user's record.\n   */\n  async setUserProperty<T = unknown>(parameters: Parameters.SetUserProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the value of a user's property. Use this resource to store custom data against a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set a property on any user.\n   * - Access to Jira, to set a property on the calling user's record.\n   */\n  async setUserProperty<T = unknown>(parameters: Parameters.SetUserProperty, callback?: never): Promise<T>;\n  async setUserProperty<T = unknown>(\n    parameters: Parameters.SetUserProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/user/properties/${parameters.propertyKey}`,\n      method: 'PUT',\n      params: {\n        accountId: parameters.accountId,\n      },\n      data: parameters.propertyValue,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a property from a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to delete a property from any\n   *   user.\n   * - Access to Jira, to delete a property from the calling user's record.\n   */\n  async deleteUserProperty<T = void>(parameters: Parameters.DeleteUserProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a property from a user.\n   *\n   * Note: This operation does not access the [user properties](https://confluence.atlassian.com/x/8YxjL) created and\n   * maintained in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to delete a property from any\n   *   user.\n   * - Access to Jira, to delete a property from the calling user's record.\n   */\n  async deleteUserProperty<T = void>(parameters: Parameters.DeleteUserProperty, callback?: never): Promise<T>;\n  async deleteUserProperty<T = void>(\n    parameters: Parameters.DeleteUserProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/user/properties/${parameters.propertyKey}`,\n      method: 'DELETE',\n      params: {\n        accountId: parameters.accountId,\n        userKey: parameters.userKey,\n        username: parameters.username,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport { paramSerializer } from '../paramSerializer';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Users {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a user.\n   *\n   * Privacy controls are applied to the response based on the user's preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUser<T = Models.User>(parameters: Parameters.GetUser, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a user.\n   *\n   * Privacy controls are applied to the response based on the user's preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUser<T = Models.User>(parameters: Parameters.GetUser, callback?: never): Promise<T>;\n  async getUser<T = Models.User>(parameters: Parameters.GetUser, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user',\n      method: 'GET',\n      params: {\n        accountId: parameters.accountId,\n        username: parameters.username,\n        key: parameters.key,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a user. This resource is retained for legacy compatibility. As soon as a more suitable alternative is\n   * available this resource will be deprecated.\n   *\n   * If the user exists and has access to Jira, the operation returns a 201 status. If the user exists but does not have\n   * access to Jira, the operation returns a 400 status.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createUser<T = Models.User>(parameters: Parameters.CreateUser, callback: Callback<T>): Promise<void>;\n  /**\n   * Creates a user. This resource is retained for legacy compatibility. As soon as a more suitable alternative is\n   * available this resource will be deprecated.\n   *\n   * If the user exists and has access to Jira, the operation returns a 201 status. If the user exists but does not have\n   * access to Jira, the operation returns a 400 status.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createUser<T = Models.User>(parameters: Parameters.CreateUser, callback?: never): Promise<T>;\n  async createUser<T = Models.User>(parameters: Parameters.CreateUser, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user',\n      method: 'POST',\n      data: {\n        emailAddress: parameters.emailAddress,\n        products: parameters.products\n          ? parameters.products\n          : ['jira-core', 'jira-servicedesk', 'jira-product-discovery', 'jira-software'],\n        self: parameters.self,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a user. If the operation completes successfully then the user is removed from Jira's user base. This\n   * operation does not delete the user's Atlassian account.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Site\n   * administration (that is, membership of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeUser<T = void>(parameters: Parameters.RemoveUser, callback: Callback<T>): Promise<void>;\n  /**\n   * Deletes a user. If the operation completes successfully then the user is removed from Jira's user base. This\n   * operation does not delete the user's Atlassian account.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Site\n   * administration (that is, membership of the _site-admin_ [group](https://confluence.atlassian.com/x/24xjL)).\n   */\n  async removeUser<T = void>(parameters: Parameters.RemoveUser, callback?: never): Promise<T>;\n  async removeUser<T = void>(parameters: Parameters.RemoveUser, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user',\n      method: 'DELETE',\n      params: {\n        accountId: parameters.accountId,\n        username: parameters.username,\n        key: parameters.key,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of the\n   * users specified by one or more account IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async bulkGetUsers<T = Models.PageUser>(parameters: Parameters.BulkGetUsers, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of the\n   * users specified by one or more account IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async bulkGetUsers<T = Models.PageUser>(parameters: Parameters.BulkGetUsers, callback?: never): Promise<T>;\n  async bulkGetUsers<T = Models.PageUser>(\n    parameters: Parameters.BulkGetUsers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/bulk',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        accountId: paramSerializer('accountId', parameters.accountId),\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the account IDs for the users specified in the `key` or `username` parameters. Note that multiple `key` or\n   * `username` parameters can be specified.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async bulkGetUsersMigration<T = Models.UserMigration[]>(\n    parameters: Parameters.BulkGetUsersMigration,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the account IDs for the users specified in the `key` or `username` parameters. Note that multiple `key` or\n   * `username` parameters can be specified.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async bulkGetUsersMigration<T = Models.UserMigration[]>(\n    parameters: Parameters.BulkGetUsersMigration,\n    callback?: never,\n  ): Promise<T>;\n  async bulkGetUsersMigration<T = Models.UserMigration[]>(\n    parameters: Parameters.BulkGetUsersMigration,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/bulk/migration',\n      method: 'GET',\n      params: {\n        key: paramSerializer('key', parameters.key),\n        maxResults: parameters.maxResults,\n        startAt: parameters.startAt,\n        username: paramSerializer('username', parameters.username),\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the default [issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If `accountId`\n   * is not passed in the request, the calling user's details are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLgl), to get the column details for\n   *   any user.\n   * - Permission to access Jira, to get the calling user's column details.\n   */\n  async getUserDefaultColumns<T = Models.ColumnItem[]>(\n    parameters: Parameters.GetUserDefaultColumns | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the default [issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If `accountId`\n   * is not passed in the request, the calling user's details are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLgl), to get the column details for\n   *   any user.\n   * - Permission to access Jira, to get the calling user's column details.\n   */\n  async getUserDefaultColumns<T = Models.ColumnItem[]>(\n    parameters?: Parameters.GetUserDefaultColumns,\n    callback?: never,\n  ): Promise<T>;\n  async getUserDefaultColumns<T = Models.ColumnItem[]>(\n    parameters?: Parameters.GetUserDefaultColumns,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/columns',\n      method: 'GET',\n      params: {\n        accountId: parameters?.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If an account ID\n   * is not passed, the calling user's default columns are set. If no column details are sent, then all default columns\n   * are removed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user.\n   * - Permission to access Jira, to set the calling user's columns.\n   */\n  async setUserColumns<T = string>(parameters: Parameters.SetUserColumns, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user. If an account ID\n   * is not passed, the calling user's default columns are set. If no column details are sent, then all default columns\n   * are removed.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user.\n   * - Permission to access Jira, to set the calling user's columns.\n   */\n  async setUserColumns<T = string>(parameters: Parameters.SetUserColumns, callback?: never): Promise<T>;\n  async setUserColumns<T = string>(parameters: Parameters.SetUserColumns, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/columns',\n      method: 'PUT',\n      params: {\n        accountId: parameters.accountId,\n      },\n      data: parameters.columns,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Resets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user to the system\n   * default. If `accountId` is not passed, the calling user's default columns are reset.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user.\n   * - Permission to access Jira, to set the calling user's columns.\n   */\n  async resetUserColumns<T = void>(parameters: Parameters.ResetUserColumns, callback: Callback<T>): Promise<void>;\n  /**\n   * Resets the default [ issue table columns](https://confluence.atlassian.com/x/XYdKLg) for the user to the system\n   * default. If `accountId` is not passed, the calling user's default columns are reset.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to set the columns on any user.\n   * - Permission to access Jira, to set the calling user's columns.\n   */\n  async resetUserColumns<T = void>(parameters: Parameters.ResetUserColumns, callback?: never): Promise<T>;\n  async resetUserColumns<T = void>(parameters: Parameters.ResetUserColumns, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/columns',\n      method: 'DELETE',\n      params: {\n        accountId: parameters.accountId,\n        username: parameters.username,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a user's email address regardless of the user's profile visibility settings. For Connect apps, this API is\n   * only available to apps approved by Atlassian, according to these\n   * [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603).\n   * For Forge apps, this API only supports access via asApp() requests.\n   */\n  async getUserEmail<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmail | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a user's email address regardless of the user's profile visibility settings. For Connect apps, this API is\n   * only available to apps approved by Atlassian, according to these\n   * [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603).\n   * For Forge apps, this API only supports access via asApp() requests.\n   */\n  async getUserEmail<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmail | string,\n    callback?: never,\n  ): Promise<T>;\n  async getUserEmail<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmail | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const accountId = typeof parameters === 'string' ? parameters : parameters.accountId;\n\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/email',\n      method: 'GET',\n      params: {\n        accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a user's email address regardless of the user's profile visibility settings. For Connect apps, this API is\n   * only available to apps approved by Atlassian, according to these\n   * [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603).\n   * For Forge apps, this API only supports access via asApp() requests.\n   */\n  async getUserEmailBulk<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmailBulk | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a user's email address regardless of the user's profile visibility settings. For Connect apps, this API is\n   * only available to apps approved by Atlassian, according to these\n   * [guidelines](https://community.developer.atlassian.com/t/guidelines-for-requesting-access-to-email-address/27603).\n   * For Forge apps, this API only supports access via asApp() requests.\n   */\n  async getUserEmailBulk<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmailBulk | string,\n    callback?: never,\n  ): Promise<T>;\n  async getUserEmailBulk<T = Models.UnrestrictedUserEmail>(\n    parameters: Parameters.GetUserEmailBulk | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const accountId = typeof parameters === 'string' ? parameters : parameters.accountId;\n\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/email/bulk',\n      method: 'GET',\n      params: {\n        accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the groups to which a user belongs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUserGroups<T = Models.GroupName[]>(\n    parameters: Parameters.GetUserGroups,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the groups to which a user belongs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getUserGroups<T = Models.GroupName[]>(parameters: Parameters.GetUserGroups, callback?: never): Promise<T>;\n  async getUserGroups<T = Models.GroupName[]>(\n    parameters: Parameters.GetUserGroups,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/groups',\n      method: 'GET',\n      params: {\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of all users, including active users, inactive users and previously deleted users that have an\n   * Atlassian account.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllUsersDefault<T = Models.User[]>(\n    parameters: Parameters.GetAllUsersDefault | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of all users, including active users, inactive users and previously deleted users that have an\n   * Atlassian account.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllUsersDefault<T = Models.User[]>(parameters?: Parameters.GetAllUsersDefault, callback?: never): Promise<T>;\n  async getAllUsersDefault<T = Models.User[]>(\n    parameters?: Parameters.GetAllUsersDefault,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/users',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of all users, including active users, inactive users and previously deleted users that have an\n   * Atlassian account.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllUsers<T = Models.User[]>(\n    parameters: Parameters.GetAllUsers | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of all users, including active users, inactive users and previously deleted users that have an\n   * Atlassian account.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllUsers<T = Models.User[]>(parameters?: Parameters.GetAllUsers, callback?: never): Promise<T>;\n  async getAllUsers<T = Models.User[]>(parameters?: Parameters.GetAllUsers, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/users/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport { paramSerializer } from '../paramSerializer';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class UserSearch {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of users who can be assigned issues in one or more projects. The list may be restricted to users\n   * whose attributes match a string.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that can be assigned issues in the projects. This means the operation\n   * usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned issues in the\n   * projects, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async findBulkAssignableUsers<T = Models.User[]>(\n    parameters: Parameters.FindBulkAssignableUsers,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users who can be assigned issues in one or more projects. The list may be restricted to users\n   * whose attributes match a string.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that can be assigned issues in the projects. This means the operation\n   * usually returns fewer users than specified in `maxResults`. To get all the users who can be assigned issues in the\n   * projects, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** None.\n   */\n  async findBulkAssignableUsers<T = Models.User[]>(\n    parameters: Parameters.FindBulkAssignableUsers,\n    callback?: never,\n  ): Promise<T>;\n  async findBulkAssignableUsers<T = Models.User[]>(\n    parameters: Parameters.FindBulkAssignableUsers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/assignable/multiProjectSearch',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        username: parameters.username,\n        accountId: parameters.accountId,\n        projectKeys: parameters.projectKeys,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of users that can be assigned to an issue. Use this operation to find the list of users who can be\n   * assigned to:\n   *\n   * - A new issue, by providing the `projectKeyOrId`.\n   * - An updated issue, by providing the `issueKey` or `issueId`.\n   * - To an issue during a transition (workflow action), by providing the `issueKey` or `issueId` and the transition id\n   *   in `actionDescriptorId`. You can obtain the IDs of an issue's valid transitions using the `transitions` option in\n   *   the `expand` parameter of [ Get issue](#api-rest-api-3-issue-issueIdOrKey-get).\n   *\n   * In all these cases, you can pass an account ID to determine if a user can be assigned to an issue. The user is\n   * returned in the response if they can be assigned to the issue or issue transition.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that can be assigned the issue. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who can be assigned the issue, use [Get\n   * all users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Assign issues_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async findAssignableUsers<T = Models.User[]>(\n    parameters: Parameters.FindAssignableUsers | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users that can be assigned to an issue. Use this operation to find the list of users who can be\n   * assigned to:\n   *\n   * - A new issue, by providing the `projectKeyOrId`.\n   * - An updated issue, by providing the `issueKey` or `issueId`.\n   * - To an issue during a transition (workflow action), by providing the `issueKey` or `issueId` and the transition id\n   *   in `actionDescriptorId`. You can obtain the IDs of an issue's valid transitions using the `transitions` option in\n   *   the `expand` parameter of [ Get issue](#api-rest-api-3-issue-issueIdOrKey-get).\n   *\n   * In all these cases, you can pass an account ID to determine if a user can be assigned to an issue. The user is\n   * returned in the response if they can be assigned to the issue or issue transition.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that can be assigned the issue. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who can be assigned the issue, use [Get\n   * all users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg) or _Assign issues_ [project\n   * permission](https://confluence.atlassian.com/x/yodKLg)\n   */\n  async findAssignableUsers<T = Models.User[]>(\n    parameters?: Parameters.FindAssignableUsers,\n    callback?: never,\n  ): Promise<T>;\n  async findAssignableUsers<T = Models.User[]>(\n    parameters?: Parameters.FindAssignableUsers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/assignable/search',\n      method: 'GET',\n      params: {\n        query: parameters?.query,\n        sessionId: parameters?.sessionId,\n        username: parameters?.username,\n        accountId: parameters?.accountId,\n        project: parameters?.project,\n        issueKey: parameters?.issueKey,\n        issueId: parameters?.issueId,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        actionDescriptorId: parameters?.actionDescriptorId,\n        recommend: parameters?.recommend,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of users who fulfill these criteria:\n   *\n   * - Their user attributes match a search string.\n   * - They have a set of permissions for a project or issue.\n   *\n   * If no search string is provided, a list of all users with the permissions is returned.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the search string and have permission for the project or\n   * issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users\n   * who match the search string and have permission for the project or issue, use [Get all\n   * users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get users for any project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project, to get users\n   *   for that project.\n   */\n  async findUsersWithAllPermissions<T = Models.User[]>(\n    parameters: Parameters.FindUsersWithAllPermissions,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users who fulfill these criteria:\n   *\n   * - Their user attributes match a search string.\n   * - They have a set of permissions for a project or issue.\n   *\n   * If no search string is provided, a list of all users with the permissions is returned.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the search string and have permission for the project or\n   * issue. This means the operation usually returns fewer users than specified in `maxResults`. To get all the users\n   * who match the search string and have permission for the project or issue, use [Get all\n   * users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg), to get users for any project.\n   * - _Administer Projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for a project, to get users\n   *   for that project.\n   */\n  async findUsersWithAllPermissions<T = Models.User[]>(\n    parameters: Parameters.FindUsersWithAllPermissions,\n    callback?: never,\n  ): Promise<T>;\n  async findUsersWithAllPermissions<T = Models.User[]>(\n    parameters: Parameters.FindUsersWithAllPermissions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/permission/search',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        username: parameters.username,\n        accountId: parameters.accountId,\n        permissions: parameters.permissions,\n        issueKey: parameters.issueKey,\n        projectKey: parameters.projectKey,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of users whose attributes match the query term. The returned object includes the `html` field where\n   * the matched query term is highlighted with the HTML strong tag. A list of account IDs can be provided to exclude\n   * users from the results.\n   *\n   * This operation takes the users in the range defined by `maxResults`, up to the thousandth user, and then returns\n   * only the users from that range that match the query term. This means the operation usually returns fewer users than\n   * specified in `maxResults`. To get all the users who match the query term, use [Get all\n   * users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by\n   * users without the required permission return search results for an exact name match only.\n   */\n  async findUsersForPicker<T = Models.FoundUsers>(\n    parameters: Parameters.FindUsersForPicker,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users whose attributes match the query term. The returned object includes the `html` field where\n   * the matched query term is highlighted with the HTML strong tag. A list of account IDs can be provided to exclude\n   * users from the results.\n   *\n   * This operation takes the users in the range defined by `maxResults`, up to the thousandth user, and then returns\n   * only the users from that range that match the query term. This means the operation usually returns fewer users than\n   * specified in `maxResults`. To get all the users who match the query term, use [Get all\n   * users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by\n   * users without the required permission return search results for an exact name match only.\n   */\n  async findUsersForPicker<T = Models.FoundUsers>(\n    parameters: Parameters.FindUsersForPicker,\n    callback?: never,\n  ): Promise<T>;\n  async findUsersForPicker<T = Models.FoundUsers>(\n    parameters: Parameters.FindUsersForPicker,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/picker',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        maxResults: parameters.maxResults,\n        showAvatar: parameters.showAvatar,\n        excludeAccountIds: paramSerializer('excludeAccountIds', parameters.excludeAccountIds),\n        avatarSize: parameters.avatarSize,\n        excludeConnectUsers: parameters.excludeConnectUsers,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of active users that match the search string and property.\n   *\n   * This operation first applies a filter to match the search string and property, and then takes the filtered users in\n   * the range defined by `startAt` and `maxResults`, up to the thousandth user. To get all the users who match the\n   * search string and property, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your\n   * code.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls or calls by users\n   * without the required permission return empty search results.\n   */\n  async findUsers<T = Models.User[]>(\n    parameters: Parameters.FindUsers | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of active users that match the search string and property.\n   *\n   * This operation first applies a filter to match the search string and property, and then takes the filtered users in\n   * the range defined by `startAt` and `maxResults`, up to the thousandth user. To get all the users who match the\n   * search string and property, use [Get all users](#api-rest-api-3-users-search-get) and filter the records in your\n   * code.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls or calls by users\n   * without the required permission return empty search results.\n   */\n  async findUsers<T = Models.User[]>(parameters?: Parameters.FindUsers, callback?: never): Promise<T>;\n  async findUsers<T = Models.User[]>(parameters?: Parameters.FindUsers, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/search',\n      method: 'GET',\n      params: {\n        query: parameters?.query,\n        username: parameters?.username,\n        accountId: parameters?.accountId,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        property: parameters?.property,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Finds users with a structured query and returns a\n   * [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of user details.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the structured query. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get\n   * all users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * The query statements are:\n   *\n   * - `is assignee of PROJ` Returns the users that are assignees of at least one issue in project _PROJ_.\n   * - `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues _PROJ-1_ or\n   *   _PROJ-2_.\n   * - `[propertyKey].entity.property.path is \"property value\"` Returns users with the entity property value. For example,\n   *   if user property `location` is set to value `{\"office\": {\"country\": \"AU\", \"city\": \"Sydney\"}}`, then it's possible\n   *   to use `[location].office.city is \"Sydney\"` to match the user.\n   *\n   * The list of issues can be extended as needed, as in _(PROJ-1, PROJ-2, ... PROJ-n)_. Statements can be combined\n   * using the `AND` and `OR` operators to form more complex queries. For example:\n   *\n   * `is assignee of PROJ AND [propertyKey].entity.property.path is \"property value\"`\n   */\n  async findUsersByQuery<T = Models.PageUser>(\n    parameters: Parameters.FindUsersByQuery,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Finds users with a structured query and returns a\n   * [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of user details.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the structured query. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get\n   * all users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * The query statements are:\n   *\n   * - `is assignee of PROJ` Returns the users that are assignees of at least one issue in project _PROJ_.\n   * - `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues _PROJ-1_ or\n   *   _PROJ-2_.\n   * - `[propertyKey].entity.property.path is \"property value\"` Returns users with the entity property value. For example,\n   *   if user property `location` is set to value `{\"office\": {\"country\": \"AU\", \"city\": \"Sydney\"}}`, then it's possible\n   *   to use `[location].office.city is \"Sydney\"` to match the user.\n   *\n   * The list of issues can be extended as needed, as in _(PROJ-1, PROJ-2, ... PROJ-n)_. Statements can be combined\n   * using the `AND` and `OR` operators to form more complex queries. For example:\n   *\n   * `is assignee of PROJ AND [propertyKey].entity.property.path is \"property value\"`\n   */\n  async findUsersByQuery<T = Models.PageUser>(parameters: Parameters.FindUsersByQuery, callback?: never): Promise<T>;\n  async findUsersByQuery<T = Models.PageUser>(\n    parameters: Parameters.FindUsersByQuery,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/search/query',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Finds users with a structured query and returns a\n   * [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of user keys.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the structured query. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get\n   * all users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * The query statements are:\n   *\n   * - `is assignee of PROJ` Returns the users that are assignees of at least one issue in project _PROJ_.\n   * - `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues _PROJ-1_ or\n   *   _PROJ-2_.\n   * - `[propertyKey].entity.property.path is \"property value\"` Returns users with the entity property value. For example,\n   *   if user property `location` is set to value `{\"office\": {\"country\": \"AU\", \"city\": \"Sydney\"}}`, then it's possible\n   *   to use `[location].office.city is \"Sydney\"` to match the user.\n   *\n   * The list of issues can be extended as needed, as in _(PROJ-1, PROJ-2, ... PROJ-n)_. Statements can be combined\n   * using the `AND` and `OR` operators to form more complex queries. For example:\n   *\n   * `is assignee of PROJ AND [propertyKey].entity.property.path is \"property value\"`\n   */\n  async findUserKeysByQuery<T = Models.PageUserKey>(\n    parameters: Parameters.FindUserKeysByQuery,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Finds users with a structured query and returns a\n   * [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of user keys.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the structured query. This means the operation usually\n   * returns fewer users than specified in `maxResults`. To get all the users who match the structured query, use [Get\n   * all users](#api-rest-api-3-users-search-get) and filter the records in your code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   *\n   * The query statements are:\n   *\n   * - `is assignee of PROJ` Returns the users that are assignees of at least one issue in project _PROJ_.\n   * - `is assignee of (PROJ-1, PROJ-2)` Returns users that are assignees on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is reporter of (PROJ-1, PROJ-2)` Returns users that are reporters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is watcher of (PROJ-1, PROJ-2)` Returns users that are watchers on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is voter of (PROJ-1, PROJ-2)` Returns users that are voters on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is commenter of (PROJ-1, PROJ-2)` Returns users that have posted a comment on the issues _PROJ-1_ or _PROJ-2_.\n   * - `is transitioner of (PROJ-1, PROJ-2)` Returns users that have performed a transition on issues _PROJ-1_ or\n   *   _PROJ-2_.\n   * - `[propertyKey].entity.property.path is \"property value\"` Returns users with the entity property value. For example,\n   *   if user property `location` is set to value `{\"office\": {\"country\": \"AU\", \"city\": \"Sydney\"}}`, then it's possible\n   *   to use `[location].office.city is \"Sydney\"` to match the user.\n   *\n   * The list of issues can be extended as needed, as in _(PROJ-1, PROJ-2, ... PROJ-n)_. Statements can be combined\n   * using the `AND` and `OR` operators to form more complex queries. For example:\n   *\n   * `is assignee of PROJ AND [propertyKey].entity.property.path is \"property value\"`\n   */\n  async findUserKeysByQuery<T = Models.PageUserKey>(\n    parameters: Parameters.FindUserKeysByQuery,\n    callback?: never,\n  ): Promise<T>;\n  async findUserKeysByQuery<T = Models.PageUserKey>(\n    parameters: Parameters.FindUserKeysByQuery,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/search/query/key',\n      method: 'GET',\n      params: {\n        query: parameters.query,\n        startAt: parameters.startAt,\n        maxResult: parameters.maxResult || parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of users who fulfill these criteria:\n   *\n   * - Their user attributes match a search string.\n   * - They have permission to browse issues.\n   *\n   * Use this resource to find users who can browse:\n   *\n   * - An issue, by providing the `issueKey`.\n   * - Any issue in a project, by providing the `projectKey`.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the search string and have permission to browse issues. This\n   * means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the\n   * search string and have permission to browse issues, use [Get all users](#api-rest-api-3-users-search-get) and\n   * filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by\n   * users without the required permission return empty search results.\n   */\n  async findUsersWithBrowsePermission<T = Models.User[]>(\n    parameters: Parameters.FindUsersWithBrowsePermission | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of users who fulfill these criteria:\n   *\n   * - Their user attributes match a search string.\n   * - They have permission to browse issues.\n   *\n   * Use this resource to find users who can browse:\n   *\n   * - An issue, by providing the `issueKey`.\n   * - Any issue in a project, by providing the `projectKey`.\n   *\n   * This operation takes the users in the range defined by `startAt` and `maxResults`, up to the thousandth user, and\n   * then returns only the users from that range that match the search string and have permission to browse issues. This\n   * means the operation usually returns fewer users than specified in `maxResults`. To get all the users who match the\n   * search string and have permission to browse issues, use [Get all users](#api-rest-api-3-users-search-get) and\n   * filter the records in your code.\n   *\n   * Privacy controls are applied to the response based on the users' preferences. This could mean, for example, that\n   * the user's email address is hidden. See the [Profile visibility\n   * overview](https://developer.atlassian.com/cloud/jira/platform/profile-visibility/) for more details.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** _Browse\n   * users and groups_ [global permission](https://confluence.atlassian.com/x/x4dKLg). Anonymous calls and calls by\n   * users without the required permission return empty search results.\n   */\n  async findUsersWithBrowsePermission<T = Models.User[]>(\n    parameters?: Parameters.FindUsersWithBrowsePermission,\n    callback?: never,\n  ): Promise<T>;\n  async findUsersWithBrowsePermission<T = Models.User[]>(\n    parameters?: Parameters.FindUsersWithBrowsePermission,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/user/viewissue/search',\n      method: 'GET',\n      params: {\n        query: parameters?.query,\n        username: parameters?.username,\n        accountId: parameters?.accountId,\n        issueKey: parameters?.issueKey,\n        projectKey: parameters?.projectKey,\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Webhooks {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of the\n   * webhooks registered by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async getDynamicWebhooksForApp<T = Models.PageWebhook>(\n    parameters: Parameters.GetDynamicWebhooksForApp | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of the\n   * webhooks registered by the calling app.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async getDynamicWebhooksForApp<T = Models.PageWebhook>(\n    parameters?: Parameters.GetDynamicWebhooksForApp,\n    callback?: never,\n  ): Promise<T>;\n  async getDynamicWebhooksForApp<T = Models.PageWebhook>(\n    parameters?: Parameters.GetDynamicWebhooksForApp,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/webhook',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Registers webhooks.\n   *\n   * **NOTE:** for non-public OAuth apps, webhooks are delivered only if there is a match between the app owner and the\n   * user who registered a dynamic webhook.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async registerDynamicWebhooks<T = Models.ContainerForRegisteredWebhooks>(\n    parameters: Parameters.RegisterDynamicWebhooks,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Registers webhooks.\n   *\n   * **NOTE:** for non-public OAuth apps, webhooks are delivered only if there is a match between the app owner and the\n   * user who registered a dynamic webhook.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async registerDynamicWebhooks<T = Models.ContainerForRegisteredWebhooks>(\n    parameters: Parameters.RegisterDynamicWebhooks,\n    callback?: never,\n  ): Promise<T>;\n  async registerDynamicWebhooks<T = Models.ContainerForRegisteredWebhooks>(\n    parameters: Parameters.RegisterDynamicWebhooks,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/webhook',\n      method: 'POST',\n      data: {\n        url: parameters.url,\n        webhooks: parameters.webhooks,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes webhooks by ID. Only webhooks registered by the calling app are removed. If webhooks created by other apps\n   * are specified, they are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async deleteWebhookById<T = unknown>(parameters: Parameters.DeleteWebhookById, callback: Callback<T>): Promise<void>;\n  /**\n   * Removes webhooks by ID. Only webhooks registered by the calling app are removed. If webhooks created by other apps\n   * are specified, they are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async deleteWebhookById<T = unknown>(parameters: Parameters.DeleteWebhookById, callback?: never): Promise<T>;\n  async deleteWebhookById<T = unknown>(\n    parameters: Parameters.DeleteWebhookById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/webhook',\n      method: 'DELETE',\n      data: {\n        webhookIds: parameters.webhookIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns webhooks that have recently failed to be delivered to the requesting app after the maximum number of\n   * retries.\n   *\n   * After 72 hours the failure may no longer be returned by this operation.\n   *\n   * The oldest failure is returned first.\n   *\n   * This method uses a cursor-based pagination. To request the next page use the failure time of the last webhook on\n   * the list as the `failedAfter` value or use the URL provided in `next`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect apps](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) can use this operation.\n   */\n  async getFailedWebhooks<T = Models.FailedWebhooks>(\n    parameters: Parameters.GetFailedWebhooks | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns webhooks that have recently failed to be delivered to the requesting app after the maximum number of\n   * retries.\n   *\n   * After 72 hours the failure may no longer be returned by this operation.\n   *\n   * The oldest failure is returned first.\n   *\n   * This method uses a cursor-based pagination. To request the next page use the failure time of the last webhook on\n   * the list as the `failedAfter` value or use the URL provided in `next`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect apps](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) can use this operation.\n   */\n  async getFailedWebhooks<T = Models.FailedWebhooks>(\n    parameters?: Parameters.GetFailedWebhooks,\n    callback?: never,\n  ): Promise<T>;\n  async getFailedWebhooks<T = Models.FailedWebhooks>(\n    parameters?: Parameters.GetFailedWebhooks,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/webhook/failed',\n      method: 'GET',\n      params: {\n        maxResults: parameters?.maxResults,\n        after: parameters?.after,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Extends the life of webhook. Webhooks registered through the REST API expire after 30 days. Call this operation to\n   * keep them alive.\n   *\n   * Unrecognized webhook IDs (those that are not found or belong to other apps) are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async refreshWebhooks<T = Models.WebhooksExpirationDate>(\n    parameters: Parameters.RefreshWebhooks,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Extends the life of webhook. Webhooks registered through the REST API expire after 30 days. Call this operation to\n   * keep them alive.\n   *\n   * Unrecognized webhook IDs (those that are not found or belong to other apps) are ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/#connect-apps) and [OAuth\n   * 2.0](https://developer.atlassian.com/cloud/jira/platform/oauth-2-3lo-apps) apps can use this operation.\n   */\n  async refreshWebhooks<T = Models.WebhooksExpirationDate>(\n    parameters: Parameters.RefreshWebhooks,\n    callback?: never,\n  ): Promise<T>;\n  async refreshWebhooks<T = Models.WebhooksExpirationDate>(\n    parameters: Parameters.RefreshWebhooks,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/webhook/refresh',\n      method: 'PUT',\n      data: {\n        webhookIds: parameters.webhookIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport { paramSerializer } from '../paramSerializer';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Workflows {\n  constructor(private client: Client) {}\n\n  /**\n   * Creates a workflow. You can define transition rules using the shapes detailed in the following sections. If no\n   * transitional rules are specified the default system transition rules are used. Note: This only applies to\n   * company-managed scoped workflows. Use [bulk create\n   * workflows](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflows/#api-rest-api-3-workflows-create-post)\n   * to create both team and company-managed scoped workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflow<T = Models.WorkflowId>(\n    parameters: Parameters.CreateWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a workflow. You can define transition rules using the shapes detailed in the following sections. If no\n   * transitional rules are specified the default system transition rules are used. Note: This only applies to\n   * company-managed scoped workflows. Use [bulk create\n   * workflows](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflows/#api-rest-api-3-workflows-create-post)\n   * to create both team and company-managed scoped workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflow<T = Models.WorkflowId>(parameters: Parameters.CreateWorkflow, callback?: never): Promise<T>;\n  async createWorkflow<T = Models.WorkflowId>(\n    parameters: Parameters.CreateWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflow',\n      method: 'POST',\n      data: {\n        description: parameters.description,\n        name: parameters.name,\n        statuses: parameters.statuses,\n        transitions: parameters.transitions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * published classic workflows. When workflow names are specified, details of those workflows are returned. Otherwise,\n   * all published classic workflows are returned.\n   *\n   * This operation does not return next-gen workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowsPaginated<T = Models.PageWorkflow>(\n    parameters: Parameters.GetWorkflowsPaginated | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * published classic workflows. When workflow names are specified, details of those workflows are returned. Otherwise,\n   * all published classic workflows are returned.\n   *\n   * This operation does not return next-gen workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowsPaginated<T = Models.PageWorkflow>(\n    parameters?: Parameters.GetWorkflowsPaginated,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowsPaginated<T = Models.PageWorkflow>(\n    parameters?: Parameters.GetWorkflowsPaginated,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflow/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        workflowName: paramSerializer('workflowName', parameters?.workflowName),\n        expand: parameters?.expand,\n        queryString: parameters?.queryString,\n        orderBy: parameters?.orderBy,\n        isActive: parameters?.isActive,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a workflow.\n   *\n   * The workflow cannot be deleted if it is:\n   *\n   * - An active workflow.\n   * - A system workflow.\n   * - Associated with any workflow scheme.\n   * - Associated with any draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteInactiveWorkflow<T = void>(\n    parameters: Parameters.DeleteInactiveWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a workflow.\n   *\n   * The workflow cannot be deleted if it is:\n   *\n   * - An active workflow.\n   * - A system workflow.\n   * - Associated with any workflow scheme.\n   * - Associated with any draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteInactiveWorkflow<T = void>(\n    parameters: Parameters.DeleteInactiveWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const entityId = typeof parameters === 'string' ? parameters : parameters.entityId;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflow/${entityId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of issue types using a given workflow within a project. */\n  async getWorkflowProjectIssueTypeUsages<T = Models.WorkflowProjectIssueTypeUsage>(\n    parameters: Parameters.GetWorkflowProjectIssueTypeUsages,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of issue types using a given workflow within a project. */\n  async getWorkflowProjectIssueTypeUsages<T = Models.WorkflowProjectIssueTypeUsage>(\n    parameters: Parameters.GetWorkflowProjectIssueTypeUsages,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowProjectIssueTypeUsages<T = Models.WorkflowProjectIssueTypeUsage>(\n    parameters: Parameters.GetWorkflowProjectIssueTypeUsages,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflow/${parameters.workflowId}/project/${parameters.projectId}/issueTypeUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of projects using a given workflow. */\n  async getProjectUsagesForWorkflow<T = Models.WorkflowProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of projects using a given workflow. */\n  async getProjectUsagesForWorkflow<T = Models.WorkflowProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForWorkflow,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectUsagesForWorkflow<T = Models.WorkflowProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflow/${parameters.workflowId}/projectUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of workflow schemes using a given workflow. */\n  async getWorkflowSchemeUsagesForWorkflow<T = Models.WorkflowSchemeUsage>(\n    parameters: Parameters.GetWorkflowSchemeUsagesForWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of workflow schemes using a given workflow. */\n  async getWorkflowSchemeUsagesForWorkflow<T = Models.WorkflowSchemeUsage>(\n    parameters: Parameters.GetWorkflowSchemeUsagesForWorkflow,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowSchemeUsagesForWorkflow<T = Models.WorkflowSchemeUsage>(\n    parameters: Parameters.GetWorkflowSchemeUsagesForWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflow/${parameters.workflowId}/workflowSchemes`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of workflows and related statuses by providing workflow names, workflow IDs, or project and issue\n   * types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflows\n   * - At least one of the _Administer projects_ and _View (read-only) workflow_ project permissions to access\n   *   project-scoped workflows\n   */\n  async readWorkflows<T = Models.WorkflowRead>(\n    parameters: Parameters.ReadWorkflows | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of workflows and related statuses by providing workflow names, workflow IDs, or project and issue\n   * types.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflows\n   * - At least one of the _Administer projects_ and _View (read-only) workflow_ project permissions to access\n   *   project-scoped workflows\n   */\n  async readWorkflows<T = Models.WorkflowRead>(parameters?: Parameters.ReadWorkflows, callback?: never): Promise<T>;\n  async readWorkflows<T = Models.WorkflowRead>(\n    parameters?: Parameters.ReadWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflows',\n      method: 'POST',\n      params: {\n        useTransitionLinksFormat: parameters?.useTransitionLinksFormat,\n        useApprovalConfiguration: parameters?.useApprovalConfiguration,\n      },\n      data: {\n        projectAndIssueTypes: parameters?.projectAndIssueTypes,\n        workflowIds: parameters?.workflowIds,\n        workflowNames: parameters?.workflowNames,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Get the list of workflow capabilities for a specific workflow using either the workflow ID, or the project and\n   * issue type ID pair. The response includes the scope of the workflow, defined as global/project-based, and a list of\n   * project types that the workflow is scoped to. It also includes all rules organised into their broad categories\n   * (conditions, validators, actions, triggers, screens) as well as the source location (Atlassian-provided, Connect,\n   * Forge).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to access all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to access project-scoped workflows\n   */\n  async workflowCapabilities<T = Models.WorkflowCapabilities>(\n    parameters: Parameters.WorkflowCapabilities | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Get the list of workflow capabilities for a specific workflow using either the workflow ID, or the project and\n   * issue type ID pair. The response includes the scope of the workflow, defined as global/project-based, and a list of\n   * project types that the workflow is scoped to. It also includes all rules organised into their broad categories\n   * (conditions, validators, actions, triggers, screens) as well as the source location (Atlassian-provided, Connect,\n   * Forge).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to access all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to access project-scoped workflows\n   */\n  async workflowCapabilities<T = Models.WorkflowCapabilities>(\n    parameters?: Parameters.WorkflowCapabilities,\n    callback?: never,\n  ): Promise<T>;\n  async workflowCapabilities<T = Models.WorkflowCapabilities>(\n    parameters?: Parameters.WorkflowCapabilities,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflows/capabilities',\n      method: 'GET',\n      params: {\n        workflowId: parameters?.workflowId,\n        projectId: parameters?.projectId,\n        issueTypeId: parameters?.issueTypeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Create workflows and related statuses.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async createWorkflows<T = Models.WorkflowCreate>(\n    parameters: Parameters.CreateWorkflows,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Create workflows and related statuses.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async createWorkflows<T = Models.WorkflowCreate>(\n    parameters: Parameters.CreateWorkflows,\n    callback?: never,\n  ): Promise<T>;\n  async createWorkflows<T = Models.WorkflowCreate>(\n    parameters: Parameters.CreateWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflows/create',\n      method: 'POST',\n      data: {\n        scope: parameters.scope,\n        statuses: parameters.statuses,\n        workflows: parameters.workflows,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Validate the payload for bulk create workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async validateCreateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateCreateWorkflows,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Validate the payload for bulk create workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async validateCreateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateCreateWorkflows,\n    callback?: never,\n  ): Promise<T>;\n  async validateCreateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateCreateWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflows/create/validation',\n      method: 'POST',\n      data: {\n        payload: parameters.payload,\n        validationOptions: parameters.validationOptions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of global\n   * and project workflows. If workflow names are specified in query string, details of those workflows are returned.\n   * Otherwise, all workflows are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflows\n   * - At least one of the _Administer projects_ and _View (read-only) workflow_ project permissions to access\n   *   project-scoped workflows\n   */\n  async searchWorkflows<T = Models.WorkflowSearchResponse>(\n    parameters: Parameters.SearchWorkflows | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of global\n   * and project workflows. If workflow names are specified in query string, details of those workflows are returned.\n   * Otherwise, all workflows are returned.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflows\n   * - At least one of the _Administer projects_ and _View (read-only) workflow_ project permissions to access\n   *   project-scoped workflows\n   */\n  async searchWorkflows<T = Models.WorkflowSearchResponse>(\n    parameters?: Parameters.SearchWorkflows,\n    callback?: never,\n  ): Promise<T>;\n  async searchWorkflows<T = Models.WorkflowSearchResponse>(\n    parameters?: Parameters.SearchWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflows/search',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n        expand: parameters?.expand,\n        queryString: parameters?.queryString,\n        orderBy: parameters?.orderBy,\n        scope: parameters?.scope,\n        isActive: parameters?.isActive,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Update workflows and related statuses.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async updateWorkflows<T = Models.WorkflowUpdate>(\n    parameters: Parameters.UpdateWorkflows,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Update workflows and related statuses.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async updateWorkflows<T = Models.WorkflowUpdate>(\n    parameters: Parameters.UpdateWorkflows,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflows<T = Models.WorkflowUpdate>(\n    parameters: Parameters.UpdateWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflows/update',\n      method: 'POST',\n      params: {\n        expand: parameters.expand,\n      },\n      data: {\n        statuses: parameters.statuses,\n        workflows: parameters.workflows,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Validate the payload for bulk update workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async validateUpdateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateUpdateWorkflows,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Validate the payload for bulk update workflows.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to create all, including global-scoped, workflows\n   * - _Administer projects_ project permissions to create project-scoped workflows\n   */\n  async validateUpdateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateUpdateWorkflows,\n    callback?: never,\n  ): Promise<T>;\n  async validateUpdateWorkflows<T = Models.WorkflowValidationErrorList>(\n    parameters: Parameters.ValidateUpdateWorkflows,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflows/update/validation',\n      method: 'POST',\n      data: {\n        payload: parameters.payload,\n        validationOptions: parameters.validationOptions,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowSchemeDrafts {\n  constructor(private client: Client) {}\n\n  /**\n   * Create a draft workflow scheme from an active workflow scheme, by copying the active workflow scheme. Note that an\n   * active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowSchemeDraftFromParent<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowSchemeDraftFromParent | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Create a draft workflow scheme from an active workflow scheme, by copying the active workflow scheme. Note that an\n   * active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowSchemeDraftFromParent<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowSchemeDraftFromParent | string,\n    callback?: never,\n  ): Promise<T>;\n  async createWorkflowSchemeDraftFromParent<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowSchemeDraftFromParent | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}/createdraft`,\n      method: 'POST',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the draft workflow scheme for an active workflow scheme. Draft workflow schemes allow changes to be made to\n   * the active workflow schemes: When an active workflow scheme is updated, a draft copy is created. The draft is\n   * modified, then the changes in the draft are copied back to the active workflow scheme. See [Configuring workflow\n   * schemes](https://confluence.atlassian.com/x/tohKLg) for more information.\\\n   * Note that:\n   *\n   * - Only active workflow schemes can have draft workflow schemes.\n   * - An active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowSchemeDraft | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the draft workflow scheme for an active workflow scheme. Draft workflow schemes allow changes to be made to\n   * the active workflow schemes: When an active workflow scheme is updated, a draft copy is created. The draft is\n   * modified, then the changes in the draft are copied back to the active workflow scheme. See [Configuring workflow\n   * schemes](https://confluence.atlassian.com/x/tohKLg) for more information.\\\n   * Note that:\n   *\n   * - Only active workflow schemes can have draft workflow schemes.\n   * - An active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowSchemeDraft | string,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowSchemeDraft | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}/draft`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a draft workflow scheme. If a draft workflow scheme does not exist for the active workflow scheme, then a\n   * draft is created. Note that an active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowSchemeDraft,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a draft workflow scheme. If a draft workflow scheme does not exist for the active workflow scheme, then a\n   * draft is created. Note that an active workflow scheme can only have one draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowSchemeDraft,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowSchemeDraft<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowSchemeDraft,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/draft`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        defaultWorkflow: parameters.defaultWorkflow,\n        issueTypeMappings: parameters.issueTypeMappings,\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeDraft<T = void>(\n    parameters: Parameters.DeleteWorkflowSchemeDraft | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a draft workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeDraft<T = void>(\n    parameters: Parameters.DeleteWorkflowSchemeDraft | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowSchemeDraft<T = void>(\n    parameters: Parameters.DeleteWorkflowSchemeDraft | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}/draft`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the default workflow for a workflow scheme's draft. The default workflow is the workflow that is assigned\n   * any issue types that have not been mapped to any other workflow. The default workflow has _All Unassigned Issue\n   * Types_ listed in its issue types for the workflow scheme in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDraftDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDraftDefaultWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the default workflow for a workflow scheme's draft. The default workflow is the workflow that is assigned\n   * any issue types that have not been mapped to any other workflow. The default workflow has _All Unassigned Issue\n   * Types_ listed in its issue types for the workflow scheme in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDraftDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDraftDefaultWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async getDraftDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDraftDefaultWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}/draft/default`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the default workflow for a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftDefaultWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the default workflow for a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftDefaultWorkflow,\n    callback?: never,\n  ): Promise<T>;\n  async updateDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftDefaultWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/draft/default`,\n      method: 'PUT',\n      data: {\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n        workflow: parameters.workflow,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Resets the default workflow for a workflow scheme's draft. That is, the default workflow is set to Jira's system\n   * workflow (the _jira_ workflow).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDraftDefaultWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Resets the default workflow for a workflow scheme's draft. That is, the default workflow is set to Jira's system\n   * workflow (the _jira_ workflow).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDraftDefaultWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteDraftDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDraftDefaultWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}/draft/default`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the issue type-workflow mapping for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeDraftIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeDraftIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the issue type-workflow mapping for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeDraftIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeDraftIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowSchemeDraftIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeDraftIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/draft/issuetype/${parameters.issueType}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the workflow for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeDraftIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the workflow for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeDraftIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async setWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeDraftIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/draft/issuetype/${parameters.issueType}`,\n      method: 'PUT',\n      data: parameters.details,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the issue type-workflow mapping for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeDraftIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the issue type-workflow mapping for an issue type in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeDraftIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowSchemeDraftIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeDraftIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/draft/issuetype/${parameters.issueType}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Publishes a draft workflow scheme.\n   *\n   * Where the draft workflow includes new workflow statuses for an issue type, mappings are provided to update issues\n   * with the original workflow status to the new workflow status.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async publishDraftWorkflowScheme<T = void>(\n    parameters: Parameters.PublishDraftWorkflowScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Publishes a draft workflow scheme.\n   *\n   * Where the draft workflow includes new workflow statuses for an issue type, mappings are provided to update issues\n   * with the original workflow status to the new workflow status.\n   *\n   * This operation is\n   * [asynchronous](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations). Follow the\n   * `location` link in the response to determine the status of the task and use [Get\n   * task](#api-rest-api-3-task-taskId-get) to obtain updates.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async publishDraftWorkflowScheme<T = void>(\n    parameters: Parameters.PublishDraftWorkflowScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async publishDraftWorkflowScheme<T = void>(\n    parameters: Parameters.PublishDraftWorkflowScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}/draft/publish`,\n      method: 'POST',\n      params: {\n        validateOnly: typeof parameters !== 'string' && parameters.validateOnly,\n      },\n      data: {\n        statusMappings: typeof parameters !== 'string' && parameters.statusMappings,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the workflow-issue type mappings for a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDraftWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetDraftWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the workflow-issue type mappings for a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDraftWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetDraftWorkflow,\n    callback?: never,\n  ): Promise<T>;\n  async getDraftWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetDraftWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/draft/workflow`,\n      method: 'GET',\n      params: {\n        workflowName: parameters.workflowName,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the issue types for a workflow in a workflow scheme's draft. The workflow can also be set as the default\n   * workflow for the draft workflow scheme. Unmapped issues types are mapped to the default workflow.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDraftWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftWorkflowMapping,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the issue types for a workflow in a workflow scheme's draft. The workflow can also be set as the default\n   * workflow for the draft workflow scheme. Unmapped issues types are mapped to the default workflow.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDraftWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftWorkflowMapping,\n    callback?: never,\n  ): Promise<T>;\n  async updateDraftWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDraftWorkflowMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/draft/workflow`,\n      method: 'PUT',\n      params: {\n        workflowName: parameters.workflowName,\n      },\n      data: {\n        defaultMapping: parameters.defaultMapping,\n        issueTypes: parameters.issueTypes,\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n        workflow: parameters.workflow,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the workflow-issue type mapping for a workflow in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDraftWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteDraftWorkflowMapping,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the workflow-issue type mapping for a workflow in a workflow scheme's draft.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDraftWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteDraftWorkflowMapping,\n    callback?: never,\n  ): Promise<T>;\n  async deleteDraftWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteDraftWorkflowMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/draft/workflow`,\n      method: 'DELETE',\n      params: {\n        workflowName: parameters.workflowName,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowSchemeProjectAssociations {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of the workflow schemes associated with a list of projects. Each returned workflow scheme includes a\n   * list of the requested projects associated with it. Any team-managed or non-existent projects in the request are\n   * ignored and no errors are returned.\n   *\n   * If the project is associated with the `Default Workflow Scheme` no ID is returned. This is because the way the\n   * `Default Workflow Scheme` is stored means it has no ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeProjectAssociations<T = Models.ContainerOfWorkflowSchemeAssociations>(\n    parameters: Parameters.GetWorkflowSchemeProjectAssociations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of the workflow schemes associated with a list of projects. Each returned workflow scheme includes a\n   * list of the requested projects associated with it. Any team-managed or non-existent projects in the request are\n   * ignored and no errors are returned.\n   *\n   * If the project is associated with the `Default Workflow Scheme` no ID is returned. This is because the way the\n   * `Default Workflow Scheme` is stored means it has no ID.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeProjectAssociations<T = Models.ContainerOfWorkflowSchemeAssociations>(\n    parameters: Parameters.GetWorkflowSchemeProjectAssociations,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowSchemeProjectAssociations<T = Models.ContainerOfWorkflowSchemeAssociations>(\n    parameters: Parameters.GetWorkflowSchemeProjectAssociations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflowscheme/project',\n      method: 'GET',\n      params: {\n        projectId: parameters.projectId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Assigns a workflow scheme to a project. This operation is performed only when there are no issues in the project.\n   *\n   * Workflow schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignSchemeToProject<T = void>(\n    parameters: Parameters.AssignSchemeToProject,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Assigns a workflow scheme to a project. This operation is performed only when there are no issues in the project.\n   *\n   * Workflow schemes can only be assigned to classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async assignSchemeToProject<T = void>(parameters: Parameters.AssignSchemeToProject, callback?: never): Promise<T>;\n  async assignSchemeToProject<T = void>(\n    parameters: Parameters.AssignSchemeToProject,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflowscheme/project',\n      method: 'PUT',\n      data: {\n        projectId: parameters.projectId,\n        workflowSchemeId: parameters.workflowSchemeId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowSchemes {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * workflow schemes, not including draft workflow schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllWorkflowSchemes<T = Models.PageWorkflowScheme>(\n    parameters: Parameters.GetAllWorkflowSchemes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of all\n   * workflow schemes, not including draft workflow schemes.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getAllWorkflowSchemes<T = Models.PageWorkflowScheme>(\n    parameters?: Parameters.GetAllWorkflowSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async getAllWorkflowSchemes<T = Models.PageWorkflowScheme>(\n    parameters?: Parameters.GetAllWorkflowSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflowscheme',\n      method: 'GET',\n      params: {\n        startAt: parameters?.startAt,\n        maxResults: parameters?.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Creates a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Creates a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowScheme,\n    callback?: never,\n  ): Promise<T>;\n  async createWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.CreateWorkflowScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflowscheme',\n      method: 'POST',\n      data: {\n        defaultWorkflow: parameters.defaultWorkflow,\n        description: parameters.description,\n        draft: parameters.draft,\n        id: parameters.id,\n        issueTypeMappings: parameters.issueTypeMappings,\n        issueTypes: parameters.issueTypes,\n        lastModified: parameters.lastModified,\n        lastModifiedUser: parameters.lastModifiedUser,\n        name: parameters.name,\n        originalDefaultWorkflow: parameters.originalDefaultWorkflow,\n        originalIssueTypeMappings: parameters.originalIssueTypeMappings,\n        self: parameters.self,\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a list of workflow schemes by providing workflow scheme IDs or project IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflow schemes\n   * - _Administer projects_ project permissions to access project-scoped workflow schemes\n   */\n  async readWorkflowSchemes<T = Models.WorkflowSchemeReadResponse[]>(\n    parameters: Parameters.ReadWorkflowSchemes,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of workflow schemes by providing workflow scheme IDs or project IDs.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ global permission to access all, including project-scoped, workflow schemes\n   * - _Administer projects_ project permissions to access project-scoped workflow schemes\n   */\n  async readWorkflowSchemes<T = Models.WorkflowSchemeReadResponse[]>(\n    parameters: Parameters.ReadWorkflowSchemes,\n    callback?: never,\n  ): Promise<T>;\n  async readWorkflowSchemes<T = Models.WorkflowSchemeReadResponse[]>(\n    parameters: Parameters.ReadWorkflowSchemes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflowscheme/read',\n      method: 'POST',\n      data: {\n        projectIds: parameters.projectIds,\n        workflowSchemeIds: parameters.workflowSchemeIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates company-managed and team-managed project workflow schemes. This API doesn't have a concept of draft, so any\n   * changes made to a workflow scheme are immediately available. When changing the available statuses for issue types,\n   * an [asynchronous task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations)\n   * migrates the issues as defined in the provided mappings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to update all, including global-scoped, workflow schemes.\n   * - _Administer projects_ project permission to update project-scoped workflow schemes.\n   */\n  async updateSchemes<T = unknown>(parameters: Parameters.UpdateSchemes, callback: Callback<T>): Promise<void>;\n  /**\n   * Updates company-managed and team-managed project workflow schemes. This API doesn't have a concept of draft, so any\n   * changes made to a workflow scheme are immediately available. When changing the available statuses for issue types,\n   * an [asynchronous task](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#async-operations)\n   * migrates the issues as defined in the provided mappings.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ project permission to update all, including global-scoped, workflow schemes.\n   * - _Administer projects_ project permission to update project-scoped workflow schemes.\n   */\n  async updateSchemes<T = unknown>(parameters: Parameters.UpdateSchemes, callback?: never): Promise<T>;\n  async updateSchemes<T = unknown>(parameters: Parameters.UpdateSchemes, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflowscheme/update',\n      method: 'POST',\n      data: {\n        defaultWorkflowId: parameters.defaultWorkflowId,\n        description: parameters.description,\n        id: parameters.id,\n        name: parameters.name,\n        statusMappingsByIssueTypeOverride: parameters.statusMappingsByIssueTypeOverride,\n        statusMappingsByWorkflows: parameters.statusMappingsByWorkflows,\n        version: parameters.version,\n        workflowsForIssueTypes: parameters.workflowsForIssueTypes,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Gets the required status mappings for the desired changes to a workflow scheme. The results are provided per issue\n   * type and workflow. When updating a workflow scheme, status mappings can be provided per issue type, per workflow,\n   * or both.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ permission to update all, including global-scoped, workflow schemes.\n   * - _Administer projects_ project permission to update project-scoped workflow schemes.\n   */\n  async updateWorkflowSchemeMappings<T = Models.WorkflowSchemeUpdateRequiredMappingsResponse>(\n    parameters: Parameters.UpdateWorkflowSchemeMappings,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Gets the required status mappings for the desired changes to a workflow scheme. The results are provided per issue\n   * type and workflow. When updating a workflow scheme, status mappings can be provided per issue type, per workflow,\n   * or both.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   *\n   * - _Administer Jira_ permission to update all, including global-scoped, workflow schemes.\n   * - _Administer projects_ project permission to update project-scoped workflow schemes.\n   */\n  async updateWorkflowSchemeMappings<T = Models.WorkflowSchemeUpdateRequiredMappingsResponse>(\n    parameters: Parameters.UpdateWorkflowSchemeMappings,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowSchemeMappings<T = Models.WorkflowSchemeUpdateRequiredMappingsResponse>(\n    parameters: Parameters.UpdateWorkflowSchemeMappings,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflowscheme/update/mappings',\n      method: 'POST',\n      data: {\n        defaultWorkflowId: parameters.defaultWorkflowId,\n        id: parameters.id,\n        workflowsForIssueTypes: parameters.workflowsForIssueTypes,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.GetWorkflowScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}`,\n      method: 'GET',\n      params: {\n        returnDraftIfExists: typeof parameters !== 'string' && parameters.returnDraftIfExists,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a company-manged project workflow scheme, including the name, default workflow, issue type to project\n   * mappings, and more. If the workflow scheme is active (that is, being used by at least one project), then a draft\n   * workflow scheme is created or updated instead, provided that `updateDraftIfNeeded` is set to `true`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a company-manged project workflow scheme, including the name, default workflow, issue type to project\n   * mappings, and more. If the workflow scheme is active (that is, being used by at least one project), then a draft\n   * workflow scheme is created or updated instead, provided that `updateDraftIfNeeded` is set to `true`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowScheme,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowScheme<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}`,\n      method: 'PUT',\n      data: {\n        name: parameters.name,\n        description: parameters.description,\n        defaultWorkflow: parameters.defaultWorkflow,\n        issueTypeMappings: parameters.issueTypeMappings,\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a workflow scheme. Note that a workflow scheme cannot be deleted if it is active (that is, being used by at\n   * least one project).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowScheme<T = void>(\n    parameters: Parameters.DeleteWorkflowScheme | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a workflow scheme. Note that a workflow scheme cannot be deleted if it is active (that is, being used by at\n   * least one project).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowScheme<T = void>(\n    parameters: Parameters.DeleteWorkflowScheme | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowScheme<T = void>(\n    parameters: Parameters.DeleteWorkflowScheme | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the default workflow for a workflow scheme. The default workflow is the workflow that is assigned any issue\n   * types that have not been mapped to any other workflow. The default workflow has _All Unassigned Issue Types_ listed\n   * in its issue types for the workflow scheme in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDefaultWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the default workflow for a workflow scheme. The default workflow is the workflow that is assigned any issue\n   * types that have not been mapped to any other workflow. The default workflow has _All Unassigned Issue Types_ listed\n   * in its issue types for the workflow scheme in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDefaultWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async getDefaultWorkflow<T = Models.DefaultWorkflow>(\n    parameters: Parameters.GetDefaultWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}/default`,\n      method: 'GET',\n      params: {\n        returnDraftIfExists: typeof parameters !== 'string' && parameters.returnDraftIfExists,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the default workflow for a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request object and a draft workflow scheme is created or updated with the new default workflow. The\n   * draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDefaultWorkflow,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the default workflow for a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request object and a draft workflow scheme is created or updated with the new default workflow. The\n   * draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDefaultWorkflow,\n    callback?: never,\n  ): Promise<T>;\n  async updateDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateDefaultWorkflow,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/default`,\n      method: 'PUT',\n      data: {\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n        workflow: parameters.workflow,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Resets the default workflow for a workflow scheme. That is, the default workflow is set to Jira's system workflow\n   * (the _jira_ workflow).\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the default workflow reset. The draft workflow scheme\n   * can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDefaultWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Resets the default workflow for a workflow scheme. That is, the default workflow is set to Jira's system workflow\n   * (the _jira_ workflow).\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the default workflow reset. The draft workflow scheme\n   * can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDefaultWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteDefaultWorkflow<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteDefaultWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}/default`,\n      method: 'DELETE',\n      params: {\n        updateDraftIfNeeded: typeof parameters !== 'string' && parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the issue type-workflow mapping for an issue type in a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the issue type-workflow mapping for an issue type in a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowSchemeIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowSchemeIssueType<T = Models.IssueTypeWorkflowMapping>(\n    parameters: Parameters.GetWorkflowSchemeIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/issuetype/${parameters.issueType}`,\n      method: 'GET',\n      params: {\n        returnDraftIfExists: parameters.returnDraftIfExists,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the workflow for an issue type in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request body and a draft workflow scheme is created or updated with the new issue type-workflow\n   * mapping. The draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the workflow for an issue type in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request body and a draft workflow scheme is created or updated with the new issue type-workflow\n   * mapping. The draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async setWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async setWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.SetWorkflowSchemeIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/issuetype/${parameters.issueType}`,\n      method: 'PUT',\n      data: parameters.details,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the issue type-workflow mapping for an issue type in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the issue type-workflow mapping deleted. The draft\n   * workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeIssueType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the issue type-workflow mapping for an issue type in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the issue type-workflow mapping deleted. The draft\n   * workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeIssueType,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowSchemeIssueType<T = Models.WorkflowScheme>(\n    parameters: Parameters.DeleteWorkflowSchemeIssueType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/issuetype/${parameters.issueType}`,\n      method: 'DELETE',\n      params: {\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the workflow-issue type mappings for a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetWorkflow | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the workflow-issue type mappings for a workflow scheme.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetWorkflow | string,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflow<T = Models.IssueTypesWorkflowMapping>(\n    parameters: Parameters.GetWorkflow | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}/workflow`,\n      method: 'GET',\n      params: {\n        workflowName: typeof parameters !== 'string' && parameters.workflowName,\n        returnDraftIfExists: typeof parameters !== 'string' && parameters.returnDraftIfExists,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the issue types for a workflow in a workflow scheme. The workflow can also be set as the default workflow for\n   * the workflow scheme. Unmapped issues types are mapped to the default workflow.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request body and a draft workflow scheme is created or updated with the new workflow-issue types\n   * mappings. The draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowMapping,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Sets the issue types for a workflow in a workflow scheme. The workflow can also be set as the default workflow for\n   * the workflow scheme. Unmapped issues types are mapped to the default workflow.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` in the request body and a draft workflow scheme is created or updated with the new workflow-issue types\n   * mappings. The draft workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowMapping,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowMapping<T = Models.WorkflowScheme>(\n    parameters: Parameters.UpdateWorkflowMapping,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.id}/workflow`,\n      method: 'PUT',\n      params: {\n        workflowName: parameters.workflowName,\n      },\n      data: {\n        defaultMapping: parameters.defaultMapping,\n        issueTypes: parameters.issueTypes,\n        updateDraftIfNeeded: parameters.updateDraftIfNeeded,\n        workflow: parameters.workflow,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes the workflow-issue type mapping for a workflow in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the workflow-issue type mapping deleted. The draft\n   * workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteWorkflowMapping | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes the workflow-issue type mapping for a workflow in a workflow scheme.\n   *\n   * Note that active workflow schemes cannot be edited. If the workflow scheme is active, set `updateDraftIfNeeded` to\n   * `true` and a draft workflow scheme is created or updated with the workflow-issue type mapping deleted. The draft\n   * workflow scheme can be published in Jira.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteWorkflowMapping | string,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowMapping<T = unknown>(\n    parameters: Parameters.DeleteWorkflowMapping | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const id = typeof parameters === 'string' ? parameters : parameters.id;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${id}/workflow`,\n      method: 'DELETE',\n      params: {\n        workflowName: typeof parameters !== 'string' && parameters.workflowName,\n        updateDraftIfNeeded: typeof parameters !== 'string' && parameters.updateDraftIfNeeded,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /** Returns a page of projects using a given workflow scheme. */\n  async getProjectUsagesForWorkflowScheme<T = Models.WorkflowSchemeProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForWorkflowScheme,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /** Returns a page of projects using a given workflow scheme. */\n  async getProjectUsagesForWorkflowScheme<T = Models.WorkflowSchemeProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForWorkflowScheme,\n    callback?: never,\n  ): Promise<T>;\n  async getProjectUsagesForWorkflowScheme<T = Models.WorkflowSchemeProjectUsage>(\n    parameters: Parameters.GetProjectUsagesForWorkflowScheme,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflowscheme/${parameters.workflowSchemeId}/projectUsages`,\n      method: 'GET',\n      params: {\n        nextPageToken: parameters.nextPageToken,\n        maxResults: parameters.maxResults,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowStatusCategories {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of all status categories.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getStatusCategories<T = Models.StatusCategory[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a list of all status categories.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getStatusCategories<T = Models.StatusCategory[]>(callback?: never): Promise<T>;\n  async getStatusCategories<T = Models.StatusCategory[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/statuscategory',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a status category. Status categories provided a mechanism for categorizing\n   * [statuses](#api-rest-api-3-status-idOrName-get).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getStatusCategory<T = Models.StatusCategory>(\n    parameters: Parameters.GetStatusCategory | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a status category. Status categories provided a mechanism for categorizing\n   * [statuses](#api-rest-api-3-status-idOrName-get).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * Permission to access Jira.\n   */\n  async getStatusCategory<T = Models.StatusCategory>(\n    parameters: Parameters.GetStatusCategory | string,\n    callback?: never,\n  ): Promise<T>;\n  async getStatusCategory<T = Models.StatusCategory>(\n    parameters: Parameters.GetStatusCategory | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const idOrKey = typeof parameters === 'string' ? parameters : parameters.idOrKey;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/statuscategory/${idOrKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowStatuses {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of all statuses associated with active workflows.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * [Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required: _Browse\n   * projects_ [project\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) for the\n   * project.\n   */\n  async getStatuses<T = Models.StatusDetails[]>(callback: Callback<T>): Promise<void>;\n  /**\n   * Returns a list of all statuses associated with active workflows.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * [Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required: _Browse\n   * projects_ [project\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) for the\n   * project.\n   */\n  async getStatuses<T = Models.StatusDetails[]>(callback?: never): Promise<T>;\n  async getStatuses<T = Models.StatusDetails[]>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/status',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns a status. The status must be associated with an active workflow to be returned.\n   *\n   * If a name is used on more than one status, only the status found first is returned. Therefore, identifying the\n   * status by its ID may be preferable.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * [Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required: _Browse\n   * projects_ [project\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) for the\n   * project.\n   */\n  async getStatus<T = Models.StatusDetails>(\n    parameters: Parameters.GetStatus | string,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a status. The status must be associated with an active workflow to be returned.\n   *\n   * If a name is used on more than one status, only the status found first is returned. Therefore, identifying the\n   * status by its ID may be preferable.\n   *\n   * This operation can be accessed anonymously.\n   *\n   * [Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required: _Browse\n   * projects_ [project\n   * permission](https://support.atlassian.com/jira-cloud-administration/docs/manage-project-permissions/) for the\n   * project.\n   */\n  async getStatus<T = Models.StatusDetails>(parameters: Parameters.GetStatus | string, callback?: never): Promise<T>;\n  async getStatus<T = Models.StatusDetails>(\n    parameters: Parameters.GetStatus | string,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const idOrName = typeof parameters === 'string' ? parameters : parameters.idOrName;\n\n    const config: RequestConfig = {\n      url: `/rest/api/3/status/${idOrName}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowTransitionProperties {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns the properties on a workflow transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowTransitionProperties<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.GetWorkflowTransitionProperties,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the properties on a workflow transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async getWorkflowTransitionProperties<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.GetWorkflowTransitionProperties,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowTransitionProperties<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.GetWorkflowTransitionProperties,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflow/transitions/${parameters.transitionId}/properties`,\n      method: 'GET',\n      params: {\n        includeReservedKeys: parameters.includeReservedKeys,\n        key: parameters.key,\n        workflowName: parameters.workflowName,\n        workflowMode: parameters.workflowMode,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds a property to a workflow transition. Transition properties are used to change the behavior of a transition.\n   * For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.CreateWorkflowTransitionProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Adds a property to a workflow transition. Transition properties are used to change the behavior of a transition.\n   * For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async createWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.CreateWorkflowTransitionProperty,\n    callback?: never,\n  ): Promise<T>;\n  async createWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.CreateWorkflowTransitionProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflow/transitions/${parameters.transitionId}/properties`,\n      method: 'POST',\n      params: {\n        key: parameters.key,\n        workflowName: parameters.workflowName,\n        workflowMode: parameters.workflowMode,\n      },\n      data: {\n        ...parameters,\n        transitionId: undefined,\n        key: undefined,\n        workflowName: undefined,\n        workflowMode: undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates a workflow transition by changing the property value. Trying to update a property that does not exist\n   * results in a new property being added to the transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.UpdateWorkflowTransitionProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates a workflow transition by changing the property value. Trying to update a property that does not exist\n   * results in a new property being added to the transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async updateWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.UpdateWorkflowTransitionProperty,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowTransitionProperty<T = Models.WorkflowTransitionProperty>(\n    parameters: Parameters.UpdateWorkflowTransitionProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflow/transitions/${parameters.transitionId}/properties`,\n      method: 'PUT',\n      params: {\n        key: parameters.key,\n        workflowName: parameters.workflowName,\n        workflowMode: parameters.workflowMode,\n      },\n      data: {\n        ...parameters,\n        transitionId: undefined,\n        key: undefined,\n        workflowName: undefined,\n        workflowMode: undefined,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes a property from a workflow transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowTransitionProperty<T = unknown>(\n    parameters: Parameters.DeleteWorkflowTransitionProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes a property from a workflow transition. Transition properties are used to change the behavior of a\n   * transition. For more information, see [Transition\n   * properties](https://confluence.atlassian.com/x/zIhKLg#Advancedworkflowconfiguration-transitionproperties) and\n   * [Workflow properties](https://confluence.atlassian.com/x/JYlKLg).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:**\n   * _Administer Jira_ [global permission](https://confluence.atlassian.com/x/x4dKLg).\n   */\n  async deleteWorkflowTransitionProperty<T = unknown>(\n    parameters: Parameters.DeleteWorkflowTransitionProperty,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowTransitionProperty<T = unknown>(\n    parameters: Parameters.DeleteWorkflowTransitionProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/api/3/workflow/transitions/${parameters.transitionId}/properties`,\n      method: 'DELETE',\n      params: {\n        key: parameters.key,\n        workflowName: parameters.workflowName,\n        workflowMode: parameters.workflowMode,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Client } from '../clients';\nimport type { Callback } from '../callback';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class WorkflowTransitionRules {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * workflows with transition rules. The workflows can be filtered to return only those containing workflow transition\n   * rules:\n   *\n   * - Of one or more transition rule types, such as [workflow post\n   *   functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/).\n   * - Matching one or more transition rule keys.\n   *\n   * Only workflows containing transition rules created by the calling\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app are returned.\n   *\n   * Due to server-side optimizations, workflows with an empty list of rules may be returned; these workflows can be\n   * ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation.\n   */\n  async getWorkflowTransitionRuleConfigurations<T = Models.PageWorkflowTransitionRules>(\n    parameters: Parameters.GetWorkflowTransitionRuleConfigurations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a [paginated](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#pagination) list of\n   * workflows with transition rules. The workflows can be filtered to return only those containing workflow transition\n   * rules:\n   *\n   * - Of one or more transition rule types, such as [workflow post\n   *   functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/).\n   * - Matching one or more transition rule keys.\n   *\n   * Only workflows containing transition rules created by the calling\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app are returned.\n   *\n   * Due to server-side optimizations, workflows with an empty list of rules may be returned; these workflows can be\n   * ignored.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation.\n   */\n  async getWorkflowTransitionRuleConfigurations<T = Models.PageWorkflowTransitionRules>(\n    parameters: Parameters.GetWorkflowTransitionRuleConfigurations,\n    callback?: never,\n  ): Promise<T>;\n  async getWorkflowTransitionRuleConfigurations<T = Models.PageWorkflowTransitionRules>(\n    parameters: Parameters.GetWorkflowTransitionRuleConfigurations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflow/rule/config',\n      method: 'GET',\n      params: {\n        startAt: parameters.startAt,\n        maxResults: parameters.maxResults,\n        types: parameters.types,\n        keys: parameters.keys,\n        workflowNames: parameters.workflowNames,\n        withTags: parameters.withTags,\n        draft: parameters.draft,\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Updates configuration of workflow transition rules. The following rule types are supported:\n   *\n   * - [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/)\n   * - [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/)\n   * - [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/)\n   *\n   * Only rules created by the calling\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app can be updated.\n   *\n   * To assist with app migration, this operation can be used to:\n   *\n   * - Disable a rule.\n   * - Add a `tag`. Use this to filter rules in the [Get workflow transition rule\n   *   configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-rules/#api-rest-api-3-workflow-rule-config-get).\n   *\n   * Rules are enabled if the `disabled` parameter is not provided.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation.\n   */\n  async updateWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters: Parameters.UpdateWorkflowTransitionRuleConfigurations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Updates configuration of workflow transition rules. The following rule types are supported:\n   *\n   * - [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/)\n   * - [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/)\n   * - [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/)\n   *\n   * Only rules created by the calling\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) app can be updated.\n   *\n   * To assist with app migration, this operation can be used to:\n   *\n   * - Disable a rule.\n   * - Add a `tag`. Use this to filter rules in the [Get workflow transition rule\n   *   configurations](https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-workflow-transition-rules/#api-rest-api-3-workflow-rule-config-get).\n   *\n   * Rules are enabled if the `disabled` parameter is not provided.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * [Connect](https://developer.atlassian.com/cloud/jira/platform/index/#connect-apps) or\n   * [Forge](https://developer.atlassian.com/cloud/jira/platform/index/#forge-apps) apps can use this operation.\n   */\n  async updateWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters: Parameters.UpdateWorkflowTransitionRuleConfigurations,\n    callback?: never,\n  ): Promise<T>;\n  async updateWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters: Parameters.UpdateWorkflowTransitionRuleConfigurations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflow/rule/config',\n      method: 'PUT',\n      data: {\n        workflows: parameters.workflows,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Deletes workflow transition rules from one or more workflows. These rule types are supported:\n   *\n   * - [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/)\n   * - [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/)\n   * - [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/)\n   *\n   * Only rules created by the calling Connect app can be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can use this operation.\n   */\n  async deleteWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters: Parameters.DeleteWorkflowTransitionRuleConfigurations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Deletes workflow transition rules from one or more workflows. These rule types are supported:\n   *\n   * - [post functions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-post-function/)\n   * - [conditions](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-condition/)\n   * - [validators](https://developer.atlassian.com/cloud/jira/platform/modules/workflow-validator/)\n   *\n   * Only rules created by the calling Connect app can be deleted.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/#permissions) required:** Only\n   * Connect apps can use this operation.\n   */\n  async deleteWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters?: Parameters.DeleteWorkflowTransitionRuleConfigurations,\n    callback?: never,\n  ): Promise<T>;\n  async deleteWorkflowTransitionRuleConfigurations<T = Models.WorkflowTransitionRulesUpdateErrors>(\n    parameters?: Parameters.DeleteWorkflowTransitionRuleConfigurations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/api/3/workflow/rule/config/delete',\n      method: 'PUT',\n      data: {\n        workflows: parameters?.workflows,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import { BaseClient } from '../../clients/baseClient';\nimport { AnnouncementBanner } from '../announcementBanner';\nimport { AppDataPolicies } from '../appDataPolicies';\nimport { AppMigration } from '../appMigration';\nimport { AppProperties } from '../appProperties';\nimport { ApplicationRoles } from '../applicationRoles';\nimport { AuditRecords } from '../auditRecords';\nimport { Avatars } from '../avatars';\nimport { ClassificationLevels } from '../classificationLevels';\nimport { Dashboards } from '../dashboards';\nimport { DynamicModules } from '../dynamicModules';\nimport { FilterSharing } from '../filterSharing';\nimport { Filters } from '../filters';\nimport { GroupAndUserPicker } from '../groupAndUserPicker';\nimport { Groups } from '../groups';\nimport { InstanceInformation } from '../instanceInformation';\nimport { IssueAttachments } from '../issueAttachments';\nimport { IssueBulkOperations } from '../issueBulkOperations';\nimport { IssueCommentProperties } from '../issueCommentProperties';\nimport { IssueComments } from '../issueComments';\nimport { IssueCustomFieldAssociations } from '../issueCustomFieldAssociations';\nimport { IssueCustomFieldConfigurationApps } from '../issueCustomFieldConfigurationApps';\nimport { IssueCustomFieldContexts } from '../issueCustomFieldContexts';\nimport { IssueCustomFieldOptions } from '../issueCustomFieldOptions';\nimport { IssueCustomFieldOptionsApps } from '../issueCustomFieldOptionsApps';\nimport { IssueCustomFieldValuesApps } from '../issueCustomFieldValuesApps';\nimport { IssueFieldConfigurations } from '../issueFieldConfigurations';\nimport { IssueFields } from '../issueFields';\nimport { IssueLinkTypes } from '../issueLinkTypes';\nimport { IssueLinks } from '../issueLinks';\nimport { IssueNavigatorSettings } from '../issueNavigatorSettings';\nimport { IssueNotificationSchemes } from '../issueNotificationSchemes';\nimport { IssuePriorities } from '../issuePriorities';\nimport { IssueProperties } from '../issueProperties';\nimport { IssueRemoteLinks } from '../issueRemoteLinks';\nimport { IssueResolutions } from '../issueResolutions';\nimport { IssueSearch } from '../issueSearch';\nimport { IssueSecurityLevel } from '../issueSecurityLevel';\nimport { IssueSecuritySchemes } from '../issueSecuritySchemes';\nimport { IssueTypeProperties } from '../issueTypeProperties';\nimport { IssueTypeSchemes } from '../issueTypeSchemes';\nimport { IssueTypeScreenSchemes } from '../issueTypeScreenSchemes';\nimport { IssueTypes } from '../issueTypes';\nimport { IssueVotes } from '../issueVotes';\nimport { IssueWatchers } from '../issueWatchers';\nimport { IssueWorklogProperties } from '../issueWorklogProperties';\nimport { IssueWorklogs } from '../issueWorklogs';\nimport { Issues } from '../issues';\nimport { JiraExpressions } from '../jiraExpressions';\nimport { JiraSettings } from '../jiraSettings';\nimport { JQL } from '../jQL';\nimport { JqlFunctionsApps } from '../jqlFunctionsApps';\nimport { Labels } from '../labels';\nimport { LicenseMetrics } from '../licenseMetrics';\nimport { Myself } from '../myself';\nimport { PermissionSchemes } from '../permissionSchemes';\nimport { Plans } from '../plans';\nimport { PrioritySchemes } from '../prioritySchemes';\nimport { Permissions } from '../permissions';\nimport { ProjectAvatars } from '../projectAvatars';\nimport { ProjectCategories } from '../projectCategories';\nimport { ProjectClassificationLevels } from '../projectClassificationLevels';\nimport { ProjectComponents } from '../projectComponents';\nimport { ProjectEmail } from '../projectEmail';\nimport { ProjectFeatures } from '../projectFeatures';\nimport { ProjectKeyAndNameValidation } from '../projectKeyAndNameValidation';\nimport { ProjectPermissionSchemes } from '../projectPermissionSchemes';\nimport { ProjectProperties } from '../projectProperties';\nimport { ProjectRoleActors } from '../projectRoleActors';\nimport { ProjectRoles } from '../projectRoles';\nimport { ProjectTypes } from '../projectTypes';\nimport { ProjectVersions } from '../projectVersions';\nimport { Projects } from '../projects';\nimport { ProjectTemplates } from '../projectTemplates';\nimport { ScreenSchemes } from '../screenSchemes';\nimport { ScreenTabFields } from '../screenTabFields';\nimport { ScreenTabs } from '../screenTabs';\nimport { Screens } from '../screens';\nimport { ServerInfo } from '../serverInfo';\nimport { ServiceRegistry } from '../serviceRegistry';\nimport { Status } from '../status';\nimport { Tasks } from '../tasks';\nimport { TeamsInPlan } from '../teamsInPlan';\nimport { TimeTracking } from '../timeTracking';\nimport { UIModificationsApps } from '../uIModificationsApps';\nimport { UserNavProperties } from '../userNavProperties';\nimport { UserProperties } from '../userProperties';\nimport { UserSearch } from '../userSearch';\nimport { Users } from '../users';\nimport { Webhooks } from '../webhooks';\nimport { Workflows } from '../workflows';\nimport { WorkflowSchemeDrafts } from '../workflowSchemeDrafts';\nimport { WorkflowSchemeProjectAssociations } from '../workflowSchemeProjectAssociations';\nimport { WorkflowSchemes } from '../workflowSchemes';\nimport { WorkflowStatusCategories } from '../workflowStatusCategories';\nimport { WorkflowStatuses } from '../workflowStatuses';\nimport { WorkflowTransitionProperties } from '../workflowTransitionProperties';\nimport { WorkflowTransitionRules } from '../workflowTransitionRules';\n\nexport class Version3Client extends BaseClient {\n  announcementBanner = new AnnouncementBanner(this);\n  appDataPolicies = new AppDataPolicies(this);\n  applicationRoles = new ApplicationRoles(this);\n  appMigration = new AppMigration(this);\n  appProperties = new AppProperties(this);\n  auditRecords = new AuditRecords(this);\n  avatars = new Avatars(this);\n  classificationLevels = new ClassificationLevels(this);\n  dashboards = new Dashboards(this);\n  dynamicModules = new DynamicModules(this);\n  filters = new Filters(this);\n  filterSharing = new FilterSharing(this);\n  groupAndUserPicker = new GroupAndUserPicker(this);\n  groups = new Groups(this);\n  instanceInformation = new InstanceInformation(this);\n  issueAttachments = new IssueAttachments(this);\n  issueBulkOperations = new IssueBulkOperations(this);\n  issueCommentProperties = new IssueCommentProperties(this);\n  issueComments = new IssueComments(this);\n  issueCustomFieldAssociations = new IssueCustomFieldAssociations(this);\n  issueCustomFieldConfigurationApps = new IssueCustomFieldConfigurationApps(this);\n  issueCustomFieldContexts = new IssueCustomFieldContexts(this);\n  issueCustomFieldOptions = new IssueCustomFieldOptions(this);\n  issueCustomFieldOptionsApps = new IssueCustomFieldOptionsApps(this);\n  issueCustomFieldValuesApps = new IssueCustomFieldValuesApps(this);\n  issueFieldConfigurations = new IssueFieldConfigurations(this);\n  issueFields = new IssueFields(this);\n  issueLinks = new IssueLinks(this);\n  issueLinkTypes = new IssueLinkTypes(this);\n  issueNavigatorSettings = new IssueNavigatorSettings(this);\n  issueNotificationSchemes = new IssueNotificationSchemes(this);\n  issuePriorities = new IssuePriorities(this);\n  issueProperties = new IssueProperties(this);\n  issueRemoteLinks = new IssueRemoteLinks(this);\n  issueResolutions = new IssueResolutions(this);\n  issues = new Issues(this);\n  issueSearch = new IssueSearch(this);\n  issueSecurityLevel = new IssueSecurityLevel(this);\n  issueSecuritySchemes = new IssueSecuritySchemes(this);\n  issueTypeProperties = new IssueTypeProperties(this);\n  issueTypes = new IssueTypes(this);\n  issueTypeSchemes = new IssueTypeSchemes(this);\n  issueTypeScreenSchemes = new IssueTypeScreenSchemes(this);\n  issueVotes = new IssueVotes(this);\n  issueWatchers = new IssueWatchers(this);\n  issueWorklogProperties = new IssueWorklogProperties(this);\n  issueWorklogs = new IssueWorklogs(this);\n  jiraExpressions = new JiraExpressions(this);\n  jiraSettings = new JiraSettings(this);\n  jql = new JQL(this);\n  jqlFunctionsApps = new JqlFunctionsApps(this);\n  labels = new Labels(this);\n  licenseMetrics = new LicenseMetrics(this);\n  myself = new Myself(this);\n  permissions = new Permissions(this);\n  permissionSchemes = new PermissionSchemes(this);\n  plans = new Plans(this);\n  prioritySchemes = new PrioritySchemes(this);\n  projectAvatars = new ProjectAvatars(this);\n  projectCategories = new ProjectCategories(this);\n  projectClassificationLevels = new ProjectClassificationLevels(this);\n  projectComponents = new ProjectComponents(this);\n  projectEmail = new ProjectEmail(this);\n  projectFeatures = new ProjectFeatures(this);\n  projectKeyAndNameValidation = new ProjectKeyAndNameValidation(this);\n  projectPermissionSchemes = new ProjectPermissionSchemes(this);\n  projectProperties = new ProjectProperties(this);\n  projectRoleActors = new ProjectRoleActors(this);\n  projectRoles = new ProjectRoles(this);\n  projects = new Projects(this);\n  projectTemplates = new ProjectTemplates(this);\n  projectTypes = new ProjectTypes(this);\n  projectVersions = new ProjectVersions(this);\n  screens = new Screens(this);\n  screenSchemes = new ScreenSchemes(this);\n  screenTabFields = new ScreenTabFields(this);\n  screenTabs = new ScreenTabs(this);\n  serverInfo = new ServerInfo(this);\n  serviceRegistry = new ServiceRegistry(this);\n  status = new Status(this);\n  tasks = new Tasks(this);\n  teamsInPlan = new TeamsInPlan(this);\n  timeTracking = new TimeTracking(this);\n  uiModificationsApps = new UIModificationsApps(this);\n  userNavProperties = new UserNavProperties(this);\n  userProperties = new UserProperties(this);\n  users = new Users(this);\n  userSearch = new UserSearch(this);\n  webhooks = new Webhooks(this);\n  workflows = new Workflows(this);\n  workflowSchemeDrafts = new WorkflowSchemeDrafts(this);\n  workflowSchemeProjectAssociations = new WorkflowSchemeProjectAssociations(this);\n  workflowSchemes = new WorkflowSchemes(this);\n  workflowStatusCategories = new WorkflowStatusCategories(this);\n  workflowStatuses = new WorkflowStatuses(this);\n  workflowTransitionProperties = new WorkflowTransitionProperties(this);\n  workflowTransitionRules = new WorkflowTransitionRules(this);\n}\n","export * from './actorInput';\nexport * from './actorsMap';\nexport * from './addField';\nexport * from './addGroup';\nexport * from './addSecuritySchemeLevelsRequest';\nexport * from './announcementBannerConfiguration';\nexport * from './announcementBannerConfigurationUpdate';\nexport * from './application';\nexport * from './applicationProperty';\nexport * from './applicationRole';\nexport * from './approvalConfiguration';\nexport * from './archiveIssueAsyncRequest';\nexport * from './associatedItem';\nexport * from './associateFieldConfigurationsWithIssueTypesRequest';\nexport * from './associationContextObject';\nexport * from './attachment';\nexport * from './attachmentArchiveEntry';\nexport * from './attachmentArchiveImpl';\nexport * from './attachmentArchiveItemReadable';\nexport * from './attachmentArchiveMetadataReadable';\nexport * from './attachmentMetadata';\nexport * from './attachmentSettings';\nexport * from './auditRecord';\nexport * from './auditRecords';\nexport * from './autoCompleteSuggestion';\nexport * from './autoCompleteSuggestions';\nexport * from './availableDashboardGadget';\nexport * from './availableDashboardGadgetsResponse';\nexport * from './avatar';\nexport * from './avatars';\nexport * from './avatarUrls';\nexport * from './avatarWithDetails';\nexport * from './boardColumnPayload';\nexport * from './boardFeaturePayload';\nexport * from './boardPayload';\nexport * from './boardsPayload';\nexport * from './bulkChangelog';\nexport * from './bulkChangelogRequest';\nexport * from './bulkChangeOwnerDetails';\nexport * from './bulkContextualConfiguration';\nexport * from './bulkCustomFieldOptionCreateRequest';\nexport * from './bulkCustomFieldOptionUpdateRequest';\nexport * from './bulkEditGetFields';\nexport * from './bulkEditShareableEntity';\nexport * from './bulkIssue';\nexport * from './bulkIssueIsWatching';\nexport * from './bulkIssuePropertyUpdateRequest';\nexport * from './bulkOperationErrorResult';\nexport * from './bulkOperationProgress';\nexport * from './bulkPermissionGrants';\nexport * from './bulkPermissionsRequest';\nexport * from './bulkProjectPermissionGrants';\nexport * from './bulkProjectPermissions';\nexport * from './bulkTransitionGetAvailableTransitions';\nexport * from './bulkTransitionSubmitInput';\nexport * from './cardLayout';\nexport * from './cardLayoutField';\nexport * from './changeDetails';\nexport * from './changedValue';\nexport * from './changedWorklog';\nexport * from './changedWorklogs';\nexport * from './changelog';\nexport * from './columnItem';\nexport * from './comment';\nexport * from './component';\nexport * from './componentIssuesCount';\nexport * from './componentWithIssueCount';\nexport * from './conditionGroupConfiguration';\nexport * from './conditionGroupPayload';\nexport * from './configuration';\nexport * from './configurationsListParameters';\nexport * from './connectCustomFieldValue';\nexport * from './connectCustomFieldValues';\nexport * from './connectModule';\nexport * from './connectModules';\nexport * from './connectWorkflowTransitionRule';\nexport * from './containerForProjectFeatures';\nexport * from './containerForRegisteredWebhooks';\nexport * from './containerForWebhookIDs';\nexport * from './containerOfWorkflowSchemeAssociations';\nexport * from './contextForProjectAndIssueType';\nexport * from './contextualConfiguration';\nexport * from './convertedJQLQueries';\nexport * from './createCrossProjectReleaseRequest';\nexport * from './createCustomFieldContext';\nexport * from './createCustomFieldRequest';\nexport * from './createDateFieldRequest';\nexport * from './createdIssue';\nexport * from './createdIssues';\nexport * from './createExclusionRulesRequest';\nexport * from './createIssueSecuritySchemeDetails';\nexport * from './createIssueSourceRequest';\nexport * from './createNotificationSchemeDetails';\nexport * from './createPermissionHolderRequest';\nexport * from './createPermissionRequest';\nexport * from './createPriorityDetails';\nexport * from './createProjectDetails';\nexport * from './createResolutionDetails';\nexport * from './createSchedulingRequest';\nexport * from './createUiModificationDetails';\nexport * from './createUpdateRoleRequest';\nexport * from './createWorkflowCondition';\nexport * from './createWorkflowDetails';\nexport * from './createWorkflowStatusDetails';\nexport * from './createWorkflowTransitionDetails';\nexport * from './createWorkflowTransitionRule';\nexport * from './createWorkflowTransitionRulesDetails';\nexport * from './createWorkflowTransitionScreenDetails';\nexport * from './customContextVariable';\nexport * from './customFieldConfigurations';\nexport * from './customFieldContext';\nexport * from './customFieldContextDefaultValue';\nexport * from './customFieldContextDefaultValueUpdate';\nexport * from './customFieldContextOption';\nexport * from './customFieldContextProjectMapping';\nexport * from './customFieldContextUpdateDetails';\nexport * from './customFieldCreatedContextOptionsList';\nexport * from './customFieldDefinitionJson';\nexport * from './customFieldOption';\nexport * from './customFieldOptionCreate';\nexport * from './customFieldOptionUpdate';\nexport * from './customFieldPayload';\nexport * from './customFieldReplacement';\nexport * from './customFieldUpdatedContextOptionsList';\nexport * from './customFieldValueUpdate';\nexport * from './customFieldValueUpdateRequest';\nexport * from './customTemplateRequest';\nexport * from './customTemplatesProjectDetails';\nexport * from './dashboard';\nexport * from './dashboardDetails';\nexport * from './dashboardGadget';\nexport * from './dashboardGadgetPosition';\nexport * from './dashboardGadgetResponse';\nexport * from './dashboardGadgetSettings';\nexport * from './dashboardGadgetUpdateRequest';\nexport * from './dashboardUser';\nexport * from './dataClassificationLevels';\nexport * from './dataClassificationTag';\nexport * from './dateRangeFilter';\nexport * from './defaultLevelValue';\nexport * from './defaultShareScope';\nexport * from './defaultWorkflow';\nexport * from './deleteAndReplaceVersion';\nexport * from './document';\nexport * from './documentVersion';\nexport * from './enhancedSearchRequest';\nexport * from './entityProperty';\nexport * from './entityPropertyDetails';\nexport * from './error';\nexport * from './errorCollection';\nexport * from './errors';\nexport * from './evaluatedJiraExpression';\nexport * from './evaluateMetaData';\nexport * from './eventNotification';\nexport * from './exportArchivedIssuesTaskProgress';\nexport * from './failedWebhook';\nexport * from './failedWebhooks';\nexport * from './field';\nexport * from './fieldAssociationsRequest';\nexport * from './fieldCapabilityPayload';\nexport * from './fieldConfiguration';\nexport * from './fieldConfigurationDetails';\nexport * from './fieldConfigurationIssueTypeItem';\nexport * from './fieldConfigurationItem';\nexport * from './fieldConfigurationItemsDetails';\nexport * from './fieldConfigurationScheme';\nexport * from './fieldConfigurationSchemeProjectAssociation';\nexport * from './fieldConfigurationSchemeProjects';\nexport * from './fieldConfigurationToIssueTypeMapping';\nexport * from './fieldCreateMetadata';\nexport * from './fieldDetails';\nexport * from './fieldIdentifierObject';\nexport * from './fieldLastUsed';\nexport * from './fieldLayoutConfiguration';\nexport * from './fieldLayoutPayload';\nexport * from './fieldLayoutSchemePayload';\nexport * from './fieldReferenceData';\nexport * from './fields';\nexport * from './filter';\nexport * from './filterDetails';\nexport * from './filterSubscription';\nexport * from './filterSubscriptionsList';\nexport * from './fixVersion';\nexport * from './foundGroup';\nexport * from './foundGroups';\nexport * from './foundUsers';\nexport * from './foundUsersAndGroups';\nexport * from './fromLayoutPayload';\nexport * from './functionReferenceData';\nexport * from './getAtlassianTeamResponse';\nexport * from './getCrossProjectReleaseResponse';\nexport * from './getCustomFieldResponse';\nexport * from './getDateFieldResponse';\nexport * from './getExclusionRulesResponse';\nexport * from './getIssueSourceResponse';\nexport * from './getPermissionHolderResponse';\nexport * from './getPermissionResponse';\nexport * from './getPlanOnlyTeamResponse';\nexport * from './getPlanResponseForPage';\nexport * from './getSchedulingResponse';\nexport * from './getTeamResponseForPage';\nexport * from './globalScope';\nexport * from './group';\nexport * from './groupDetails';\nexport * from './groupLabel';\nexport * from './groupName';\nexport * from './hierarchy';\nexport * from './hierarchyLevel';\nexport * from './historyMetadata';\nexport * from './historyMetadataParticipant';\nexport * from './icon';\nexport * from './id';\nexport * from './idOrKey';\nexport * from './idSearchRequest';\nexport * from './idSearchResults';\nexport * from './includedFields';\nexport * from './issue';\nexport * from './issueArchivalSync';\nexport * from './issueArchivalSyncRequest';\nexport * from './issueBulkDeletePayload';\nexport * from './issueBulkEditField';\nexport * from './issueBulkEditPayload';\nexport * from './issueBulkMovePayload';\nexport * from './issueBulkTransitionForWorkflow';\nexport * from './issueBulkTransitionPayload';\nexport * from './issueBulkWatchOrUnwatchPayload';\nexport * from './issueChangeLog';\nexport * from './issueChangelogIds';\nexport * from './issueCommentListRequest';\nexport * from './issueCreateMetadata';\nexport * from './issueEntityProperties';\nexport * from './issueEntityPropertiesForMultiUpdate';\nexport * from './issueError';\nexport * from './issueEvent';\nexport * from './issueFieldOption';\nexport * from './issueFieldOptionConfiguration';\nexport * from './issueFieldOptionCreate';\nexport * from './issueFieldOptionScope';\nexport * from './issueFilterForBulkPropertyDelete';\nexport * from './issueFilterForBulkPropertySet';\nexport * from './issueLayoutItemPayload';\nexport * from './issueLayoutPayload';\nexport * from './issueLimitReport';\nexport * from './issueLink';\nexport * from './issueLinkType';\nexport * from './issueLinkTypes';\nexport * from './issueList';\nexport * from './issueMatches';\nexport * from './issueMatchesForJQL';\nexport * from './issuePickerSuggestions';\nexport * from './issuePickerSuggestionsIssueType';\nexport * from './issuesAndJQLQueries';\nexport * from './issueSecurityLevelMember';\nexport * from './issueSecuritySchemeToProjectMapping';\nexport * from './issuesJqlMetaData';\nexport * from './issuesMeta';\nexport * from './issuesUpdate';\nexport * from './issueTransition';\nexport * from './issueTransitionStatus';\nexport * from './issueTypeCreate';\nexport * from './issueTypeDetails';\nexport * from './issueTypeHierarchyPayload';\nexport * from './issueTypeIds';\nexport * from './issueTypeIdsToRemove';\nexport * from './issueTypeInfo';\nexport * from './issueTypeIssueCreateMetadata';\nexport * from './issueTypePayload';\nexport * from './issueTypeProjectCreatePayload';\nexport * from './issueTypeScheme';\nexport * from './issueTypeSchemeDetails';\nexport * from './issueTypeSchemeID';\nexport * from './issueTypeSchemeMapping';\nexport * from './issueTypeSchemePayload';\nexport * from './issueTypeSchemeProjectAssociation';\nexport * from './issueTypeSchemeProjects';\nexport * from './issueTypeSchemeUpdateDetails';\nexport * from './issueTypeScreenScheme';\nexport * from './issueTypeScreenSchemeDetails';\nexport * from './issueTypeScreenSchemeId';\nexport * from './issueTypeScreenSchemeItem';\nexport * from './issueTypeScreenSchemeMapping';\nexport * from './issueTypeScreenSchemeMappingDetails';\nexport * from './issueTypeScreenSchemePayload';\nexport * from './issueTypeScreenSchemeProjectAssociation';\nexport * from './issueTypeScreenSchemesProjects';\nexport * from './issueTypeScreenSchemeUpdateDetails';\nexport * from './issueTypesWorkflowMapping';\nexport * from './issueTypeToContextMapping';\nexport * from './issueTypeUpdate';\nexport * from './issueTypeWithStatus';\nexport * from './issueTypeWorkflowMapping';\nexport * from './issueUpdateDetails';\nexport * from './issueUpdateMetadata';\nexport * from './jexpEvaluateCtxIssues';\nexport * from './jexpEvaluateCtxJqlIssues';\nexport * from './jExpEvaluateIssuesJqlMetaData';\nexport * from './jExpEvaluateIssuesMeta';\nexport * from './jexpIssues';\nexport * from './jexpJqlIssues';\nexport * from './jiraCascadingSelectField';\nexport * from './jiraColorField';\nexport * from './jiraColorInput';\nexport * from './jiraComponentField';\nexport * from './jiraDateField';\nexport * from './jiraDateInput';\nexport * from './jiraDateTimeField';\nexport * from './jiraDateTimeInput';\nexport * from './jiraDurationField';\nexport * from './jiraExpressionAnalysis';\nexport * from './jiraExpressionComplexity';\nexport * from './jiraExpressionEvalContext';\nexport * from './jiraExpressionEvalRequest';\nexport * from './jiraExpressionEvaluateContext';\nexport * from './jiraExpressionEvaluationMetaData';\nexport * from './jiraExpressionEvalUsingEnhancedSearchRequest';\nexport * from './jiraExpressionForAnalysis';\nexport * from './jiraExpressionResult';\nexport * from './jiraExpressionsAnalysis';\nexport * from './jiraExpressionsComplexity';\nexport * from './jiraExpressionsComplexityValue';\nexport * from './jiraExpressionValidationError';\nexport * from './jiraGroupInput';\nexport * from './jiraIssueFields';\nexport * from './jiraIssueTypeField';\nexport * from './jiraLabelsField';\nexport * from './jiraLabelsInput';\nexport * from './jiraMultipleGroupPickerField';\nexport * from './jiraMultipleSelectField';\nexport * from './jiraMultipleSelectUserPickerField';\nexport * from './jiraMultipleVersionPickerField';\nexport * from './jiraMultiSelectComponentField';\nexport * from './jiraNumberField';\nexport * from './jiraPriorityField';\nexport * from './jiraRichTextField';\nexport * from './jiraRichTextInput';\nexport * from './jiraSelectedOptionField';\nexport * from './jiraSingleGroupPickerField';\nexport * from './jiraSingleLineTextField';\nexport * from './jiraSingleSelectField';\nexport * from './jiraSingleSelectUserPickerField';\nexport * from './jiraSingleVersionPickerField';\nexport * from './jiraStatus';\nexport * from './jiraTimeTrackingField';\nexport * from './jiraUrlField';\nexport * from './jiraUserField';\nexport * from './jiraVersionField';\nexport * from './jiraWorkflow';\nexport * from './jiraWorkflowStatus';\nexport * from './jqlCount';\nexport * from './jqlCountRequest';\nexport * from './jqlFunctionPrecomputation';\nexport * from './jqlFunctionPrecomputationGetByIdRequest';\nexport * from './jqlFunctionPrecomputationGetByIdResponse';\nexport * from './jqlFunctionPrecomputationUpdate';\nexport * from './jqlFunctionPrecomputationUpdateRequest';\nexport * from './jQLPersonalDataMigrationRequest';\nexport * from './jqlQueriesToParse';\nexport * from './jqlQueriesToSanitize';\nexport * from './jqlQuery';\nexport * from './jqlQueryClause';\nexport * from './jqlQueryField';\nexport * from './jqlQueryFieldEntityProperty';\nexport * from './jqlQueryOrderByClause';\nexport * from './jqlQueryOrderByClauseElement';\nexport * from './jqlQueryToSanitize';\nexport * from './jQLQueryWithUnknownUsers';\nexport * from './jQLReferenceData';\nexport * from './jsonNode';\nexport * from './jsonType';\nexport * from './license';\nexport * from './licensedApplication';\nexport * from './licenseMetric';\nexport * from './linkedIssue';\nexport * from './linkGroup';\nexport * from './linkIssueRequestJson';\nexport * from './listWrapperCallbackApplicationRole';\nexport * from './listWrapperCallbackGroupName';\nexport * from './locale';\nexport * from './mappingsByIssueTypeOverride';\nexport * from './mappingsByWorkflow';\nexport * from './mark';\nexport * from './moveField';\nexport * from './multiIssueEntityProperties';\nexport * from './multipleCustomFieldValuesUpdate';\nexport * from './multipleCustomFieldValuesUpdateDetails';\nexport * from './nestedResponse';\nexport * from './newUserDetails';\nexport * from './nonWorkingDay';\nexport * from './notification';\nexport * from './notificationEvent';\nexport * from './notificationRecipients';\nexport * from './notificationRecipientsRestrictions';\nexport * from './notificationScheme';\nexport * from './notificationSchemeAndProjectMapping';\nexport * from './notificationSchemeAndProjectMappingPage';\nexport * from './notificationSchemeEvent';\nexport * from './notificationSchemeEventDetails';\nexport * from './notificationSchemeEventIDPayload';\nexport * from './notificationSchemeEventPayload';\nexport * from './notificationSchemeEventTypeId';\nexport * from './notificationSchemeId';\nexport * from './notificationSchemeNotificationDetails';\nexport * from './notificationSchemeNotificationDetailsPayload';\nexport * from './notificationSchemePayload';\nexport * from './oldToNewSecurityLevelMappings';\nexport * from './operationMessage';\nexport * from './operations';\nexport * from './orderOfCustomFieldOptions';\nexport * from './orderOfIssueTypes';\nexport * from './pageBulkContextualConfiguration';\nexport * from './pageChangelog';\nexport * from './pageComment';\nexport * from './pageComponentWithIssueCount';\nexport * from './pageContextForProjectAndIssueType';\nexport * from './pageContextualConfiguration';\nexport * from './pageCustomFieldContext';\nexport * from './pageCustomFieldContextDefaultValue';\nexport * from './pageCustomFieldContextOption';\nexport * from './pageCustomFieldContextProjectMapping';\nexport * from './pageDashboard';\nexport * from './pagedListUserDetailsApplicationUser';\nexport * from './pageField';\nexport * from './pageFieldConfigurationIssueTypeItem';\nexport * from './pageFieldConfigurationItem';\nexport * from './pageFieldConfigurationScheme';\nexport * from './pageFieldConfigurationSchemeProjects';\nexport * from './pageFilterDetails';\nexport * from './pageGroupDetails';\nexport * from './pageIssueFieldOption';\nexport * from './pageIssueSecurityLevelMember';\nexport * from './pageIssueSecuritySchemeToProjectMapping';\nexport * from './pageIssueTypeScheme';\nexport * from './pageIssueTypeSchemeMapping';\nexport * from './pageIssueTypeSchemeProjects';\nexport * from './pageIssueTypeScreenScheme';\nexport * from './pageIssueTypeScreenSchemeItem';\nexport * from './pageIssueTypeScreenSchemesProjects';\nexport * from './pageIssueTypeToContextMapping';\nexport * from './pageJqlFunctionPrecomputation';\nexport * from './pageNotificationScheme';\nexport * from './pageOfChangelogs';\nexport * from './pageOfComments';\nexport * from './pageOfCreateMetaIssueTypes';\nexport * from './pageOfCreateMetaIssueTypeWithField';\nexport * from './pageOfDashboards';\nexport * from './pageOfStatuses';\nexport * from './pageOfWorklogs';\nexport * from './pagePriority';\nexport * from './pageProject';\nexport * from './pageProjectDetails';\nexport * from './pageResolution';\nexport * from './pageScreen';\nexport * from './pageScreenScheme';\nexport * from './pageScreenWithTab';\nexport * from './pageSecurityLevel';\nexport * from './pageSecurityLevelMember';\nexport * from './pageSecuritySchemeWithProjects';\nexport * from './pageString';\nexport * from './pageUiModificationDetails';\nexport * from './pageUser';\nexport * from './pageUserDetails';\nexport * from './pageUserKey';\nexport * from './pageVersion';\nexport * from './pageWebhook';\nexport * from './pageWithCursorGetPlanResponseForPage';\nexport * from './pageWithCursorGetTeamResponseForPage';\nexport * from './pageWorkflow';\nexport * from './pageWorkflowScheme';\nexport * from './pageWorkflowTransitionRules';\nexport * from './parsedJqlQueries';\nexport * from './parsedJqlQuery';\nexport * from './permissionDetails';\nexport * from './permissionGrant';\nexport * from './permissionGrantDTO';\nexport * from './permissionGrants';\nexport * from './permissionHolder';\nexport * from './permissionPayload';\nexport * from './permissions';\nexport * from './permissionScheme';\nexport * from './permissionSchemes';\nexport * from './permissionsKeys';\nexport * from './permittedProjects';\nexport * from './plan';\nexport * from './priority';\nexport * from './priorityId';\nexport * from './priorityMapping';\nexport * from './prioritySchemeChangesWithoutMappings';\nexport * from './prioritySchemeId';\nexport * from './prioritySchemeWithPaginatedPrioritiesAndProjects';\nexport * from './priorityWithSequence';\nexport * from './project';\nexport * from './projectAndIssueTypePair';\nexport * from './projectAvatars';\nexport * from './projectCategory';\nexport * from './projectComponent';\nexport * from './projectCreateResourceIdentifier';\nexport * from './projectCustomTemplateCreateRequest';\nexport * from './projectDataPolicies';\nexport * from './projectDataPolicy';\nexport * from './projectDetails';\nexport * from './projectEmailAddress';\nexport * from './projectFeature';\nexport * from './projectFeatureToggleRequest';\nexport * from './projectId';\nexport * from './projectIdentifier';\nexport * from './projectIdentifiers';\nexport * from './projectIds';\nexport * from './projectInsight';\nexport * from './projectIssueCreateMetadata';\nexport * from './projectIssueSecurityLevels';\nexport * from './projectIssueTypeHierarchy';\nexport * from './projectIssueTypeMapping';\nexport * from './projectIssueTypeMappings';\nexport * from './projectIssueTypes';\nexport * from './projectIssueTypesHierarchyLevel';\nexport * from './projectLandingPageInfo';\nexport * from './projectPayload';\nexport * from './projectPermissions';\nexport * from './projectRole';\nexport * from './projectRoleActorsUpdate';\nexport * from './projectRoleDetails';\nexport * from './projectRoleGroup';\nexport * from './projectRoleUser';\nexport * from './projectScope';\nexport * from './projectType';\nexport * from './projectUsage';\nexport * from './projectUsagePage';\nexport * from './projectWithDataPolicy';\nexport * from './propertyKey';\nexport * from './propertyKeys';\nexport * from './publishedWorkflowId';\nexport * from './quickFilterPayload';\nexport * from './registeredWebhook';\nexport * from './remoteIssueLink';\nexport * from './remoteIssueLinkIdentifies';\nexport * from './remoteIssueLinkRequest';\nexport * from './remoteObject';\nexport * from './removeOptionFromIssuesResult';\nexport * from './reorderIssuePriorities';\nexport * from './reorderIssueResolutionsRequest';\nexport * from './requiredMappingByIssueType';\nexport * from './requiredMappingByWorkflows';\nexport * from './resolution';\nexport * from './resolutionId';\nexport * from './restrictedPermission';\nexport * from './richText';\nexport * from './roleActor';\nexport * from './rolePayload';\nexport * from './rolesCapabilityPayload';\nexport * from './ruleConfiguration';\nexport * from './rulePayload';\nexport * from './sanitizedJqlQueries';\nexport * from './sanitizedJqlQuery';\nexport * from './scope';\nexport * from './scopePayload';\nexport * from './screen';\nexport * from './screenableField';\nexport * from './screenableTab';\nexport * from './screenDetails';\nexport * from './screenID';\nexport * from './screenPayload';\nexport * from './screenScheme';\nexport * from './screenSchemeDetails';\nexport * from './screenSchemeId';\nexport * from './screenSchemePayload';\nexport * from './screenTypes';\nexport * from './screenWithTab';\nexport * from './searchAndReconcileResults';\nexport * from './searchAndReconcileResults';\nexport * from './searchAutoCompleteFilter';\nexport * from './searchRequest';\nexport * from './searchResults';\nexport * from './securityLevel';\nexport * from './securityLevelMember';\nexport * from './securityLevelMemberPayload';\nexport * from './securityLevelPayload';\nexport * from './securityScheme';\nexport * from './securitySchemeId';\nexport * from './securitySchemeLevel';\nexport * from './securitySchemeLevelMember';\nexport * from './securitySchemeMembersRequest';\nexport * from './securitySchemePayload';\nexport * from './securitySchemes';\nexport * from './securitySchemeWithProjects';\nexport * from './serverInformation';\nexport * from './serviceRegistry';\nexport * from './serviceRegistryTier';\nexport * from './setDefaultLevelsRequest';\nexport * from './setDefaultPriorityRequest';\nexport * from './setDefaultResolutionRequest';\nexport * from './sharePermission';\nexport * from './sharePermissionInput';\nexport * from './simpleApplicationProperty';\nexport * from './simpleErrorCollection';\nexport * from './simpleLink';\nexport * from './simpleListWrapperApplicationRole';\nexport * from './simpleListWrapperGroupName';\nexport * from './simpleUsage';\nexport * from './simplifiedIssueTransition';\nexport * from './status';\nexport * from './statusCategory';\nexport * from './statusCreate';\nexport * from './statusCreateRequest';\nexport * from './statusDetails';\nexport * from './statusesPerWorkflow';\nexport * from './statusMapping';\nexport * from './statusMetadata';\nexport * from './statusPayload';\nexport * from './statusProjectIssueTypeUsage';\nexport * from './statusProjectIssueTypeUsagePage';\nexport * from './statusProjectUsage';\nexport * from './statusProjectUsagePage';\nexport * from './statusScope';\nexport * from './statusUpdate';\nexport * from './statusUpdateRequest';\nexport * from './statusWorkflowUsage';\nexport * from './statusWorkflowUsagePage';\nexport * from './statusWorkflowUsageWorkflow';\nexport * from './submittedBulkOperation';\nexport * from './suggestedIssue';\nexport * from './suggestedMappingsForPrioritiesRequest';\nexport * from './suggestedMappingsForProjectsRequest';\nexport * from './suggestedMappingsRequest';\nexport * from './swimlanesPayload';\nexport * from './systemAvatars';\nexport * from './tabPayload';\nexport * from './taskProgressNode';\nexport * from './taskProgressObject';\nexport * from './taskProgressRemoveOptionFromIssuesResult';\nexport * from './timeTrackingConfiguration';\nexport * from './timeTrackingDetails';\nexport * from './timeTrackingProvider';\nexport * from './toLayoutPayload';\nexport * from './transition';\nexport * from './transitionPayload';\nexport * from './transitions';\nexport * from './uiModificationContextDetails';\nexport * from './uiModificationDetails';\nexport * from './uiModificationIdentifiers';\nexport * from './unrestrictedUserEmail';\nexport * from './updateCustomFieldDetails';\nexport * from './updateDefaultProjectClassification';\nexport * from './updatedProjectCategory';\nexport * from './updateFieldConfigurationSchemeDetails';\nexport * from './updateIssueSecurityLevelDetails';\nexport * from './updateIssueSecuritySchemeRequest';\nexport * from './updateNotificationSchemeDetails';\nexport * from './updatePrioritiesInSchemeRequest';\nexport * from './updatePriorityDetails';\nexport * from './updatePrioritySchemeRequest';\nexport * from './updatePrioritySchemeResponse';\nexport * from './updateProjectDetails';\nexport * from './updateProjectsInSchemeRequest';\nexport * from './updateResolutionDetails';\nexport * from './updateScreenDetails';\nexport * from './updateScreenSchemeDetails';\nexport * from './updateScreenTypes';\nexport * from './updateUiModificationDetails';\nexport * from './updateUserToGroup';\nexport * from './user';\nexport * from './userAvatarUrls';\nexport * from './userDetails';\nexport * from './userKey';\nexport * from './userList';\nexport * from './userMigration';\nexport * from './userNavProperty';\nexport * from './userPickerUser';\nexport * from './validationOptionsForCreate';\nexport * from './validationOptionsForUpdate';\nexport * from './version';\nexport * from './versionApprover';\nexport * from './versionIssueCounts';\nexport * from './versionIssuesStatus';\nexport * from './versionMove';\nexport * from './versionRelatedWork';\nexport * from './versionUnresolvedIssuesCount';\nexport * from './versionUsageInCustomField';\nexport * from './visibility';\nexport * from './votes';\nexport * from './watchers';\nexport * from './webhook';\nexport * from './webhookDetails';\nexport * from './webhookRegistrationDetails';\nexport * from './webhooksExpirationDate';\nexport * from './workflow';\nexport * from './workflowAssociationStatusMapping';\nexport * from './workflowCapabilities';\nexport * from './workflowCapabilityPayload';\nexport * from './workflowCondition';\nexport * from './workflowCreate';\nexport * from './workflowCreateRequest';\nexport * from './workflowElementReference';\nexport * from './workflowId';\nexport * from './workflowLayout';\nexport * from './workflowMetadataAndIssueTypeRestModel';\nexport * from './workflowMetadataRestModel';\nexport * from './workflowOperations';\nexport * from './workflowPayload';\nexport * from './workflowProjectIssueTypeUsage';\nexport * from './workflowProjectIssueTypeUsagePage';\nexport * from './workflowProjectUsage';\nexport * from './workflowRead';\nexport * from './workflowReferenceStatus';\nexport * from './workflowRuleConfiguration';\nexport * from './workflowRules';\nexport * from './workflowRulesSearch';\nexport * from './workflowRulesSearchDetails';\nexport * from './workflowScheme';\nexport * from './workflowSchemeAssociation';\nexport * from './workflowSchemeAssociations';\nexport * from './workflowSchemeIdName';\nexport * from './workflowSchemePayload';\nexport * from './workflowSchemeProjectAssociation';\nexport * from './workflowSchemeProjectUsage';\nexport * from './workflowSchemeReadRequest';\nexport * from './workflowSchemeReadResponse';\nexport * from './workflowSchemeUpdateRequiredMappingsResponse';\nexport * from './workflowSchemeUsage';\nexport * from './workflowSchemeUsagePage';\nexport * from './workflowScope';\nexport * from './workflowSearchResponse';\nexport * from './workflowStatus';\nexport * from './workflowStatusAndPort';\nexport * from './workflowStatusLayout';\nexport * from './workflowStatusLayoutPayload';\nexport * from './workflowStatusPayload';\nexport * from './workflowStatusProperties';\nexport * from './workflowStatusUpdate';\nexport * from './workflowsWithTransitionRulesDetails';\nexport * from './workflowTransition';\nexport * from './workflowTransitionLinks';\nexport * from './workflowTransitionProperty';\nexport * from './workflowTransitionRule';\nexport * from './workflowTransitionRules';\nexport * from './workflowTransitionRulesDetails';\nexport * from './workflowTransitionRulesUpdate';\nexport * from './workflowTransitionRulesUpdateErrorDetails';\nexport * from './workflowTransitionRulesUpdateErrors';\nexport * from './workflowTransitions';\nexport * from './workflowTrigger';\nexport * from './workflowUpdate';\nexport * from './workflowUpdateRequest';\nexport * from './workflowUpdateValidateRequest';\nexport * from './workflowValidationError';\nexport * from './workflowValidationErrorList';\nexport * from './workingDaysConfig';\nexport * from './worklog';\nexport * from './worklogIdsRequest';\nexport * from './worklogsMoveRequest';\nexport * from './workspaceDataPolicy';\n","export * from './addActorUsers';\nexport * from './addAtlassianTeam';\nexport * from './addAttachment';\nexport * from './addComment';\nexport * from './addFieldToDefaultScreen';\nexport * from './addGadget';\nexport * from './addIssueTypesToContext';\nexport * from './addIssueTypesToIssueTypeScheme';\nexport * from './addNotifications';\nexport * from './addProjectRoleActorsToRole';\nexport * from './addScreenTab';\nexport * from './addScreenTabField';\nexport * from './addSecurityLevel';\nexport * from './addSecurityLevelMembers';\nexport * from './addSharePermission';\nexport * from './addUserToGroup';\nexport * from './addVote';\nexport * from './addWatcher';\nexport * from './addWorklog';\nexport * from './analyseExpression';\nexport * from './appendMappingsForIssueTypeScreenScheme';\nexport * from './archiveIssues';\nexport * from './archiveIssuesAsync';\nexport * from './archivePlan';\nexport * from './archiveProject';\nexport * from './assignFieldConfigurationSchemeToProject';\nexport * from './assignIssue';\nexport * from './assignIssueTypeSchemeToProject';\nexport * from './assignIssueTypeScreenSchemeToProject';\nexport * from './assignPermissionScheme';\nexport * from './assignProjectsToCustomFieldContext';\nexport * from './assignSchemeToProject';\nexport * from './associateSchemesToProjects';\nexport * from './bulkDeleteIssueProperty';\nexport * from './bulkDeleteWorklogs';\nexport * from './bulkEditDashboards';\nexport * from './bulkFetchIssues';\nexport * from './bulkGetGroups';\nexport * from './bulkGetUsers';\nexport * from './bulkGetUsersMigration';\nexport * from './bulkMoveWorklogs';\nexport * from './bulkSetIssuePropertiesByIssue';\nexport * from './bulkSetIssueProperty';\nexport * from './bulkSetIssuesProperties';\nexport * from './cancelTask';\nexport * from './changeFilterOwner';\nexport * from './copyDashboard';\nexport * from './countIssues';\nexport * from './createAssociations';\nexport * from './createComponent';\nexport * from './createCustomField';\nexport * from './createCustomFieldContext';\nexport * from './createCustomFieldOption';\nexport * from './createDashboard';\nexport * from './createFieldConfiguration';\nexport * from './createFieldConfigurationScheme';\nexport * from './createFilter';\nexport * from './createGroup';\nexport * from './createIssue';\nexport * from './createIssueFieldOption';\nexport * from './createIssueLinkType';\nexport * from './createIssues';\nexport * from './createIssueSecurityScheme';\nexport * from './createIssueType';\nexport * from './createIssueTypeAvatar';\nexport * from './createIssueTypeScheme';\nexport * from './createIssueTypeScreenScheme';\nexport * from './createNotificationScheme';\nexport * from './createOrUpdateRemoteIssueLink';\nexport * from './createPermissionGrant';\nexport * from './createPermissionScheme';\nexport * from './createPlan';\nexport * from './createPlanOnlyTeam';\nexport * from './createPriority';\nexport * from './createPriorityScheme';\nexport * from './createProject';\nexport * from './createProjectAvatar';\nexport * from './createProjectCategory';\nexport * from './createProjectRole';\nexport * from './createProjectWithCustomTemplate';\nexport * from './createRelatedWork';\nexport * from './createResolution';\nexport * from './createScreen';\nexport * from './createScreenScheme';\nexport * from './createStatuses';\nexport * from './createUiModification';\nexport * from './createUser';\nexport * from './createVersion';\nexport * from './createWorkflow';\nexport * from './createWorkflows';\nexport * from './createWorkflowScheme';\nexport * from './createWorkflowSchemeDraftFromParent';\nexport * from './createWorkflowTransitionProperty';\nexport * from './deleteActor';\nexport * from './deleteAddonProperty';\nexport * from './deleteAndReplaceVersion';\nexport * from './deleteAppProperty';\nexport * from './deleteAvatar';\nexport * from './deleteComment';\nexport * from './deleteCommentProperty';\nexport * from './deleteComponent';\nexport * from './deleteCustomField';\nexport * from './deleteCustomFieldContext';\nexport * from './deleteCustomFieldOption';\nexport * from './deleteDashboard';\nexport * from './deleteDashboardItemProperty';\nexport * from './deleteDefaultWorkflow';\nexport * from './deleteDraftDefaultWorkflow';\nexport * from './deleteDraftWorkflowMapping';\nexport * from './deleteFavouriteForFilter';\nexport * from './deleteFieldConfiguration';\nexport * from './deleteFieldConfigurationScheme';\nexport * from './deleteFilter';\nexport * from './deleteInactiveWorkflow';\nexport * from './deleteIssue';\nexport * from './deleteIssueFieldOption';\nexport * from './deleteIssueLink';\nexport * from './deleteIssueLinkType';\nexport * from './deleteIssueProperty';\nexport * from './deleteIssueType';\nexport * from './deleteIssueTypeProperty';\nexport * from './deleteIssueTypeScheme';\nexport * from './deleteIssueTypeScreenScheme';\nexport * from './deleteNotificationScheme';\nexport * from './deletePermissionScheme';\nexport * from './deletePermissionSchemeEntity';\nexport * from './deletePlanOnlyTeam';\nexport * from './deletePriority';\nexport * from './deletePriorityScheme';\nexport * from './deleteProject';\nexport * from './deleteProjectAsynchronously';\nexport * from './deleteProjectAvatar';\nexport * from './deleteProjectProperty';\nexport * from './deleteProjectRole';\nexport * from './deleteProjectRoleActorsFromRole';\nexport * from './deleteRelatedWork';\nexport * from './deleteRemoteIssueLinkByGlobalId';\nexport * from './deleteRemoteIssueLinkById';\nexport * from './deleteResolution';\nexport * from './deleteScreen';\nexport * from './deleteScreenScheme';\nexport * from './deleteScreenTab';\nexport * from './deleteSecurityScheme';\nexport * from './deleteSharePermission';\nexport * from './deleteStatusesById';\nexport * from './deleteUiModification';\nexport * from './deleteUserProperty';\nexport * from './deleteWebhookById';\nexport * from './deleteWorkflowMapping';\nexport * from './deleteWorkflowScheme';\nexport * from './deleteWorkflowSchemeDraft';\nexport * from './deleteWorkflowSchemeDraftIssueType';\nexport * from './deleteWorkflowSchemeIssueType';\nexport * from './deleteWorkflowTransitionProperty';\nexport * from './deleteWorkflowTransitionRuleConfigurations';\nexport * from './deleteWorklog';\nexport * from './deleteWorklogProperty';\nexport * from './doTransition';\nexport * from './duplicatePlan';\nexport * from './editIssue';\nexport * from './evaluateJiraExpression';\nexport * from './evaluateJiraExpressionUsingEnhancedSearch';\nexport * from './expandAttachmentForHumans';\nexport * from './expandAttachmentForMachines';\nexport * from './exportArchivedIssues';\nexport * from './findAssignableUsers';\nexport * from './findBulkAssignableUsers';\nexport * from './findComponentsForProjects';\nexport * from './findGroups';\nexport * from './findUserKeysByQuery';\nexport * from './findUsers';\nexport * from './findUsersAndGroups';\nexport * from './findUsersByQuery';\nexport * from './findUsersForPicker';\nexport * from './findUsersWithAllPermissions';\nexport * from './findUsersWithBrowsePermission';\nexport * from './fullyUpdateProjectRole';\nexport * from './getAccessibleProjectTypeByKey';\nexport * from './getAddonProperties';\nexport * from './getAddonProperty';\nexport * from './getAllDashboards';\nexport * from './getAllFieldConfigurations';\nexport * from './getAllFieldConfigurationSchemes';\nexport * from './getAllGadgets';\nexport * from './getAllIssueFieldOptions';\nexport * from './getAllIssueTypeSchemes';\nexport * from './getAllLabels';\nexport * from './getAllPermissionSchemes';\nexport * from './getAllProjectAvatars';\nexport * from './getAllScreenTabFields';\nexport * from './getAllScreenTabs';\nexport * from './getAllStatuses';\nexport * from './getAllSystemAvatars';\nexport * from './getAllUserDataClassificationLevels';\nexport * from './getAllUsers';\nexport * from './getAllUsersDefault';\nexport * from './getAllWorkflowSchemes';\nexport * from './getAlternativeIssueTypes';\nexport * from './getApplicationProperty';\nexport * from './getApplicationRole';\nexport * from './getAssignedPermissionScheme';\nexport * from './getAtlassianTeam';\nexport * from './getAttachment';\nexport * from './getAttachmentContent';\nexport * from './getAttachmentThumbnail';\nexport * from './getAuditRecords';\nexport * from './getAutoCompletePost';\nexport * from './getAvailablePrioritiesByPriorityScheme';\nexport * from './getAvailableScreenFields';\nexport * from './getAvailableTransitions';\nexport * from './getAvatarImageByID';\nexport * from './getAvatarImageByOwner';\nexport * from './getAvatarImageByType';\nexport * from './getAvatars';\nexport * from './getBulkChangelogs';\nexport * from './getBulkEditableFields';\nexport * from './getBulkOperationProgress';\nexport * from './getBulkPermissions';\nexport * from './getBulkScreenTabs';\nexport * from './getChangeLogs';\nexport * from './getChangeLogsByIds';\nexport * from './getColumns';\nexport * from './getComment';\nexport * from './getCommentProperty';\nexport * from './getCommentPropertyKeys';\nexport * from './getComments';\nexport * from './getCommentsByIds';\nexport * from './getComponent';\nexport * from './getComponentRelatedIssues';\nexport * from './getContextsForField';\nexport * from './getCreateIssueMeta';\nexport * from './getCreateIssueMetaIssueTypeId';\nexport * from './getCreateIssueMetaIssueTypes';\nexport * from './getCurrentUser';\nexport * from './getCustomFieldConfiguration';\nexport * from './getCustomFieldContextsForProjectsAndIssueTypes';\nexport * from './getCustomFieldOption';\nexport * from './getCustomFieldsConfigurations';\nexport * from './getDashboard';\nexport * from './getDashboardItemProperty';\nexport * from './getDashboardItemPropertyKeys';\nexport * from './getDashboardsPaginated';\nexport * from './getDefaultProjectClassification';\nexport * from './getDefaultValues';\nexport * from './getDefaultWorkflow';\nexport * from './getDraftDefaultWorkflow';\nexport * from './getDraftWorkflow';\nexport * from './getDynamicWebhooksForApp';\nexport * from './getEditIssueMeta';\nexport * from './getFailedWebhooks';\nexport * from './getFavouriteFilters';\nexport * from './getFeaturesForProject';\nexport * from './getFieldAutoCompleteForQueryString';\nexport * from './getFieldConfigurationItems';\nexport * from './getFieldConfigurationSchemeMappings';\nexport * from './getFieldConfigurationSchemeProjectMapping';\nexport * from './getFieldsPaginated';\nexport * from './getFilter';\nexport * from './getFiltersPaginated';\nexport * from './getHierarchy';\nexport * from './getIdsOfWorklogsDeletedSince';\nexport * from './getIdsOfWorklogsModifiedSince';\nexport * from './getIssue';\nexport * from './getIssueFieldOption';\nexport * from './getIssueLimitReport';\nexport * from './getIssueLink';\nexport * from './getIssueLinkType';\nexport * from './getIssuePickerResource';\nexport * from './getIssueProperty';\nexport * from './getIssuePropertyKeys';\nexport * from './getIssueSecurityLevel';\nexport * from './getIssueSecurityLevelMembers';\nexport * from './getIssueSecurityScheme';\nexport * from './getIssueType';\nexport * from './getIssueTypeMappingsForContexts';\nexport * from './getIssueTypeProperty';\nexport * from './getIssueTypePropertyKeys';\nexport * from './getIssueTypeSchemeForProjects';\nexport * from './getIssueTypeSchemesMapping';\nexport * from './getIssueTypeScreenSchemeMappings';\nexport * from './getIssueTypeScreenSchemeProjectAssociations';\nexport * from './getIssueTypeScreenSchemes';\nexport * from './getIssueTypesForProject';\nexport * from './getIssueWatchers';\nexport * from './getIssueWorklog';\nexport * from './getIsWatchingIssueBulk';\nexport * from './getMyFilters';\nexport * from './getMyPermissions';\nexport * from './getNotificationScheme';\nexport * from './getNotificationSchemeForProject';\nexport * from './getNotificationSchemes';\nexport * from './getNotificationSchemeToProjectMappings';\nexport * from './getOptionsForContext';\nexport * from './getPermissionScheme';\nexport * from './getPermissionSchemeGrant';\nexport * from './getPermissionSchemeGrants';\nexport * from './getPermittedProjects';\nexport * from './getPlan';\nexport * from './getPlanOnlyTeam';\nexport * from './getPlans';\nexport * from './getPolicies';\nexport * from './getPrecomputations';\nexport * from './getPrecomputationsByID';\nexport * from './getPreference';\nexport * from './getPrioritiesByPriorityScheme';\nexport * from './getPriority';\nexport * from './getPrioritySchemes';\nexport * from './getProject';\nexport * from './getProjectCategoryById';\nexport * from './getProjectComponents';\nexport * from './getProjectComponentsPaginated';\nexport * from './getProjectContextMapping';\nexport * from './getProjectEmail';\nexport * from './getProjectIssueSecurityScheme';\nexport * from './getProjectIssueTypeUsagesForStatus';\nexport * from './getProjectProperty';\nexport * from './getProjectPropertyKeys';\nexport * from './getProjectRole';\nexport * from './getProjectRoleActorsForRole';\nexport * from './getProjectRoleById';\nexport * from './getProjectRoleDetails';\nexport * from './getProjectRoles';\nexport * from './getProjectsByPriorityScheme';\nexport * from './getProjectsForIssueTypeScreenScheme';\nexport * from './getProjectTypeByKey';\nexport * from './getProjectUsagesForStatus';\nexport * from './getProjectUsagesForWorkflow';\nexport * from './getProjectUsagesForWorkflowScheme';\nexport * from './getProjectVersions';\nexport * from './getProjectVersionsPaginated';\nexport * from './getRecent';\nexport * from './getRelatedWork';\nexport * from './getRemoteIssueLinkById';\nexport * from './getRemoteIssueLinks';\nexport * from './getResolution';\nexport * from './getScreens';\nexport * from './getScreenSchemes';\nexport * from './getScreensForField';\nexport * from './getSecurityLevelMembers';\nexport * from './getSecurityLevels';\nexport * from './getSecurityLevelsForProject';\nexport * from './getSelectableIssueFieldOptions';\nexport * from './getSharePermission';\nexport * from './getSharePermissions';\nexport * from './getStatus';\nexport * from './getStatusCategory';\nexport * from './getStatusesById';\nexport * from './getTask';\nexport * from './getTeams';\nexport * from './getTransitions';\nexport * from './getTrashedFieldsPaginated';\nexport * from './getUiModifications';\nexport * from './getUser';\nexport * from './getUserDefaultColumns';\nexport * from './getUserEmail';\nexport * from './getUserEmailBulk';\nexport * from './getUserGroups';\nexport * from './getUserNavProperty';\nexport * from './getUserProperty';\nexport * from './getUserPropertyKeys';\nexport * from './getUsersFromGroup';\nexport * from './getValidProjectKey';\nexport * from './getValidProjectName';\nexport * from './getVersion';\nexport * from './getVersionRelatedIssues';\nexport * from './getVersionUnresolvedIssues';\nexport * from './getVisibleIssueFieldOptions';\nexport * from './getVotes';\nexport * from './getWorkflow';\nexport * from './getWorkflowProjectIssueTypeUsages';\nexport * from './getWorkflowScheme';\nexport * from './getWorkflowSchemeDraft';\nexport * from './getWorkflowSchemeDraftIssueType';\nexport * from './getWorkflowSchemeIssueType';\nexport * from './getWorkflowSchemeProjectAssociations';\nexport * from './getWorkflowSchemeUsagesForWorkflow';\nexport * from './getWorkflowsPaginated';\nexport * from './getWorkflowTransitionProperties';\nexport * from './getWorkflowTransitionRuleConfigurations';\nexport * from './getWorkflowUsagesForStatus';\nexport * from './getWorklog';\nexport * from './getWorklogProperty';\nexport * from './getWorklogPropertyKeys';\nexport * from './getWorklogsForIds';\nexport * from './linkIssues';\nexport * from './matchIssues';\nexport * from './mergeVersions';\nexport * from './migrateQueries';\nexport * from './movePriorities';\nexport * from './moveResolutions';\nexport * from './moveScreenTab';\nexport * from './moveScreenTabField';\nexport * from './moveVersion';\nexport * from './notify';\nexport * from './parseJqlQueries';\nexport * from './partialUpdateProjectRole';\nexport * from './publishDraftWorkflowScheme';\nexport * from './putAddonProperty';\nexport * from './putAppProperty';\nexport * from './readWorkflows';\nexport * from './readWorkflowSchemes';\nexport * from './refreshWebhooks';\nexport * from './registerDynamicWebhooks';\nexport * from './registerModules';\nexport * from './removeAssociations';\nexport * from './removeAtlassianTeam';\nexport * from './removeAttachment';\nexport * from './removeCustomFieldContextFromProjects';\nexport * from './removeDefaultProjectClassification';\nexport * from './removeGadget';\nexport * from './removeGroup';\nexport * from './removeIssueTypeFromIssueTypeScheme';\nexport * from './removeIssueTypesFromContext';\nexport * from './removeIssueTypesFromGlobalFieldConfigurationScheme';\nexport * from './removeLevel';\nexport * from './removeMappingsFromIssueTypeScreenScheme';\nexport * from './removeMemberFromSecurityLevel';\nexport * from './removeModules';\nexport * from './removeNotificationFromNotificationScheme';\nexport * from './removePreference';\nexport * from './removeProjectCategory';\nexport * from './removeScreenTabField';\nexport * from './removeUser';\nexport * from './removeUserFromGroup';\nexport * from './removeVote';\nexport * from './removeWatcher';\nexport * from './renameScreenTab';\nexport * from './reorderCustomFieldOptions';\nexport * from './reorderIssueTypesInIssueTypeScheme';\nexport * from './replaceCustomFieldOption';\nexport * from './replaceIssueFieldOption';\nexport * from './resetColumns';\nexport * from './resetUserColumns';\nexport * from './restore';\nexport * from './restoreCustomField';\nexport * from './sanitiseJqlQueries';\nexport * from './search';\nexport * from './searchForIssuesIds';\nexport * from './searchForIssuesUsingJql';\nexport * from './searchForIssuesUsingJqlEnhancedSearch';\nexport * from './searchForIssuesUsingJqlEnhancedSearchPost';\nexport * from './searchForIssuesUsingJqlPost';\nexport * from './searchPriorities';\nexport * from './searchProjects';\nexport * from './searchProjectsUsingSecuritySchemes';\nexport * from './searchResolutions';\nexport * from './searchSecuritySchemes';\nexport * from './searchWorkflows';\nexport * from './selectTimeTrackingImplementation';\nexport * from './services';\nexport * from './setActors';\nexport * from './setApplicationProperty';\nexport * from './setBanner';\nexport * from './setColumns';\nexport * from './setCommentProperty';\nexport * from './setDashboardItemProperty';\nexport * from './setDefaultLevels';\nexport * from './setDefaultPriority';\nexport * from './setDefaultResolution';\nexport * from './setDefaultShareScope';\nexport * from './setDefaultValues';\nexport * from './setFavouriteForFilter';\nexport * from './setFieldConfigurationSchemeMapping';\nexport * from './setIssueProperty';\nexport * from './setIssueTypeProperty';\nexport * from './setPreference';\nexport * from './setProjectProperty';\nexport * from './setSharedTimeTrackingConfiguration';\nexport * from './setUserColumns';\nexport * from './setUserNavProperty';\nexport * from './setUserProperty';\nexport * from './setWorkflowSchemeDraftIssueType';\nexport * from './setWorkflowSchemeIssueType';\nexport * from './setWorklogProperty';\nexport * from './storeAvatar';\nexport * from './submitBulkDelete';\nexport * from './submitBulkEdit';\nexport * from './submitBulkMove';\nexport * from './submitBulkTransition';\nexport * from './submitBulkUnwatch';\nexport * from './submitBulkWatch';\nexport * from './suggestedPrioritiesForMappings';\nexport * from './toggleFeatureForProject';\nexport * from './trashCustomField';\nexport * from './trashPlan';\nexport * from './unarchiveIssues';\nexport * from './updateAtlassianTeam';\nexport * from './updateComment';\nexport * from './updateComponent';\nexport * from './updateCustomField';\nexport * from './updateCustomFieldConfiguration';\nexport * from './updateCustomFieldContext';\nexport * from './updateCustomFieldOption';\nexport * from './updateCustomFieldValue';\nexport * from './updateDashboard';\nexport * from './updateDefaultProjectClassification';\nexport * from './updateDefaultScreenScheme';\nexport * from './updateDefaultWorkflow';\nexport * from './updateDraftDefaultWorkflow';\nexport * from './updateDraftWorkflowMapping';\nexport * from './updateEntityPropertiesValue';\nexport * from './updateFieldConfiguration';\nexport * from './updateFieldConfigurationItems';\nexport * from './updateFieldConfigurationScheme';\nexport * from './updateFilter';\nexport * from './updateGadget';\nexport * from './updateIssueFieldOption';\nexport * from './updateIssueFields';\nexport * from './updateIssueLinkType';\nexport * from './updateIssueSecurityScheme';\nexport * from './updateIssueType';\nexport * from './updateIssueTypeScheme';\nexport * from './updateIssueTypeScreenScheme';\nexport * from './updateMultipleCustomFieldValues';\nexport * from './updateNotificationScheme';\nexport * from './updatePermissionScheme';\nexport * from './updatePlan';\nexport * from './updatePlanOnlyTeam';\nexport * from './updatePrecomputations';\nexport * from './updatePriority';\nexport * from './updatePriorityScheme';\nexport * from './updateProject';\nexport * from './updateProjectAvatar';\nexport * from './updateProjectCategory';\nexport * from './updateProjectEmail';\nexport * from './updateRelatedWork';\nexport * from './updateRemoteIssueLink';\nexport * from './updateResolution';\nexport * from './updateSchemes';\nexport * from './updateScreen';\nexport * from './updateScreenScheme';\nexport * from './updateSecurityLevel';\nexport * from './updateStatuses';\nexport * from './updateUiModification';\nexport * from './updateVersion';\nexport * from './updateWorkflowMapping';\nexport * from './updateWorkflows';\nexport * from './updateWorkflowScheme';\nexport * from './updateWorkflowSchemeDraft';\nexport * from './updateWorkflowSchemeMappings';\nexport * from './updateWorkflowTransitionProperty';\nexport * from './updateWorkflowTransitionRuleConfigurations';\nexport * from './updateWorklog';\nexport * from './validateCreateWorkflows';\nexport * from './validateProjectKey';\nexport * from './validateUpdateWorkflows';\nexport * from './workflowCapabilities';\nexport * from './workflowRuleSearch';\n","export * from './customer';\nexport * from './info';\nexport * from './insight';\nexport * from './knowledgeBase';\nexport * from './organization';\nexport * from './request';\nexport * from './requestType';\nexport * from './serviceDesk';\n\nexport * as ServiceDeskModels from './models';\nexport * as ServiceDeskParameters from './parameters';\nexport * from './client';\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Callback } from '../callback';\nimport type { Client } from '../clients';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Customer {\n  constructor(private client: Client) {}\n\n  /**\n   * This method adds a customer to the Jira Service Management instance by passing a JSON file including an email\n   * address and display name. The display name does not need to be unique. The record's identifiers, `name` and `key`,\n   * are automatically generated from the request details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Jira\n   * Administrator Global permission\n   */\n  async createCustomer<T = Models.User>(\n    parameters: Parameters.CreateCustomer | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method adds a customer to the Jira Service Management instance by passing a JSON file including an email\n   * address and display name. The display name does not need to be unique. The record's identifiers, `name` and `key`,\n   * are automatically generated from the request details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Jira\n   * Administrator Global permission\n   */\n  async createCustomer<T = Models.User>(parameters?: Parameters.CreateCustomer, callback?: never): Promise<T>;\n  async createCustomer<T = Models.User>(\n    parameters?: Parameters.CreateCustomer,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/servicedeskapi/customer',\n      method: 'POST',\n      data: {\n        email: parameters?.email,\n        displayName: parameters?.displayName,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type { Callback } from '../callback';\nimport type { Client } from '../clients';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Info {\n  constructor(private client: Client) {}\n\n  /**\n   * This method retrieves information about the Jira Service Management instance such as software version, builds, and\n   * related links.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: None,\n   * the user does not need to be logged in.\n   */\n  async getInfo<T = Models.SoftwareInfo>(callback: Callback<T>): Promise<void>;\n  /**\n   * This method retrieves information about the Jira Service Management instance such as software version, builds, and\n   * related links.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: None,\n   * the user does not need to be logged in.\n   */\n  async getInfo<T = Models.SoftwareInfo>(callback?: never): Promise<T>;\n  async getInfo<T = Models.SoftwareInfo>(callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/servicedeskapi/info',\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Callback } from '../callback';\nimport type { Client } from '../clients';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Insight {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns a list of Insight workspace IDs. Include a workspace ID in the path to access the [Insight REST\n   * APIs](https://developer.atlassian.com/cloud/insight/rest).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   */\n  async getInsightWorkspaces<T = Models.PagedInsightWorkspace>(\n    parameters: Parameters.GetInsightWorkspaces | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns a list of Insight workspace IDs. Include a workspace ID in the path to access the [Insight REST\n   * APIs](https://developer.atlassian.com/cloud/insight/rest).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   */\n  async getInsightWorkspaces<T = Models.PagedInsightWorkspace>(\n    parameters?: Parameters.GetInsightWorkspaces,\n    callback?: never,\n  ): Promise<T>;\n  async getInsightWorkspaces<T = Models.PagedInsightWorkspace>(\n    parameters?: Parameters.GetInsightWorkspaces,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/servicedeskapi/insight/workspace',\n      method: 'GET',\n      params: {\n        start: parameters?.start,\n        limit: parameters?.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Callback } from '../callback';\nimport type { Client } from '../clients';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class KnowledgeBase {\n  constructor(private client: Client) {}\n\n  /**\n   * Returns articles which match the given query string across all service desks.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the [customer\n   * portal](https://confluence.atlassian.com/servicedeskcloud/configuring-the-customer-portal-732528918.html).\n   */\n  async getArticles<T = Models.PagedArticle>(parameters: Parameters.GetArticles, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns articles which match the given query string across all service desks.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the [customer\n   * portal](https://confluence.atlassian.com/servicedeskcloud/configuring-the-customer-portal-732528918.html).\n   */\n  async getArticles<T = Models.PagedArticle>(parameters: Parameters.GetArticles, callback?: never): Promise<T>;\n  async getArticles<T = Models.PagedArticle>(\n    parameters: Parameters.GetArticles,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/servicedeskapi/knowledgebase/article',\n      method: 'GET',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n      params: {\n        query: parameters.query,\n        highlight: parameters.highlight,\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Callback } from '../callback';\nimport type { Client } from '../clients';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Organization {\n  constructor(private client: Client) {}\n\n  /**\n   * This method returns a list of organizations in the Jira Service Management instance. Use this method when you want\n   * to present a list of organizations or want to locate an organization by name.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any.\n   * However, to fetch organizations based on `accountId` the user must have a Service Desk agent license.\n   *\n   * **Response limitations**: If the user is a customer, only those organizations of which the customer is a member are\n   * listed.\n   */\n  async getOrganizations<T = Models.PagedOrganization>(\n    parameters: Parameters.GetOrganizations | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns a list of organizations in the Jira Service Management instance. Use this method when you want\n   * to present a list of organizations or want to locate an organization by name.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any.\n   * However, to fetch organizations based on `accountId` the user must have a Service Desk agent license.\n   *\n   * **Response limitations**: If the user is a customer, only those organizations of which the customer is a member are\n   * listed.\n   */\n  async getOrganizations<T = Models.PagedOrganization>(\n    parameters?: Parameters.GetOrganizations,\n    callback?: never,\n  ): Promise<T>;\n  async getOrganizations<T = Models.PagedOrganization>(\n    parameters?: Parameters.GetOrganizations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/servicedeskapi/organization',\n      method: 'GET',\n      params: {\n        start: parameters?.start,\n        limit: parameters?.limit,\n        accountId: parameters?.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method creates an organization by passing the name of the organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator or agent. Note: Permission to create organizations can be switched to users with the\n   * Jira administrator permission, using the **[Organization\n   * management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)**\n   * feature.\n   */\n  async createOrganization<T = Models.Organization>(\n    parameters: Parameters.CreateOrganization | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method creates an organization by passing the name of the organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator or agent. Note: Permission to create organizations can be switched to users with the\n   * Jira administrator permission, using the **[Organization\n   * management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)**\n   * feature.\n   */\n  async createOrganization<T = Models.Organization>(\n    parameters?: Parameters.CreateOrganization,\n    callback?: never,\n  ): Promise<T>;\n  async createOrganization<T = Models.Organization>(\n    parameters?: Parameters.CreateOrganization,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/servicedeskapi/organization',\n      method: 'POST',\n      data: {\n        name: parameters?.name,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns details of an organization. Use this method to get organization details whenever your\n   * application component is passed an organization ID but needs to display other organization details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   *\n   * **Response limitations**: Customers can only retrieve organization of which they are members.\n   */\n  async getOrganization<T = Models.Organization>(\n    parameters: Parameters.GetOrganization,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns details of an organization. Use this method to get organization details whenever your\n   * application component is passed an organization ID but needs to display other organization details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   *\n   * **Response limitations**: Customers can only retrieve organization of which they are members.\n   */\n  async getOrganization<T = Models.Organization>(parameters: Parameters.GetOrganization, callback?: never): Promise<T>;\n  async getOrganization<T = Models.Organization>(\n    parameters: Parameters.GetOrganization,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/organization/${parameters.organizationId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method deletes an organization. Note that the organization is deleted regardless of other associations it may\n   * have. For example, associations with service desks.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Jira\n   * administrator.\n   */\n  async deleteOrganization<T = void>(parameters: Parameters.DeleteOrganization, callback: Callback<T>): Promise<void>;\n  /**\n   * This method deletes an organization. Note that the organization is deleted regardless of other associations it may\n   * have. For example, associations with service desks.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Jira\n   * administrator.\n   */\n  async deleteOrganization<T = void>(parameters: Parameters.DeleteOrganization, callback?: never): Promise<T>;\n  async deleteOrganization<T = void>(\n    parameters: Parameters.DeleteOrganization,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/organization/${parameters.organizationId}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the keys of all properties for an organization. Use this resource when you need to find out what additional\n   * properties items have been added to an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   *\n   * **Response limitations**: Customers can only access properties of organizations of which they are members.\n   */\n  async getPropertiesKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetOrganizationPropertyKeys,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all properties for an organization. Use this resource when you need to find out what additional\n   * properties items have been added to an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   *\n   * **Response limitations**: Customers can only access properties of organizations of which they are members.\n   */\n  async getPropertiesKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetOrganizationPropertyKeys,\n    callback?: never,\n  ): Promise<T>;\n  async getPropertiesKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetOrganizationPropertyKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/organization/${parameters.organizationId}/property`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of a property from an organization. Use this method to obtain the JSON content for an\n   * organization's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   *\n   * **Response limitations**: Customers can only access properties of organizations of which they are members.\n   */\n  async getProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetOrganizationProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of a property from an organization. Use this method to obtain the JSON content for an\n   * organization's property.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   *\n   * **Response limitations**: Customers can only access properties of organizations of which they are members.\n   */\n  async getProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetOrganizationProperty,\n    callback?: never,\n  ): Promise<T>;\n  async getProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetOrganizationProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/organization/${parameters.organizationId}/property/${parameters.propertyKey}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a property for an organization. Use this resource to store custom data against an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service Desk Administrator or Agent.\n   *\n   * Note: Permission to manage organizations can be switched to users with the Jira administrator permission, using the\n   * **[Organization\n   * management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)**\n   * feature.\n   */\n  async setProperty<T = unknown>(parameters: Parameters.SetOrganizationProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the value of a property for an organization. Use this resource to store custom data against an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service Desk Administrator or Agent.\n   *\n   * Note: Permission to manage organizations can be switched to users with the Jira administrator permission, using the\n   * **[Organization\n   * management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)**\n   * feature.\n   */\n  async setProperty<T = unknown>(parameters: Parameters.SetOrganizationProperty, callback?: never): Promise<T>;\n  async setProperty<T = unknown>(\n    parameters: Parameters.SetOrganizationProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/organization/${parameters.organizationId}/property/${parameters.propertyKey}`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a property from an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service Desk Administrator or Agent.\n   *\n   * Note: Permission to manage organizations can be switched to users with the Jira administrator permission, using the\n   * **[Organization\n   * management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)**\n   * feature.\n   */\n  async deleteProperty<T = void>(\n    parameters: Parameters.DeleteOrganizationProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Removes a property from an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service Desk Administrator or Agent.\n   *\n   * Note: Permission to manage organizations can be switched to users with the Jira administrator permission, using the\n   * **[Organization\n   * management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)**\n   * feature.\n   */\n  async deleteProperty<T = void>(parameters: Parameters.DeleteOrganizationProperty, callback?: never): Promise<T>;\n  async deleteProperty<T = void>(\n    parameters: Parameters.DeleteOrganizationProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/organization/${parameters.organizationId}/property/${parameters.propertyKey}`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns all the users associated with an organization. Use this method where you want to provide a list\n   * of users for an organization or determine if a user is associated with an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator or agent.\n   */\n  async getUsersInOrganization<T = Models.PagedUser>(\n    parameters: Parameters.GetUsersInOrganization,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns all the users associated with an organization. Use this method where you want to provide a list\n   * of users for an organization or determine if a user is associated with an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator or agent.\n   */\n  async getUsersInOrganization<T = Models.PagedUser>(\n    parameters: Parameters.GetUsersInOrganization,\n    callback?: never,\n  ): Promise<T>;\n  async getUsersInOrganization<T = Models.PagedUser>(\n    parameters: Parameters.GetUsersInOrganization,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/organization/${parameters.organizationId}/user`,\n      method: 'GET',\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method adds users to an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator or agent. Note: Permission to add users to an organization can be switched to users with\n   * the Jira administrator permission, using the **[Organization\n   * management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)**\n   * feature.\n   */\n  async addUsersToOrganization<T = void>(\n    parameters: Parameters.AddUsersToOrganization,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method adds users to an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator or agent. Note: Permission to add users to an organization can be switched to users with\n   * the Jira administrator permission, using the **[Organization\n   * management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)**\n   * feature.\n   */\n  async addUsersToOrganization<T = void>(parameters: Parameters.AddUsersToOrganization, callback?: never): Promise<T>;\n  async addUsersToOrganization<T = void>(\n    parameters: Parameters.AddUsersToOrganization,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/organization/${parameters.organizationId}/user`,\n      method: 'POST',\n      data: {\n        accountIds: parameters.accountIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method removes users from an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator or agent. Note: Permission to delete users from an organization can be switched to users\n   * with the Jira administrator permission, using the **[Organization\n   * management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)**\n   * feature.\n   */\n  async removeUsersFromOrganization<T = void>(\n    parameters: Parameters.RemoveUsersFromOrganization,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method removes users from an organization.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator or agent. Note: Permission to delete users from an organization can be switched to users\n   * with the Jira administrator permission, using the **[Organization\n   * management](https://confluence.atlassian.com/servicedeskcloud/setting-up-service-desk-users-732528877.html#Settingupservicedeskusers-manageorgsManageorganizations)**\n   * feature.\n   */\n  async removeUsersFromOrganization<T = void>(\n    parameters: Parameters.RemoveUsersFromOrganization,\n    callback?: never,\n  ): Promise<T>;\n  async removeUsersFromOrganization<T = void>(\n    parameters: Parameters.RemoveUsersFromOrganization,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/organization/${parameters.organizationId}/user`,\n      method: 'DELETE',\n      data: {\n        accountIds: parameters.accountIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns a list of all organizations associated with a service desk.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk's agent.\n   */\n  async getServiceDeskOrganizations<T = Models.PagedOrganization>(\n    parameters: Parameters.GetOrganizations,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns a list of all organizations associated with a service desk.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk's agent.\n   */\n  async getServiceDeskOrganizations<T = Models.PagedOrganization>(\n    parameters: Parameters.GetOrganizations,\n    callback?: never,\n  ): Promise<T>;\n  async getServiceDeskOrganizations<T = Models.PagedOrganization>(\n    parameters: Parameters.GetOrganizations,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/organization`,\n      method: 'GET',\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n        accountId: parameters.accountId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method adds an organization to a service desk. If the organization ID is already associated with the service\n   * desk, no change is made and the resource returns a 204 success code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk's agent.\n   */\n  async addOrganization<T = void>(parameters: Parameters.AddOrganization, callback: Callback<T>): Promise<void>;\n  /**\n   * This method adds an organization to a service desk. If the organization ID is already associated with the service\n   * desk, no change is made and the resource returns a 204 success code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk's agent.\n   */\n  async addOrganization<T = void>(parameters: Parameters.AddOrganization, callback?: never): Promise<T>;\n  async addOrganization<T = void>(parameters: Parameters.AddOrganization, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/organization`,\n      method: 'POST',\n      data: {\n        organizationId: parameters.organizationId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method removes an organization from a service desk. If the organization ID does not match an organization\n   * associated with the service desk, no change is made and the resource returns a 204 success code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk's agent.\n   */\n  async removeOrganization<T = void>(parameters: Parameters.RemoveOrganization, callback: Callback<T>): Promise<void>;\n  /**\n   * This method removes an organization from a service desk. If the organization ID does not match an organization\n   * associated with the service desk, no change is made and the resource returns a 204 success code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk's agent.\n   */\n  async removeOrganization<T = void>(parameters: Parameters.RemoveOrganization, callback?: never): Promise<T>;\n  async removeOrganization<T = void>(\n    parameters: Parameters.RemoveOrganization,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/organization`,\n      method: 'DELETE',\n      data: {\n        organizationId: parameters.organizationId,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Callback } from '../callback';\nimport type { Client } from '../clients';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class Request {\n  constructor(private client: Client) {}\n\n  /**\n   * This method returns all customer requests for the user executing the query.\n   *\n   * The returned customer requests are ordered chronologically by the latest activity on each request. For example, the\n   * latest status transition or comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the specified service desk.\n   *\n   * **Response limitations**: For customers, the list returned will include request they created (or were created on\n   * their behalf) or are participating in only.\n   */\n  async getCustomerRequests<T = Models.PagedCustomerRequest>(\n    parameters: Parameters.GetCustomerRequests | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns all customer requests for the user executing the query.\n   *\n   * The returned customer requests are ordered chronologically by the latest activity on each request. For example, the\n   * latest status transition or comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the specified service desk.\n   *\n   * **Response limitations**: For customers, the list returned will include request they created (or were created on\n   * their behalf) or are participating in only.\n   */\n  async getCustomerRequests<T = Models.PagedCustomerRequest>(\n    parameters?: Parameters.GetCustomerRequests,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomerRequests<T = Models.PagedCustomerRequest>(\n    parameters?: Parameters.GetCustomerRequests,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/servicedeskapi/request',\n      method: 'GET',\n      params: {\n        searchTerm: parameters?.searchTerm,\n        requestStatus: parameters?.requestStatus,\n        approvalStatus: parameters?.approvalStatus,\n        organizationId: parameters?.organizationId,\n        serviceDeskId: parameters?.serviceDeskId,\n        requestTypeId: parameters?.requestTypeId,\n        expand: parameters?.expand,\n        start: parameters?.start,\n        limit: parameters?.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method creates a customer request in a service desk.\n   *\n   * The JSON request must include the service desk and customer request type, as well as any fields that are required\n   * for the request type. A list of the fields required by a customer request type can be obtained using\n   * [servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/field](#api-servicedesk-serviceDeskId-requesttype-requestTypeId-field-get).\n   *\n   * The fields required for a customer request type depend on the user's permissions:\n   *\n   * - `raiseOnBehalfOf` is not available to Users who have the customer permission only.\n   * - `requestParticipants` is not available to Users who have the customer permission only or if the feature is turned\n   *   off for customers.\n   *\n   * `requestFieldValues` is a map of Jira field IDs and their values. See [Field input formats](#fieldformats), for\n   * details of each field's JSON semantics and the values they can take.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to create requests in the specified service desk.\n   */\n  async createCustomerRequest<T = Models.CustomerRequest>(\n    parameters: Parameters.CreateCustomerRequest | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method creates a customer request in a service desk.\n   *\n   * The JSON request must include the service desk and customer request type, as well as any fields that are required\n   * for the request type. A list of the fields required by a customer request type can be obtained using\n   * [servicedesk/{serviceDeskId}/requesttype/{requestTypeId}/field](#api-servicedesk-serviceDeskId-requesttype-requestTypeId-field-get).\n   *\n   * The fields required for a customer request type depend on the user's permissions:\n   *\n   * - `raiseOnBehalfOf` is not available to Users who have the customer permission only.\n   * - `requestParticipants` is not available to Users who have the customer permission only or if the feature is turned\n   *   off for customers.\n   *\n   * `requestFieldValues` is a map of Jira field IDs and their values. See [Field input formats](#fieldformats), for\n   * details of each field's JSON semantics and the values they can take.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to create requests in the specified service desk.\n   */\n  async createCustomerRequest<T = Models.CustomerRequest>(\n    parameters?: Parameters.CreateCustomerRequest,\n    callback?: never,\n  ): Promise<T>;\n  async createCustomerRequest<T = Models.CustomerRequest>(\n    parameters?: Parameters.CreateCustomerRequest,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/servicedeskapi/request',\n      method: 'POST',\n      data: {\n        serviceDeskId: parameters?.serviceDeskId,\n        requestTypeId: parameters?.requestTypeId,\n        requestFieldValues: parameters?.requestFieldValues,\n        requestParticipants: parameters?.requestParticipants,\n        raiseOnBehalfOf: parameters?.raiseOnBehalfOf,\n        channel: parameters?.channel,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the specified service desk.\n   *\n   * **Response limitations**: For customers, only a request they created, was created on their behalf, or they are\n   * participating in will be returned.\n   */\n  async getCustomerRequestByIdOrKey<T = Models.CustomerRequest>(\n    parameters: Parameters.GetCustomerRequestByIdOrKey,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the specified service desk.\n   *\n   * **Response limitations**: For customers, only a request they created, was created on their behalf, or they are\n   * participating in will be returned.\n   */\n  async getCustomerRequestByIdOrKey<T = Models.CustomerRequest>(\n    parameters: Parameters.GetCustomerRequestByIdOrKey,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomerRequestByIdOrKey<T = Models.CustomerRequest>(\n    parameters: Parameters.GetCustomerRequestByIdOrKey,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns all approvals on a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getApprovals<T = Models.PagedApproval>(\n    parameters: Parameters.GetApprovals,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns all approvals on a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getApprovals<T = Models.PagedApproval>(parameters: Parameters.GetApprovals, callback?: never): Promise<T>;\n  async getApprovals<T = Models.PagedApproval>(\n    parameters: Parameters.GetApprovals,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/approval`,\n      method: 'GET',\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns an approval. Use this method to determine the status of an approval and the list of approvers.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getApprovalById<T = Models.Approval>(\n    parameters: Parameters.GetApprovalById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns an approval. Use this method to determine the status of an approval and the list of approvers.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getApprovalById<T = Models.Approval>(parameters: Parameters.GetApprovalById, callback?: never): Promise<T>;\n  async getApprovalById<T = Models.Approval>(\n    parameters: Parameters.GetApprovalById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/approval/${parameters.approvalId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method enables a user to **Approve** or **Decline** an approval on a customer request. The approval is assumed\n   * to be owned by the user making the call.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * is assigned to the approval request.\n   */\n  async answerApproval<T = Models.Approval>(\n    parameters: Parameters.AnswerApproval,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method enables a user to **Approve** or **Decline** an approval on a customer request. The approval is assumed\n   * to be owned by the user making the call.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * is assigned to the approval request.\n   */\n  async answerApproval<T = Models.Approval>(parameters: Parameters.AnswerApproval, callback?: never): Promise<T>;\n  async answerApproval<T = Models.Approval>(\n    parameters: Parameters.AnswerApproval,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/approval/${parameters.approvalId}`,\n      method: 'POST',\n      data: {\n        decision: parameters.decision,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns all the attachments for a customer requests.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   *\n   * **Response limitations**: Customers will only get a list of public attachments.\n   */\n  async getAttachmentsForRequest<T = Models.PagedAttachment>(\n    parameters: Parameters.GetAttachmentsForRequest,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns all the attachments for a customer requests.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   *\n   * **Response limitations**: Customers will only get a list of public attachments.\n   */\n  async getAttachmentsForRequest<T = Models.PagedAttachment>(\n    parameters: Parameters.GetAttachmentsForRequest,\n    callback?: never,\n  ): Promise<T>;\n  async getAttachmentsForRequest<T = Models.PagedAttachment>(\n    parameters: Parameters.GetAttachmentsForRequest,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/attachment`,\n      method: 'GET',\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method adds one or more temporary files (attached to the request's service desk using\n   * [servicedesk/{serviceDeskId}/attachTemporaryFile](#api-servicedesk-serviceDeskId-attachTemporaryFile-post)) as\n   * attachments to a customer request and set the attachment visibility using the `public` flag. Also, it is possible\n   * to include a comment with the attachments.\n   *\n   * To get a list of attachments for a comment on the request use\n   * [servicedeskapi/request/{issueIdOrKey}/comment/{commentId}/attachment](#api-request-issueIdOrKey-comment-commentId-attachment-get).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to add an attachment.\n   *\n   * **Request limitations**: Customers can set attachments to public visibility only.\n   */\n  async createAttachment<T = Models.AttachmentCreateResult>(\n    parameters: Parameters.CreateAttachment,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method adds one or more temporary files (attached to the request's service desk using\n   * [servicedesk/{serviceDeskId}/attachTemporaryFile](#api-servicedesk-serviceDeskId-attachTemporaryFile-post)) as\n   * attachments to a customer request and set the attachment visibility using the `public` flag. Also, it is possible\n   * to include a comment with the attachments.\n   *\n   * To get a list of attachments for a comment on the request use\n   * [servicedeskapi/request/{issueIdOrKey}/comment/{commentId}/attachment](#api-request-issueIdOrKey-comment-commentId-attachment-get).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to add an attachment.\n   *\n   * **Request limitations**: Customers can set attachments to public visibility only.\n   */\n  async createAttachment<T = Models.AttachmentCreateResult>(\n    parameters: Parameters.CreateAttachment,\n    callback?: never,\n  ): Promise<T>;\n  async createAttachment<T = Models.AttachmentCreateResult>(\n    parameters: Parameters.CreateAttachment,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/attachment`,\n      method: 'POST',\n      data: {\n        temporaryAttachmentIds: parameters.temporaryAttachmentIds,\n        additionalComment: parameters.additionalComment,\n        public: parameters.public,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the contents of an attachment.\n   *\n   * To return a thumbnail of the attachment, use\n   * [servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}/thumbnail](#api-rest-servicedeskapi-request-issueidorkey-attachment-attachmentid-thumbnail-get).\n   *\n   * **[Permissions](#permissions) required:** For the issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getAttachmentContent<T = unknown>(\n    parameters: Parameters.GetAttachmentContent,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the contents of an attachment.\n   *\n   * To return a thumbnail of the attachment, use\n   * [servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}/thumbnail](#api-rest-servicedeskapi-request-issueidorkey-attachment-attachmentid-thumbnail-get).\n   *\n   * **[Permissions](#permissions) required:** For the issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getAttachmentContent<T = unknown>(parameters: Parameters.GetAttachmentContent, callback?: never): Promise<T>;\n  async getAttachmentContent<T = unknown>(\n    parameters: Parameters.GetAttachmentContent,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/attachment/${parameters.attachmentId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the thumbnail of an attachment.\n   *\n   * To return the attachment contents, use\n   * [servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}](#api-rest-servicedeskapi-request-issueidorkey-attachment-attachmentid-get).\n   *\n   * **[Permissions](#permissions) required:** For the issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getAttachmentThumbnail<T = unknown>(\n    parameters: Parameters.GetAttachmentThumbnail,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the thumbnail of an attachment.\n   *\n   * To return the attachment contents, use\n   * [servicedeskapi/request/{issueIdOrKey}/attachment/{attachmentId}](#api-rest-servicedeskapi-request-issueidorkey-attachment-attachmentid-get).\n   *\n   * **[Permissions](#permissions) required:** For the issue containing the attachment:\n   *\n   * - _Browse projects_ [project permission](https://confluence.atlassian.com/x/yodKLg) for the project that the issue is\n   *   in.\n   * - If [issue-level security](https://confluence.atlassian.com/x/J4lKLg) is configured, issue-level security permission\n   *   to view the issue.\n   */\n  async getAttachmentThumbnail<T = unknown>(\n    parameters: Parameters.GetAttachmentThumbnail,\n    callback?: never,\n  ): Promise<T>;\n  async getAttachmentThumbnail<T = unknown>(\n    parameters: Parameters.GetAttachmentThumbnail,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/attachment/${parameters.attachmentId}/thumbnail`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns all comments on a customer request. No permissions error is provided if, for example, the user\n   * doesn't have access to the service desk or request, the method simply returns an empty response.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   *\n   * **Response limitations**: Customers are returned public comments only.\n   */\n  async getRequestComments<T = Models.PagedComment>(\n    parameters: Parameters.GetRequestComments,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns all comments on a customer request. No permissions error is provided if, for example, the user\n   * doesn't have access to the service desk or request, the method simply returns an empty response.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   *\n   * **Response limitations**: Customers are returned public comments only.\n   */\n  async getRequestComments<T = Models.PagedComment>(\n    parameters: Parameters.GetRequestComments,\n    callback?: never,\n  ): Promise<T>;\n  async getRequestComments<T = Models.PagedComment>(\n    parameters: Parameters.GetRequestComments,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/comment`,\n      method: 'GET',\n      params: {\n        public: parameters.public,\n        internal: parameters.internal,\n        expand: parameters.expand,\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method creates a public or private (internal) comment on a customer request, with the comment visibility set\n   * by `public`. The user recorded as the author of the comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * has Add Comments permission.\n   *\n   * **Request limitations**: Customers can set comments to public visibility only.\n   */\n  async createRequestComment<T = Models.Comment>(\n    parameters: Parameters.CreateRequestComment,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method creates a public or private (internal) comment on a customer request, with the comment visibility set\n   * by `public`. The user recorded as the author of the comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * has Add Comments permission.\n   *\n   * **Request limitations**: Customers can set comments to public visibility only.\n   */\n  async createRequestComment<T = Models.Comment>(\n    parameters: Parameters.CreateRequestComment,\n    callback?: never,\n  ): Promise<T>;\n  async createRequestComment<T = Models.Comment>(\n    parameters: Parameters.CreateRequestComment,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/comment`,\n      method: 'POST',\n      data: {\n        body: parameters.body,\n        public: parameters.public,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns details of a customer request's comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   *\n   * **Response limitations**: Customers can only view public comments on requests where they are the reporter or a\n   * participant whereas agents can see both internal and public comments.\n   */\n  async getRequestCommentById<T = Models.Comment>(\n    parameters: Parameters.GetRequestCommentById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns details of a customer request's comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   *\n   * **Response limitations**: Customers can only view public comments on requests where they are the reporter or a\n   * participant whereas agents can see both internal and public comments.\n   */\n  async getRequestCommentById<T = Models.Comment>(\n    parameters: Parameters.GetRequestCommentById,\n    callback?: never,\n  ): Promise<T>;\n  async getRequestCommentById<T = Models.Comment>(\n    parameters: Parameters.GetRequestCommentById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/comment/${parameters.commentId}`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns the attachments referenced in a comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   *\n   * **Response limitations**: Customers can only view public comments, and retrieve their attachments, on requests\n   * where they are the reporter or a participant whereas agents can see both internal and public comments.\n   */\n  async getCommentAttachments<T = Models.PagedAttachment>(\n    parameters: Parameters.GetCommentAttachments,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns the attachments referenced in a comment.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   *\n   * **Response limitations**: Customers can only view public comments, and retrieve their attachments, on requests\n   * where they are the reporter or a participant whereas agents can see both internal and public comments.\n   */\n  async getCommentAttachments<T = Models.PagedAttachment>(\n    parameters: Parameters.GetCommentAttachments,\n    callback?: never,\n  ): Promise<T>;\n  async getCommentAttachments<T = Models.PagedAttachment>(\n    parameters: Parameters.GetCommentAttachments,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/comment/${parameters.commentId}/attachment`,\n      method: 'GET',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns the notification subscription status of the user making the request. Use this method to\n   * determine if the user is subscribed to a customer request's notifications.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getSubscriptionStatus<T = Models.RequestNotificationSubscription>(\n    parameters: Parameters.GetSubscriptionStatus,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns the notification subscription status of the user making the request. Use this method to\n   * determine if the user is subscribed to a customer request's notifications.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getSubscriptionStatus<T = Models.RequestNotificationSubscription>(\n    parameters: Parameters.GetSubscriptionStatus,\n    callback?: never,\n  ): Promise<T>;\n  async getSubscriptionStatus<T = Models.RequestNotificationSubscription>(\n    parameters: Parameters.GetSubscriptionStatus,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/notification`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method subscribes the user to receiving notifications from a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async subscribe<T = void>(parameters: Parameters.Subscribe, callback: Callback<T>): Promise<void>;\n  /**\n   * This method subscribes the user to receiving notifications from a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async subscribe<T = void>(parameters: Parameters.Subscribe, callback?: never): Promise<T>;\n  async subscribe<T = void>(parameters: Parameters.Subscribe, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/notification`,\n      method: 'PUT',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method unsubscribes the user from notifications from a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async unsubscribe<T = void>(parameters: Parameters.Unsubscribe, callback: Callback<T>): Promise<void>;\n  /**\n   * This method unsubscribes the user from notifications from a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async unsubscribe<T = void>(parameters: Parameters.Unsubscribe, callback?: never): Promise<T>;\n  async unsubscribe<T = void>(parameters: Parameters.Unsubscribe, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/notification`,\n      method: 'DELETE',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns a list of all the participants on a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getRequestParticipants<T = Models.PagedUser>(\n    parameters: Parameters.GetRequestParticipants,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns a list of all the participants on a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getRequestParticipants<T = Models.PagedUser>(\n    parameters: Parameters.GetRequestParticipants,\n    callback?: never,\n  ): Promise<T>;\n  async getRequestParticipants<T = Models.PagedUser>(\n    parameters: Parameters.GetRequestParticipants,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/participant`,\n      method: 'GET',\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method adds participants to a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to manage participants on the customer request.\n   *\n   * Note, participants can be added when creating a customer request using the\n   * [request](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-request/) resource, by defining\n   * the participants in the `requestParticipants` field.\n   */\n  async addRequestParticipants<T = Models.PagedUser>(\n    parameters: Parameters.AddRequestParticipants,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method adds participants to a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to manage participants on the customer request.\n   *\n   * Note, participants can be added when creating a customer request using the\n   * [request](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-request/) resource, by defining\n   * the participants in the `requestParticipants` field.\n   */\n  async addRequestParticipants<T = Models.PagedUser>(\n    parameters: Parameters.AddRequestParticipants,\n    callback?: never,\n  ): Promise<T>;\n  async addRequestParticipants<T = Models.PagedUser>(\n    parameters: Parameters.AddRequestParticipants,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/participant`,\n      method: 'POST',\n      data: {\n        usernames: parameters.usernames,\n        accountIds: parameters.accountIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method removes participants from a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to manage participants on the customer request.\n   */\n  async removeRequestParticipants<T = Models.PagedUser>(\n    parameters: Parameters.RemoveRequestParticipants,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method removes participants from a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to manage participants on the customer request.\n   */\n  async removeRequestParticipants<T = Models.PagedUser>(\n    parameters: Parameters.RemoveRequestParticipants,\n    callback?: never,\n  ): Promise<T>;\n  async removeRequestParticipants<T = Models.PagedUser>(\n    parameters: Parameters.RemoveRequestParticipants,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/participant`,\n      method: 'DELETE',\n      data: {\n        usernames: parameters.usernames,\n        accountIds: parameters.accountIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns all the SLA records on a customer request. A customer request can have zero or more SLAs. Each\n   * SLA can have recordings for zero or more \"completed cycles\" and zero or 1 \"ongoing cycle\". Each cycle includes\n   * information on when it started and stopped, and whether it breached the SLA goal.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Agent\n   * for the Service Desk containing the queried customer request.\n   */\n  async getSlaInformation<T = Models.PagedSlaInformation>(\n    parameters: Parameters.GetSlaInformation,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns all the SLA records on a customer request. A customer request can have zero or more SLAs. Each\n   * SLA can have recordings for zero or more \"completed cycles\" and zero or 1 \"ongoing cycle\". Each cycle includes\n   * information on when it started and stopped, and whether it breached the SLA goal.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Agent\n   * for the Service Desk containing the queried customer request.\n   */\n  async getSlaInformation<T = Models.PagedSlaInformation>(\n    parameters: Parameters.GetSlaInformation,\n    callback?: never,\n  ): Promise<T>;\n  async getSlaInformation<T = Models.PagedSlaInformation>(\n    parameters: Parameters.GetSlaInformation,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/sla`,\n      method: 'GET',\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns the details for an SLA on a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Agent\n   * for the Service Desk containing the queried customer request.\n   */\n  async getSlaInformationById<T = Models.SlaInformation>(\n    parameters: Parameters.GetSlaInformationById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns the details for an SLA on a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Agent\n   * for the Service Desk containing the queried customer request.\n   */\n  async getSlaInformationById<T = Models.SlaInformation>(\n    parameters: Parameters.GetSlaInformationById,\n    callback?: never,\n  ): Promise<T>;\n  async getSlaInformationById<T = Models.SlaInformation>(\n    parameters: Parameters.GetSlaInformationById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/sla/${parameters.slaMetricId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns a list of all the statuses a customer Request has achieved. A status represents the state of an\n   * issue in its workflow. An issue can have one active status only. The list returns the status history in\n   * chronological order, most recent (current) status first.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getCustomerRequestStatus<T = Models.PagedCustomerRequestStatus>(\n    parameters: Parameters.GetCustomerRequestStatus,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns a list of all the statuses a customer Request has achieved. A status represents the state of an\n   * issue in its workflow. An issue can have one active status only. The list returns the status history in\n   * chronological order, most recent (current) status first.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getCustomerRequestStatus<T = Models.PagedCustomerRequestStatus>(\n    parameters: Parameters.GetCustomerRequestStatus,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomerRequestStatus<T = Models.PagedCustomerRequestStatus>(\n    parameters: Parameters.GetCustomerRequestStatus,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/status`,\n      method: 'GET',\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns a list of transitions, the workflow processes that moves a customer request from one status to\n   * another, that the user can perform on a request. Use this method to provide a user with a list if the actions they\n   * can take on a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getCustomerTransitions<T = Models.PagedCustomerTransition>(\n    parameters: Parameters.GetCustomerTransitions,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns a list of transitions, the workflow processes that moves a customer request from one status to\n   * another, that the user can perform on a request. Use this method to provide a user with a list if the actions they\n   * can take on a customer request.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the customer request.\n   */\n  async getCustomerTransitions<T = Models.PagedCustomerTransition>(\n    parameters: Parameters.GetCustomerTransitions,\n    callback?: never,\n  ): Promise<T>;\n  async getCustomerTransitions<T = Models.PagedCustomerTransition>(\n    parameters: Parameters.GetCustomerTransitions,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/transition`,\n      method: 'GET',\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method performs a customer transition for a given request and transition. An optional comment can be included\n   * to provide a reason for the transition.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: The\n   * user must be able to view the request and have the Transition Issues permission. If a comment is passed the user\n   * must have the Add Comments permission.\n   */\n  async performCustomerTransition<T = void>(\n    parameters: Parameters.PerformCustomerTransition,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method performs a customer transition for a given request and transition. An optional comment can be included\n   * to provide a reason for the transition.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: The\n   * user must be able to view the request and have the Transition Issues permission. If a comment is passed the user\n   * must have the Add Comments permission.\n   */\n  async performCustomerTransition<T = void>(\n    parameters: Parameters.PerformCustomerTransition,\n    callback?: never,\n  ): Promise<T>;\n  async performCustomerTransition<T = void>(\n    parameters: Parameters.PerformCustomerTransition,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.issueIdOrKey}/transition`,\n      method: 'POST',\n      data: {\n        id: parameters.id,\n        additionalComment: parameters.additionalComment,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method retrieves a feedback of a request using it's `requestKey` or `requestId`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * has view request permissions.\n   */\n  async getFeedback<T = Models.CsatFeedbackFull>(\n    parameters: Parameters.GetFeedback,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method retrieves a feedback of a request using it's `requestKey` or `requestId`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * has view request permissions.\n   */\n  async getFeedback<T = Models.CsatFeedbackFull>(parameters: Parameters.GetFeedback, callback?: never): Promise<T>;\n  async getFeedback<T = Models.CsatFeedbackFull>(\n    parameters: Parameters.GetFeedback,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.requestIdOrKey}/feedback`,\n      method: 'GET',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method adds a feedback on a request using it's `requestKey` or `requestId`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * must be the reporter or an Atlassian Connect app.\n   */\n  async postFeedback<T = Models.CsatFeedbackFull>(\n    parameters: Parameters.PostFeedback,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method adds a feedback on a request using it's `requestKey` or `requestId`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * must be the reporter or an Atlassian Connect app.\n   */\n  async postFeedback<T = Models.CsatFeedbackFull>(parameters: Parameters.PostFeedback, callback?: never): Promise<T>;\n  async postFeedback<T = Models.CsatFeedbackFull>(\n    parameters: Parameters.PostFeedback,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.requestIdOrKey}/feedback`,\n      method: 'POST',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n      data: {\n        type: parameters.type,\n        rating: parameters.rating,\n        comment: parameters.comment,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method deletes the feedback of request using it's `requestKey` or `requestId`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * must be the reporter or an Atlassian Connect app.\n   */\n  async deleteFeedback<T = void>(parameters: Parameters.DeleteFeedback, callback: Callback<T>): Promise<void>;\n  /**\n   * This method deletes the feedback of request using it's `requestKey` or `requestId`\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * must be the reporter or an Atlassian Connect app.\n   */\n  async deleteFeedback<T = void>(parameters: Parameters.DeleteFeedback, callback?: never): Promise<T>;\n  async deleteFeedback<T = void>(parameters: Parameters.DeleteFeedback, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/request/${parameters.requestIdOrKey}/feedback`,\n      method: 'DELETE',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Callback } from '../callback';\nimport type { Client } from '../clients';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class RequestType {\n  constructor(private client: Client) {}\n\n  /**\n   * This method returns all customer request types used in the Jira Service Management instance, optionally filtered by\n   * a query string.\n   *\n   * Use [servicedeskapi/servicedesk/{serviceDeskId}/requesttype](#api-servicedesk-serviceDeskId-requesttype-get) to\n   * find the customer request types supported by a specific service desk.\n   *\n   * The returned list of customer request types can be filtered using the `query` parameter. The parameter is matched\n   * against the customer request types' `name` or `description`. For example, searching for \"Install\", \"Inst\", \"Equi\",\n   * or \"Equipment\" will match a customer request type with the _name_ \"Equipment Installation Request\".\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   */\n  async getAllRequestTypes<T = Models.PagedRequestType>(\n    parameters: Parameters.GetAllRequestTypes | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns all customer request types used in the Jira Service Management instance, optionally filtered by\n   * a query string.\n   *\n   * Use [servicedeskapi/servicedesk/{serviceDeskId}/requesttype](#api-servicedesk-serviceDeskId-requesttype-get) to\n   * find the customer request types supported by a specific service desk.\n   *\n   * The returned list of customer request types can be filtered using the `query` parameter. The parameter is matched\n   * against the customer request types' `name` or `description`. For example, searching for \"Install\", \"Inst\", \"Equi\",\n   * or \"Equipment\" will match a customer request type with the _name_ \"Equipment Installation Request\".\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   */\n  async getAllRequestTypes<T = Models.PagedRequestType>(\n    parameters?: Parameters.GetAllRequestTypes,\n    callback?: never,\n  ): Promise<T>;\n  async getAllRequestTypes<T = Models.PagedRequestType>(\n    parameters?: Parameters.GetAllRequestTypes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/servicedeskapi/requesttype',\n      method: 'GET',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n      params: {\n        searchQuery: parameters?.searchQuery,\n        serviceDeskId: parameters?.serviceDeskId,\n        start: parameters?.start,\n        limit: parameters?.limit,\n        expand: parameters?.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n}\n","import type { Mime } from 'mime';\nimport mime from 'mime';\nimport type * as Models from './models';\nimport type * as Parameters from './parameters';\nimport type { Callback } from '../callback';\nimport type { Client } from '../clients';\nimport type { RequestConfig } from '../requestConfig';\n\nexport class ServiceDesk {\n  constructor(private client: Client) {}\n\n  /**\n   * This method returns all the service desks in the Jira Service Management instance that the user has permission to\n   * access. Use this method where you need a list of service desks or need to locate a service desk by name or\n   * keyword.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   */\n  async getServiceDesks<T = Models.PagedServiceDesk>(\n    parameters: Parameters.GetServiceDesks | undefined,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns all the service desks in the Jira Service Management instance that the user has permission to\n   * access. Use this method where you need a list of service desks or need to locate a service desk by name or\n   * keyword.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Any\n   */\n  async getServiceDesks<T = Models.PagedServiceDesk>(\n    parameters?: Parameters.GetServiceDesks,\n    callback?: never,\n  ): Promise<T>;\n  async getServiceDesks<T = Models.PagedServiceDesk>(\n    parameters?: Parameters.GetServiceDesks,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: '/rest/servicedeskapi/servicedesk',\n      method: 'GET',\n      params: {\n        start: parameters?.start,\n        limit: parameters?.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns a service desk. Use this method to get service desk details whenever your application component\n   * is passed a service desk ID but needs to display other service desk details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the Service Desk. For example, being the Service Desk's Administrator or one of its Agents or\n   * Users.\n   */\n  async getServiceDeskById<T = Models.ServiceDesk>(\n    parameters: Parameters.GetServiceDeskById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns a service desk. Use this method to get service desk details whenever your application component\n   * is passed a service desk ID but needs to display other service desk details.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the Service Desk. For example, being the Service Desk's Administrator or one of its Agents or\n   * Users.\n   */\n  async getServiceDeskById<T = Models.ServiceDesk>(\n    parameters: Parameters.GetServiceDeskById,\n    callback?: never,\n  ): Promise<T>;\n  async getServiceDeskById<T = Models.ServiceDesk>(\n    parameters: Parameters.GetServiceDeskById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}`,\n      method: 'GET',\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method adds one or more temporary attachments to a service desk, which can then be permanently attached to a\n   * customer request using\n   * [servicedeskapi/request/{issueIdOrKey}/attachment](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-servicedesk/#api-rest-servicedeskapi-servicedesk-servicedeskid-attachtemporaryfile-post).\n   *\n   * **Note**: It is possible for a service desk administrator to turn off the ability to add attachments to a service\n   * desk.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to add attachments in this Service Desk.\n   */\n  async attachTemporaryFile<T = unknown>(\n    parameters: Parameters.AttachTemporaryFile,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method adds one or more temporary attachments to a service desk, which can then be permanently attached to a\n   * customer request using\n   * [servicedeskapi/request/{issueIdOrKey}/attachment](https://developer.atlassian.com/cloud/jira/service-desk/rest/api-group-servicedesk/#api-rest-servicedeskapi-servicedesk-servicedeskid-attachtemporaryfile-post).\n   *\n   * **Note**: It is possible for a service desk administrator to turn off the ability to add attachments to a service\n   * desk.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to add attachments in this Service Desk.\n   */\n  async attachTemporaryFile<T = unknown>(parameters: Parameters.AttachTemporaryFile, callback?: never): Promise<T>;\n  async attachTemporaryFile<T = unknown>(\n    parameters: Parameters.AttachTemporaryFile,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const formData = new FormData();\n    const attachments = Array.isArray(parameters.attachment) ? parameters.attachment : [parameters.attachment];\n\n    // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n    let Readable: typeof import('stream').Readable | undefined;\n\n    if (typeof window === 'undefined') {\n      const { Readable: NodeReadable } = await import('stream');\n\n      Readable = NodeReadable;\n    }\n\n    for await (const attachment of attachments) {\n      const file = await this._convertToFile(attachment, mime, Readable);\n\n      if (!(file instanceof File || file instanceof Blob)) {\n        throw new Error(`Unsupported file type for attachment: ${typeof file}`);\n      }\n\n      formData.append('file', file, attachment.filename);\n    }\n\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/attachTemporaryFile`,\n      method: 'POST',\n      headers: {\n        'X-Atlassian-Token': 'no-check',\n        'Content-Type': 'multipart/form-data',\n      },\n      data: formData,\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns a list of the customers on a service desk.\n   *\n   * The returned list of customers can be filtered using the `query` parameter. The parameter is matched against\n   * customers' `displayName`, `name`, or `email`. For example, searching for \"John\", \"Jo\", \"Smi\", or \"Smith\" will match\n   * a user with display name \"John Smith\".\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view this Service Desk's customers.\n   */\n  async getCustomers<T = Models.PagedUser>(parameters: Parameters.GetCustomers, callback: Callback<T>): Promise<void>;\n  /**\n   * This method returns a list of the customers on a service desk.\n   *\n   * The returned list of customers can be filtered using the `query` parameter. The parameter is matched against\n   * customers' `displayName`, `name`, or `email`. For example, searching for \"John\", \"Jo\", \"Smi\", or \"Smith\" will match\n   * a user with display name \"John Smith\".\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view this Service Desk's customers.\n   */\n  async getCustomers<T = Models.PagedUser>(parameters: Parameters.GetCustomers, callback?: never): Promise<T>;\n  async getCustomers<T = Models.PagedUser>(\n    parameters: Parameters.GetCustomers,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/customer`,\n      method: 'GET',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n      params: {\n        query: parameters.query,\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Adds one or more customers to a service desk. If any of the passed customers are associated with the service desk,\n   * no changes will be made for those customers and the resource returns a 204 success code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator\n   */\n  async addCustomers<T = void>(parameters: Parameters.AddCustomers, callback: Callback<T>): Promise<void>;\n  /**\n   * Adds one or more customers to a service desk. If any of the passed customers are associated with the service desk,\n   * no changes will be made for those customers and the resource returns a 204 success code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator\n   */\n  async addCustomers<T = void>(parameters: Parameters.AddCustomers, callback?: never): Promise<T>;\n  async addCustomers<T = void>(parameters: Parameters.AddCustomers, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/customer`,\n      method: 'POST',\n      data: {\n        usernames: parameters.usernames,\n        accountIds: parameters.accountIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method removes one or more customers from a service desk. The service desk must have closed access. If any of\n   * the passed customers are not associated with the service desk, no changes will be made for those customers and the\n   * resource returns a 204 success code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Services desk administrator\n   */\n  async removeCustomers<T = void>(parameters: Parameters.RemoveCustomers, callback: Callback<T>): Promise<void>;\n  /**\n   * This method removes one or more customers from a service desk. The service desk must have closed access. If any of\n   * the passed customers are not associated with the service desk, no changes will be made for those customers and the\n   * resource returns a 204 success code.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Services desk administrator\n   */\n  async removeCustomers<T = void>(parameters: Parameters.RemoveCustomers, callback?: never): Promise<T>;\n  async removeCustomers<T = void>(parameters: Parameters.RemoveCustomers, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/customer`,\n      method: 'DELETE',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n      data: {\n        usernames: parameters.usernames,\n        accountIds: parameters.accountIds,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns articles which match the given query and belong to the knowledge base linked to the service desk.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the service desk.\n   */\n  async getArticles<T = Models.PagedArticle>(parameters: Parameters.GetArticles, callback: Callback<T>): Promise<void>;\n  /**\n   * Returns articles which match the given query and belong to the knowledge base linked to the service desk.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the service desk.\n   */\n  async getArticles<T = Models.PagedArticle>(parameters: Parameters.GetArticles, callback?: never): Promise<T>;\n  async getArticles<T = Models.PagedArticle>(\n    parameters: Parameters.GetArticles,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/knowledgebase/article`,\n      method: 'GET',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n      params: {\n        query: parameters.query,\n        highlight: parameters.highlight,\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns the queues in a service desk. To include a customer request count for each queue (in the\n   * `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * service desk's Agent.\n   */\n  async getQueues<T = Models.PagedQueue>(parameters: Parameters.GetQueues, callback: Callback<T>): Promise<void>;\n  /**\n   * This method returns the queues in a service desk. To include a customer request count for each queue (in the\n   * `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * service desk's Agent.\n   */\n  async getQueues<T = Models.PagedQueue>(parameters: Parameters.GetQueues, callback?: never): Promise<T>;\n  async getQueues<T = Models.PagedQueue>(parameters: Parameters.GetQueues, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/queue`,\n      method: 'GET',\n      params: {\n        includeCount: parameters.includeCount,\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns a specific queues in a service desk. To include a customer request count for the queue (in the\n   * `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * service desk's Agent.\n   */\n  async getQueue<T = Models.Queue>(parameters: Parameters.GetQueue, callback: Callback<T>): Promise<void>;\n  /**\n   * This method returns a specific queues in a service desk. To include a customer request count for the queue (in the\n   * `issueCount` field) in the response, set the query parameter `includeCount` to true (its default is false).\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * service desk's Agent.\n   */\n  async getQueue<T = Models.Queue>(parameters: Parameters.GetQueue, callback?: never): Promise<T>;\n  async getQueue<T = Models.Queue>(parameters: Parameters.GetQueue, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/queue/${parameters.queueId}`,\n      method: 'GET',\n      params: {\n        includeCount: parameters.includeCount,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns the customer requests in a queue. Only fields that the queue is configured to show are\n   * returned. For example, if a queue is configured to show description and due date, then only those two fields are\n   * returned for each customer request in the queue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk's agent.\n   */\n  async getIssuesInQueue<T = Models.PagedIssue>(\n    parameters: Parameters.GetIssuesInQueue,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns the customer requests in a queue. Only fields that the queue is configured to show are\n   * returned. For example, if a queue is configured to show description and due date, then only those two fields are\n   * returned for each customer request in the queue.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk's agent.\n   */\n  async getIssuesInQueue<T = Models.PagedIssue>(parameters: Parameters.GetIssuesInQueue, callback?: never): Promise<T>;\n  async getIssuesInQueue<T = Models.PagedIssue>(\n    parameters: Parameters.GetIssuesInQueue,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/queue/${parameters.queueId}/issue`,\n      method: 'GET',\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns all customer request types from a service desk. There are two parameters for filtering the\n   * returned list:\n   *\n   * - `groupId` which filters the results to items in the customer request type group.\n   * - `searchQuery` which is matched against request types' `name` or `description`. For example, the strings \"Install\",\n   *   \"Inst\", \"Equi\", or \"Equipment\" will match a request type with the _name_ \"Equipment Installation Request\".\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the service desk.\n   */\n  async getRequestTypes<T = Models.PagedRequestType>(\n    parameters: Parameters.GetRequestTypes,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns all customer request types from a service desk. There are two parameters for filtering the\n   * returned list:\n   *\n   * - `groupId` which filters the results to items in the customer request type group.\n   * - `searchQuery` which is matched against request types' `name` or `description`. For example, the strings \"Install\",\n   *   \"Inst\", \"Equi\", or \"Equipment\" will match a request type with the _name_ \"Equipment Installation Request\".\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the service desk.\n   */\n  async getRequestTypes<T = Models.PagedRequestType>(\n    parameters: Parameters.GetRequestTypes,\n    callback?: never,\n  ): Promise<T>;\n  async getRequestTypes<T = Models.PagedRequestType>(\n    parameters: Parameters.GetRequestTypes,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/requesttype`,\n      method: 'GET',\n      params: {\n        groupId: parameters.groupId,\n        expand: parameters.expand,\n        searchQuery: parameters.searchQuery,\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method enables a customer request type to be added to a service desk based on an issue type. Note that not all\n   * customer request type fields can be specified in the request and these fields are given the following default\n   * values:\n   *\n   * - Request type icon is given the headset icon.\n   * - Request type groups is left empty, which means this customer request type will not be visible on the [customer\n   *   portal](https://confluence.atlassian.com/servicedeskcloud/configuring-the-customer-portal-732528918.html).\n   * - Request type status mapping is left empty, so the request type has no custom status mapping but inherits the status\n   *   map from the issue type upon which it is based.\n   * - Request type field mapping is set to show the required fields as specified by the issue type used to create the\n   *   customer request type.\n   *\n   * These fields can be updated by a service desk administrator using the **Request types** option in **Project\n   * settings**.\\\n   * Request Types are created in next-gen projects by creating Issue Types. Please use the Jira Cloud Platform Create\n   * issue type endpoint instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk's administrator\n   */\n  async createRequestType<T = Models.RequestType>(\n    parameters: Parameters.CreateRequestType,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method enables a customer request type to be added to a service desk based on an issue type. Note that not all\n   * customer request type fields can be specified in the request and these fields are given the following default\n   * values:\n   *\n   * - Request type icon is given the headset icon.\n   * - Request type groups is left empty, which means this customer request type will not be visible on the [customer\n   *   portal](https://confluence.atlassian.com/servicedeskcloud/configuring-the-customer-portal-732528918.html).\n   * - Request type status mapping is left empty, so the request type has no custom status mapping but inherits the status\n   *   map from the issue type upon which it is based.\n   * - Request type field mapping is set to show the required fields as specified by the issue type used to create the\n   *   customer request type.\n   *\n   * These fields can be updated by a service desk administrator using the **Request types** option in **Project\n   * settings**.\\\n   * Request Types are created in next-gen projects by creating Issue Types. Please use the Jira Cloud Platform Create\n   * issue type endpoint instead.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk's administrator\n   */\n  async createRequestType<T = Models.RequestType>(\n    parameters: Parameters.CreateRequestType,\n    callback?: never,\n  ): Promise<T>;\n  async createRequestType<T = Models.RequestType>(\n    parameters: Parameters.CreateRequestType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/requesttype`,\n      method: 'POST',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n      data: {\n        issueTypeId: parameters.issueTypeId,\n        name: parameters.name,\n        description: parameters.description,\n        helpText: parameters.helpText,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns a customer request type from a service desk.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the service desk.\n   */\n  async getRequestTypeById<T = Models.RequestType>(\n    parameters: Parameters.GetRequestTypeById,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns a customer request type from a service desk.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to access the service desk.\n   */\n  async getRequestTypeById<T = Models.RequestType>(\n    parameters: Parameters.GetRequestTypeById,\n    callback?: never,\n  ): Promise<T>;\n  async getRequestTypeById<T = Models.RequestType>(\n    parameters: Parameters.GetRequestTypeById,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/requesttype/${parameters.requestTypeId}`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method deletes a customer request type from a service desk, and removes it from all customer requests.\\\n   * This only supports classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator.\n   */\n  async deleteRequestType<T = void>(parameters: Parameters.DeleteRequestType, callback: Callback<T>): Promise<void>;\n  /**\n   * This method deletes a customer request type from a service desk, and removes it from all customer requests.\\\n   * This only supports classic projects.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Service desk administrator.\n   */\n  async deleteRequestType<T = void>(parameters: Parameters.DeleteRequestType, callback?: never): Promise<T>;\n  async deleteRequestType<T = void>(\n    parameters: Parameters.DeleteRequestType,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/requesttype/${parameters.requestTypeId}`,\n      method: 'DELETE',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns the fields for a service desk's customer request type.\n   *\n   * Also, the following information about the user's permissions for the request type is returned:\n   *\n   * - `canRaiseOnBehalfOf` returns `true` if the user has permission to raise customer requests on behalf of other\n   *   customers. Otherwise, returns `false`.\n   * - `canAddRequestParticipants` returns `true` if the user can add customer request participants. Otherwise, returns\n   *   `false`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the Service Desk. However, hidden fields would be visible to only Service desk's Administrator.\n   */\n  async getRequestTypeFields<T = Models.CustomerRequestCreateMeta>(\n    parameters: Parameters.GetRequestTypeFields,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns the fields for a service desk's customer request type.\n   *\n   * Also, the following information about the user's permissions for the request type is returned:\n   *\n   * - `canRaiseOnBehalfOf` returns `true` if the user has permission to raise customer requests on behalf of other\n   *   customers. Otherwise, returns `false`.\n   * - `canAddRequestParticipants` returns `true` if the user can add customer request participants. Otherwise, returns\n   *   `false`.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the Service Desk. However, hidden fields would be visible to only Service desk's Administrator.\n   */\n  async getRequestTypeFields<T = Models.CustomerRequestCreateMeta>(\n    parameters: Parameters.GetRequestTypeFields,\n    callback?: never,\n  ): Promise<T>;\n  async getRequestTypeFields<T = Models.CustomerRequestCreateMeta>(\n    parameters: Parameters.GetRequestTypeFields,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/requesttype/${parameters.requestTypeId}/field`,\n      method: 'GET',\n      params: {\n        expand: parameters.expand,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the keys of all properties for a request type.\n   *\n   * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore the keys of all\n   * properties for a request type are also available by calling the Jira Cloud Platform [Get issue type property\n   * keys](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-get)\n   * endpoint.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: The\n   * user must have permission to view the request type.\n   */\n  async getPropertiesKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetPropertiesKeys,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the keys of all properties for a request type.\n   *\n   * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore the keys of all\n   * properties for a request type are also available by calling the Jira Cloud Platform [Get issue type property\n   * keys](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-get)\n   * endpoint.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: The\n   * user must have permission to view the request type.\n   */\n  async getPropertiesKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetPropertiesKeys,\n    callback?: never,\n  ): Promise<T>;\n  async getPropertiesKeys<T = Models.PropertyKeys>(\n    parameters: Parameters.GetPropertiesKeys,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/requesttype/${parameters.requestTypeId}/property`,\n      method: 'GET',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Returns the value of the property from a request type.\n   *\n   * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore also available by\n   * calling the Jira Cloud Platform [Get issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-get)\n   * endpoint.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * must have permission to view the request type.\n   */\n  async getProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetProperty,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * Returns the value of the property from a request type.\n   *\n   * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore also available by\n   * calling the Jira Cloud Platform [Get issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-get)\n   * endpoint.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: User\n   * must have permission to view the request type.\n   */\n  async getProperty<T = Models.EntityProperty>(parameters: Parameters.GetProperty, callback?: never): Promise<T>;\n  async getProperty<T = Models.EntityProperty>(\n    parameters: Parameters.GetProperty,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/requesttype/${parameters.requestTypeId}/property/${parameters.propertyKey}`,\n      method: 'GET',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Sets the value of a request type property. Use this resource to store custom data against a request type.\n   *\n   * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be set by\n   * calling the Jira Cloud Platform [Set issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-put)\n   * endpoint.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Jira\n   * project administrator with a Jira Service Management agent license.\n   */\n  async setProperty<T = unknown>(parameters: Parameters.SetProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Sets the value of a request type property. Use this resource to store custom data against a request type.\n   *\n   * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be set by\n   * calling the Jira Cloud Platform [Set issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-put)\n   * endpoint.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Jira\n   * project administrator with a Jira Service Management agent license.\n   */\n  async setProperty<T = unknown>(parameters: Parameters.SetProperty, callback?: never): Promise<T>;\n  async setProperty<T = unknown>(parameters: Parameters.SetProperty, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/requesttype/${parameters.requestTypeId}/property/${parameters.propertyKey}`,\n      method: 'PUT',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * Removes a property from a request type.\n   *\n   * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be deleted by\n   * calling the Jira Cloud Platform [Delete issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-delete)\n   * endpoint.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Jira\n   * project administrator with a Jira Service Management agent license.\n   */\n  async deleteProperty<T = void>(parameters: Parameters.DeleteProperty, callback: Callback<T>): Promise<void>;\n  /**\n   * Removes a property from a request type.\n   *\n   * Properties for a Request Type in next-gen are stored as Issue Type properties and therefore can also be deleted by\n   * calling the Jira Cloud Platform [Delete issue type\n   * property](https://developer.atlassian.com/cloud/jira/platform/rest/v3/#api-rest-api-3-issuetype-issueTypeId-properties-propertyKey-delete)\n   * endpoint.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**: Jira\n   * project administrator with a Jira Service Management agent license.\n   */\n  async deleteProperty<T = void>(parameters: Parameters.DeleteProperty, callback?: never): Promise<T>;\n  async deleteProperty<T = void>(parameters: Parameters.DeleteProperty, callback?: Callback<T>): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/requesttype/${parameters.requestTypeId}/property/${parameters.propertyKey}`,\n      method: 'DELETE',\n      headers: {\n        'X-ExperimentalApi': 'opt-in',\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  /**\n   * This method returns a service desk's customer request type groups. Jira Service Management administrators can\n   * arrange the customer request type groups in an arbitrary order for display on the customer portal; the groups are\n   * returned in this order.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the service desk.\n   */\n  async getRequestTypeGroups<T = Models.PagedRequestTypeGroup>(\n    parameters: Parameters.GetRequestTypeGroups,\n    callback: Callback<T>,\n  ): Promise<void>;\n  /**\n   * This method returns a service desk's customer request type groups. Jira Service Management administrators can\n   * arrange the customer request type groups in an arbitrary order for display on the customer portal; the groups are\n   * returned in this order.\n   *\n   * **[Permissions](https://developer.atlassian.com/cloud/jira/service-desk/rest/intro/#permissions) required**:\n   * Permission to view the service desk.\n   */\n  async getRequestTypeGroups<T = Models.PagedRequestTypeGroup>(\n    parameters: Parameters.GetRequestTypeGroups,\n    callback?: never,\n  ): Promise<T>;\n  async getRequestTypeGroups<T = Models.PagedRequestTypeGroup>(\n    parameters: Parameters.GetRequestTypeGroups,\n    callback?: Callback<T>,\n  ): Promise<void | T> {\n    const config: RequestConfig = {\n      url: `/rest/servicedeskapi/servicedesk/${parameters.serviceDeskId}/requesttypegroup`,\n      method: 'GET',\n      params: {\n        start: parameters.start,\n        limit: parameters.limit,\n      },\n    };\n\n    return this.client.sendRequest(config, callback);\n  }\n\n  private async _convertToFile(\n    attachment: Parameters.Attachment,\n    mime: Mime,\n    // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n    Readable?: typeof import('stream').Readable,\n  ): Promise<File | Blob> {\n    const mimeType = attachment.mimeType ?? (mime.getType(attachment.filename) || undefined);\n\n    if (attachment.file instanceof Blob || attachment.file instanceof File) {\n      return attachment.file;\n    }\n\n    if (typeof attachment.file === 'string') {\n      return new File([attachment.file], attachment.filename, { type: mimeType });\n    }\n\n    if (Readable && attachment.file instanceof Readable) {\n      return this._streamToBlob(attachment.file, attachment.filename, mimeType);\n    }\n\n    if (attachment.file instanceof ReadableStream) {\n      return this._streamToBlob(attachment.file, attachment.filename, mimeType);\n    }\n\n    if (ArrayBuffer.isView(attachment.file) || attachment.file instanceof ArrayBuffer) {\n      return new File([attachment.file], attachment.filename, { type: mimeType });\n    }\n\n    throw new Error('Unsupported attachment file type.');\n  }\n\n  private async _streamToBlob(\n    // eslint-disable-next-line @typescript-eslint/consistent-type-imports\n    stream: import('stream').Readable | ReadableStream,\n    filename: string,\n    mimeType?: string,\n  ): Promise<File> {\n    if (typeof window === 'undefined' && stream instanceof (await import('stream')).Readable) {\n      return new Promise((resolve, reject) => {\n        const chunks: Uint8Array[] = [];\n\n        stream.on('data', chunk => chunks.push(chunk));\n        stream.on('end', () => {\n          const blob = new Blob(chunks, { type: mimeType });\n\n          resolve(new File([blob], filename, { type: mimeType }));\n        });\n        stream.on('error', reject);\n      });\n    }\n\n    if (stream instanceof ReadableStream) {\n      const reader = stream.getReader();\n      const chunks: Uint8Array[] = [];\n\n      let done = false;\n\n      while (!done) {\n        const { value, done: streamDone } = await reader.read();\n\n        if (value) chunks.push(value);\n        done = streamDone;\n      }\n\n      const blob = new Blob(chunks, { type: mimeType });\n\n      return new File([blob], filename, { type: mimeType });\n    }\n\n    throw new Error('Unsupported stream type.');\n  }\n}\n","export * from './additionalComment';\nexport * from './approval';\nexport * from './approvalDecisionRequest';\nexport * from './approver';\nexport * from './article';\nexport * from './attachment';\nexport * from './attachmentCreate';\nexport * from './attachmentCreateResult';\nexport * from './attachmentLink';\nexport * from './avatarUrls';\nexport * from './comment';\nexport * from './commentCreate';\nexport * from './content';\nexport * from './csatFeedbackFull';\nexport * from './customerCreate';\nexport * from './customerRequest';\nexport * from './customerRequestAction';\nexport * from './customerRequestActions';\nexport * from './customerRequestCreateMeta';\nexport * from './customerRequestFieldValue';\nexport * from './customerRequestLink';\nexport * from './customerRequestStatus';\nexport * from './customerTransition';\nexport * from './customerTransitionExecution';\nexport * from './date';\nexport * from './duration';\nexport * from './entityProperty';\nexport * from './insightWorkspace';\nexport * from './issue';\nexport * from './issueTransition';\nexport * from './jsonType';\nexport * from './organization';\nexport * from './organizationCreate';\nexport * from './organizationServiceDeskUpdate';\nexport * from './pagedApproval';\nexport * from './pagedArticle';\nexport * from './pagedAttachment';\nexport * from './pagedComment';\nexport * from './pagedCustomerRequest';\nexport * from './pagedCustomerRequestStatus';\nexport * from './pagedCustomerTransition';\nexport * from './pagedInsightWorkspace';\nexport * from './pagedIssue';\nexport * from './pagedLink';\nexport * from './pagedOrganization';\nexport * from './pagedQueue';\nexport * from './pagedRequestType';\nexport * from './pagedRequestTypeGroup';\nexport * from './pagedServiceDesk';\nexport * from './pagedSlaInformation';\nexport * from './pagedUser';\nexport * from './propertyKey';\nexport * from './propertyKeys';\nexport * from './queue';\nexport * from './renderedValue';\nexport * from './requestCreate';\nexport * from './requestNotificationSubscription';\nexport * from './requestParticipantUpdate';\nexport * from './requestType';\nexport * from './requestTypeCreate';\nexport * from './requestTypeField';\nexport * from './requestTypeFieldValue';\nexport * from './requestTypeGroup';\nexport * from './requestTypeIcon';\nexport * from './requestTypeIconLink';\nexport * from './selfLink';\nexport * from './serviceDesk';\nexport * from './serviceDeskCustomer';\nexport * from './slaInformation';\nexport * from './slaInformationCompletedCycle';\nexport * from './slaInformationOngoingCycle';\nexport * from './softwareInfo';\nexport * from './source';\nexport * from './statusCategory';\nexport * from './statusDetails';\nexport * from './user';\nexport * from './userDetails';\nexport * from './userLink';\nexport * from './usersOrganizationUpdate';\n","export * from './addCustomers';\nexport * from './addOrganization';\nexport * from './addRequestParticipants';\nexport * from './addUsersToOrganization';\nexport * from './answerApproval';\nexport * from './attachTemporaryFile';\nexport * from './createAttachment';\nexport * from './createCustomer';\nexport * from './createCustomerRequest';\nexport * from './createOrganization';\nexport * from './createRequestComment';\nexport * from './createRequestType';\nexport * from './deleteFeedback';\nexport * from './deleteOrganization';\nexport * from './deleteOrganizationProperty';\nexport * from './deleteProperty';\nexport * from './deleteProperty';\nexport * from './deleteRequestType';\nexport * from './getAllRequestTypes';\nexport * from './getApprovalById';\nexport * from './getApprovals';\nexport * from './getArticles';\nexport * from './getArticles';\nexport * from './getAttachmentContent';\nexport * from './getAttachmentsForRequest';\nexport * from './getAttachmentThumbnail';\nexport * from './getCommentAttachments';\nexport * from './getCustomerRequestByIdOrKey';\nexport * from './getCustomerRequests';\nexport * from './getCustomerRequestStatus';\nexport * from './getCustomers';\nexport * from './getCustomerTransitions';\nexport * from './getFeedback';\nexport * from './getInsightWorkspaces';\nexport * from './getIssuesInQueue';\nexport * from './getOrganization';\nexport * from './getOrganizationProperty';\nexport * from './getOrganizationPropertyKeys';\nexport * from './getOrganizations';\nexport * from './getOrganizations';\nexport * from './getPropertiesKeys';\nexport * from './getPropertiesKeys';\nexport * from './getProperty';\nexport * from './getProperty';\nexport * from './getQueue';\nexport * from './getQueues';\nexport * from './getRequestCommentById';\nexport * from './getRequestComments';\nexport * from './getRequestParticipants';\nexport * from './getRequestTypeById';\nexport * from './getRequestTypeFields';\nexport * from './getRequestTypeGroups';\nexport * from './getRequestTypes';\nexport * from './getServiceDeskById';\nexport * from './getServiceDesks';\nexport * from './getSlaInformation';\nexport * from './getSlaInformationById';\nexport * from './getSubscriptionStatus';\nexport * from './getUsersInOrganization';\nexport * from './performCustomerTransition';\nexport * from './postFeedback';\nexport * from './removeCustomers';\nexport * from './removeOrganization';\nexport * from './removeRequestParticipants';\nexport * from './removeUsersFromOrganization';\nexport * from './setOrganizationProperty';\nexport * from './setProperty';\nexport * from './setProperty';\nexport * from './subscribe';\nexport * from './unsubscribe';\n","import { BaseClient } from '../../clients/baseClient';\nimport { Customer } from '../customer';\nimport { Info } from '../info';\nimport { Insight } from '../insight';\nimport { KnowledgeBase } from '../knowledgeBase';\nimport { Organization } from '../organization';\nimport { Request } from '../request';\nimport { RequestType } from '../requestType';\nimport { ServiceDesk } from '../serviceDesk';\n\nexport class ServiceDeskClient extends BaseClient {\n  customer = new Customer(this);\n  info = new Info(this);\n  insights = new Insight(this);\n  knowledgeBase = new KnowledgeBase(this);\n  organization = new Organization(this);\n  request = new Request(this);\n  requestType = new RequestType(this);\n  serviceDesk = new ServiceDesk(this);\n}\n","import { AgileClient } from './agile';\nimport { BaseClient } from './clients';\nimport type { Config } from './config';\nimport { ServiceDeskClient } from './serviceDesk';\nimport { Version2Client } from './version2';\nimport { Version3Client } from './version3';\n\nexport enum ClientType {\n  Agile = 'agile',\n  Version2 = 'version2',\n  Version3 = 'version3',\n  ServiceDesk = 'serviceDesk',\n}\n\nexport function createClient(clientType: ClientType.Agile, config: Config): AgileClient;\nexport function createClient(clientType: ClientType.Version2, config: Config): Version2Client;\nexport function createClient(clientType: ClientType.Version3, config: Config): Version3Client;\nexport function createClient(clientType: ClientType.ServiceDesk, config: Config): ServiceDeskClient;\nexport function createClient(clientType: ClientType, config: Config): BaseClient {\n  switch (clientType) {\n    case ClientType.Agile:\n      return new AgileClient(config);\n    case ClientType.Version2:\n      return new Version2Client(config);\n    case ClientType.Version3:\n      return new Version3Client(config);\n    case ClientType.ServiceDesk:\n      return new ServiceDeskClient(config);\n    default:\n      return new BaseClient(config);\n  }\n}\n"],"mappings":";;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACKO,IAAM,UAAN,MAAc;AAAA,EACnB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAcrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,2BAA2B,WAAW,OAAO;AAAA,MAClD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,gBAAgB,WAAW;AAAA,QAC3B,iBAAiB,WAAW;AAAA,QAC5B,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjEO,IAAM,QAAN,MAAY;AAAA,EACjB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAqBrC,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,MAAM,YAAY;AAAA,QAClB,MAAM,YAAY;AAAA,QAClB,gBAAgB,YAAY;AAAA,QAC5B,mBAAmB,YAAY;AAAA,QAC/B,iBAAiB,YAAY;AAAA,QAC7B,gBAAgB,YAAY;AAAA,QAC5B,yBAAyB,YAAY;AAAA,QACrC,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,QACpB,qBAAqB,YAAY;AAAA,QACjC,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0DA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ;AAAA,MACxD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAcA,MAAM,SAA8B,YAAiC,UAA2C;AAC9G,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAMA,MAAM,YAAsB,YAAoC,UAA2C;AACzG,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoDA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,SACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO,SAAS,WAAW,MAAM;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAUA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAOA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,gBAAgB,WAAW;AAAA,QAC3B,iBAAiB,WAAW;AAAA,QAC5B,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqCA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAeA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO,eAAe,WAAW,WAAW;AAAA,MACrF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO,eAAe,WAAW,WAAW;AAAA,MACrF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO,eAAe,WAAW,WAAW;AAAA,MACrF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAeA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO,gBAAgB,WAAW,aAAa;AAAA,MACxF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAUA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAeA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO,WAAW,WAAW,QAAQ;AAAA,MAC9E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,OAAO;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACr2BO,IAAM,SAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAyCrC,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,QACnB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,uBAAuB,WAAW;AAAA,MACpC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,UAAU,WAAW,WAAW,WAAW;AAAA,MACzF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,UAAU,WAAW,WAAW,WAAW;AAAA,MACzF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,uBAAuB,WAAW;AAAA,MACpC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvLO,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4CrC,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,QACvB,aAAa,WAAW;AAAA,QACxB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,uBAAuB,WAAW;AAAA,MACpC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,mCAAmC,WAAW,UAAU,iBAAiB,WAAW,aAAa,gBAAgB,WAAW,wBAAwB;AAAA,MACzJ,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA2BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,mCAAmC,WAAW,UAAU,iBAAiB,WAAW,aAAa,gBAAgB,WAAW,wBAAwB;AAAA,MACzJ,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,uBAAuB,WAAW;AAAA,MACpC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,mCAAmC,WAAW,UAAU,iBAAiB,WAAW,aAAa,gBAAgB,WAAW,wBAAwB;AAAA,MACzJ,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChOO,IAAM,yBAAN,MAA6B;AAAA,EAClC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,oBAAoB,WAAW;AAAA,QAC/B,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,QACvB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAeA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,iCAAiC,WAAW,YAAY;AAAA,MAC7D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,iCAAiC,WAAW,YAAY;AAAA,MAC7D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAMA,MAAM,aAA0B,YAAqC,UAA2C;AAC9G,UAAM,SAAwB;AAAA,MAC5B,KAAK,iCAAiC,WAAW,YAAY,IAAI,WAAW,UAAU,IAAI,WAAW,QAAQ;AAAA,MAC7G,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtLO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8CrC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,WAAW;AAAA,MACzD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,WAAW;AAAA,MACzD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtLO,IAAM,OAAN,MAAW;AAAA,EAChB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA2BrC,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,KAAK,YAAY;AAAA,QACjB,eAAe,YAAY;AAAA,QAC3B,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,QAAyB,YAAgC,UAA2C;AACxG,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,WAAW;AAAA,MACnD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,WAAW;AAAA,MACnD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,MAAM,WAAW;AAAA,QACjB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,WAAW;AAAA,MACnD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,WAAW;AAAA,MACnD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,UAAoB,YAAkC,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,WAAW;AAAA,MACnD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,eAAe,WAAW;AAAA,QAC1B,gBAAgB,WAAW;AAAA,QAC3B,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjOO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0CrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,QAClB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,aAAa;AAAA,MAC5D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,aAAa;AAAA,MAC5D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1LO,IAAM,QAAN,MAAY;AAAA,EACjB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoBrC,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,gBAAgB,WAAW;AAAA,QAC3B,iBAAiB,WAAW;AAAA,QAC5B,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,SAA2B,YAAiC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,YAAY;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,YAAY;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,YAAY;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzJO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW,aAAa,KAAK,GAAG;AAAA,MAChD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6CA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,UAAU;AAAA,MAC5D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,UAAU;AAAA,MAC5D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8CAA8C,WAAW,QAAQ;AAAA,MACtE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,8CAA8C,WAAW,QAAQ;AAAA,MACtE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9VO,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0CrC,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,QACvB,aAAa,WAAW;AAAA,QACxB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,uBAAuB,WAAW;AAAA,QAClC,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,YAAY;AAAA,MAChE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,YAAY;AAAA,MAChE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,uBAAuB,WAAW;AAAA,MACpC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/LO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoBrC,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,oBAAoD,UAA2C;AACnG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uCAAuC,WAAW,WAAW;AAAA,MAClE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8CA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,QACvB,iBAAiB,WAAW;AAAA,QAC5B,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,eAAe;AAAA,MACnE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,eAAe;AAAA,MACnE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3TO,IAAM,SAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,QACjB,MAAM,WAAW;AAAA,QACjB,eAAe,WAAW;AAAA,QAC1B,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,UAA6B,YAAkC,UAA2C;AAC9G,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ;AAAA,MAClD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ;AAAA,MAClD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,QACjB,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,eAAe,WAAW;AAAA,QAC1B,MAAM,WAAW;AAAA,QACjB,WAAW,WAAW;AAAA,QACtB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ;AAAA,MAClD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,QACjB,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,eAAe,WAAW;AAAA,QAC1B,MAAM,WAAW;AAAA,QACjB,WAAW,WAAW;AAAA,QACtB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAMA,MAAM,aAAuB,YAAqC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ;AAAA,MAClD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ;AAAA,MAClD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ;AAAA,MAClD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,gBAAgB,WAAW;AAAA,QAC3B,iBAAiB,WAAW;AAAA,QAC5B,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ;AAAA,MAClD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,YAAyB,YAAoC,UAA2C;AAC5G,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ,eAAe,WAAW,WAAW;AAAA,MACvF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,YAAyB,YAAoC,UAA2C;AAC5G,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ,eAAe,WAAW,WAAW;AAAA,MACvF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,eAAyB,YAAuC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ,eAAe,WAAW,WAAW;AAAA,MACvF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAMA,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,QAAQ;AAAA,MAClD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpWA;;;ACAA;;;ACEA,OAAO,WAAW;;;ACFlB,SAAS,SAAS;AAWX,IAAM,kBAAkB,EAC5B,OAAO;AAAA,EACN,OAAO,EAAE,OAAO;AAAA,EAChB,UAAU,EAAE,OAAO;AACrB,CAAC,EACA,OAAO;AAIH,IAAM,eAAe,EACzB,OAAO;AAAA,EACN,aAAa,EAAE,OAAO;AACxB,CAAC,EACA,OAAO;AAKH,IAAM,oBAAoB,EAC9B,OAAO;AAAA,EACN,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,SAAS;AAAA,EAC/D,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,SAAS;AACpE,CAAC,EACA,OAAO;AAIH,IAAM,eAAe,EACzB,OAAO;AAAA,EACN,MAAM,EAAE,OAAO,EAAE,IAAI;AAAA,EACrB,YAAY,EAAE,QAAQ,EAAE,SAAS;AAAA;AAAA,EAEjC,uBAAuB,EAAE,QAAQ,EAAE,SAAS;AAAA,EAC5C,mBAAmB,EAAE,IAAI,EAAE,SAAS;AAAA,EACpC,gBAAgB,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,OAAO,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,aAAa,CAAC,CAAC,CAAC,EAAE,SAAS;AAAA,EAC7G,aAAa,kBAAkB,SAAS;AAC1C,CAAC,EACA,OAAO;;;AC9CV,IAAM,iBAAiB;AAEvB,IAAM,aAAa,CAAC,UAAkB;AACpC,UAAQ,MAAM,QAAQ,SAAS,IAAI;AAEnC,MAAI,UAAU;AAEd,WAAS,IAAI,GAAG,IAAI,MAAM,QAAQ,KAAK;AACrC,UAAM,IAAI,MAAM,WAAW,CAAC;AAE5B,QAAI,IAAI,KAAK;AACX,iBAAW,OAAO,aAAa,CAAC;AAAA,IAClC,WAAW,IAAI,OAAO,IAAI,MAAM;AAC9B,iBAAW,OAAO,aAAc,KAAK,IAAK,GAAG;AAE7C,iBAAW,OAAO,aAAc,IAAI,KAAM,GAAG;AAAA,IAC/C,OAAO;AACL,iBAAW,OAAO,aAAc,KAAK,KAAM,GAAG;AAE9C,iBAAW,OAAO,aAAe,KAAK,IAAK,KAAM,GAAG;AAEpD,iBAAW,OAAO,aAAc,IAAI,KAAM,GAAG;AAAA,IAC/C;AAAA,EACF;AAEA,SAAO;AACT;AAEO,IAAM,SAAS,CAAC,UAAkB;AACvC,MAAI,SAAS;AACb,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI;AACJ,MAAI,IAAI;AAER,UAAQ,WAAW,KAAK;AAExB,SAAO,IAAI,MAAM,QAAQ;AACvB,WAAO,MAAM,WAAW,GAAG;AAC3B,WAAO,MAAM,WAAW,GAAG;AAC3B,WAAO,MAAM,WAAW,GAAG;AAE3B,WAAO,QAAQ;AACf,YAAS,OAAO,MAAM,IAAM,QAAQ;AACpC,YAAS,OAAO,OAAO,IAAM,QAAQ;AACrC,WAAO,OAAO;AAEd,QAAI,MAAM,IAAI,GAAG;AACf,aAAO,OAAO;AAAA,IAChB,WAAW,MAAM,IAAI,GAAG;AACtB,aAAO;AAAA,IACT;AAEA,cAAU,GAAG,eAAe,OAAO,IAAI,CAAC,GAAG,eAAe,OAAO,IAAI,CAAC,GAAG,eAAe;AAAA,MACtF;AAAA,IACF,CAAC,GAAG,eAAe,OAAO,IAAI,CAAC;AAAA,EACjC;AAEA,SAAO;AACT;;;AC9DO,SAAS,+BAA+B,oBAA+B;AAC5E,QAAM,QAAQ,mBAAmB;AACjC,QAAM,SAAS,mBAAmB;AAElC,QAAM,QAAQ,OAAO,GAAG,KAAK,IAAI,MAAM,EAAE;AAEzC,SAAO,SAAS,KAAK;AACvB;;;ACRO,SAAS,gCAAgC,oBAA4B;AAC1E,SAAO,UAAU,mBAAmB,WAAW;AACjD;;;ACDA,eAAsB,uBACpB,gBAC6B;AAC7B,MAAI,CAAC,gBAAgB;AACnB,WAAO;AAAA,EACT;AAEA,MAAI,WAAW,gBAAgB;AAC7B,WAAO,+BAA+B,eAAe,KAAK;AAAA,EAC5D;AAEA,SAAO,gCAAgC,eAAe,MAAM;AAC9D;;;ACdO,IAAM,cAAc,CAAC,QAA+B,OAAO,QAAQ;AAEnE,IAAM,QAAQ,CAAC,QAAsC,YAAY,GAAG,KAAK,QAAQ;AAEjF,IAAM,WAAW,CAAC,OAA0B,CAAC,MAAM,EAAE,KAAK,OAAO,OAAO;AAExE,IAAM,WAAW,CAAC,QAA4B,OAAO,QAAQ;AAE7D,IAAM,WAAW,CAAC,QAA4B,OAAO,QAAQ;AAQ7D,IAAM,2BAA2B;AACjC,IAAM,4BAA4B;AAClC,IAAM,yBAAyB;AAC/B,IAAM,gCAAgC;AAGtC,IAAM,gBAAN,cAA4B,MAAM;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EA+BvC,YACkB,UAChB,QACA,SACA;AACA,UAAM;AAJU;AAMhB,SAAK,OAAO,KAAK,SAAS;AAC1B,SAAK,QAAQ,KAAK,UAAU,UAAU,OAAO;AAC7C,SAAK,OAAO,KAAK,SAAS,QAAQ;AAClC,SAAK,UAAU,KAAK,YAAY,QAAQ;AACxC,SAAK,SAAS,KAAK,WAAW,UAAU,MAAM;AAC9C,SAAK,aAAa,KAAK,eAAe,UAAU,KAAK,MAAM;AAAA,EAC7D;AAAA,EAEgB;AAAA,EAEA;AAAA,EAEA;AAAA,EAEA;AAAA,EAEN,YAAY,UAAwC;AAC5D,QAAI,SAAS,QAAQ,GAAG;AACtB,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,QAAQ,KAAK,SAAU,SAAiC,OAAO,GAAG;AAC7E,aAAQ,SAAiC;AAAA,IAC3C;AAGA,QAAI,KAAK,aAAa;AACpB,aAAO,KAAK,YAAY,KAAK,MAAM,qBAAqB,GAAG,KAAK,GAAG,KAAK;AAAA,IAC1E;AAEA,WAAO;AAAA,EACT;AAAA,EAEU,UAAU,UAAwC,SAAyC;AACnG,QAAI,SAAS,OAAO;AAClB,aAAO,QAAQ;AAAA,IACjB;AAEA,QAAI,SAAS,QAAQ,KAAK,SAAU,SAAiC,KAAK,GAAG;AAC3E,aAAQ,SAAiC;AAAA,IAC3C;AAEA,WAAO;AAAA,EACT;AAAA,EAEU,SAAS,UAAgD;AACjE,QAAI,SAAS,QAAQ,KAAK,SAAU,SAAiC,IAAI,GAAG;AAC1E,aAAQ,SAAiC;AAAA,IAC3C;AAEA,WAAO;AAAA,EACT;AAAA,EAEU,WAAmB;AAC3B,WAAO,KAAK,YAAY;AAAA,EAC1B;AAAA,EAEU,WAAW,UAAwC,QAAyB;AACpF,QAAI,QAAQ;AACV,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,QAAQ,KAAK,SAAU,SAAiC,MAAM,GAAG;AAC5E,aAAQ,SAAiC;AAAA,IAC3C;AAEA,QAAI,SAAS,QAAQ,KAAK,SAAU,SAAiC,UAAU,GAAG;AAChF,aAAQ,SAAiC;AAAA,IAC3C;AAEA,WAAO;AAAA,EACT;AAAA,EAEU,eAAe,UAAwC,QAAqC;AACpG,QAAI,SAAS,QAAQ,KAAK,SAAU,SAAiC,UAAU,GAAG;AAChF,aAAQ,SAAiC;AAAA,IAC3C;AAEA,WAAO,SAAS,SAAY;AAAA,EAC9B;AACF;;;ANnIA,SAAS,gBAAgB;AAEzB,IAAM,mBAAmB;AACzB,IAAM,6BAA6B;AACnC,IAAM,sCAAsC;AAErC,IAAM,aAAN,MAAmC;AAAA,EAGxC,YAA+B,QAAgB;AAAhB;AAC7B,QAAI;AACF,WAAK,SAAS,aAAa,MAAM,MAAM;AAAA,IACzC,SAAS,GAAG;AACV,UAAI,aAAa,YAAY,EAAE,OAAO,CAAC,EAAE,YAAY,eAAe;AAClE,cAAM,IAAI;AAAA,UACR;AAAA,QACF;AAAA,MACF;AAEA,YAAM;AAAA,IACR;AAEA,SAAK,WAAW,MAAM,OAAO;AAAA,MAC3B,kBAAkB,KAAK,gBAAgB,KAAK,IAAI;AAAA,MAChD,GAAG,OAAO;AAAA,MACV,SAAS,OAAO;AAAA,MAChB,SAAS,KAAK,0BAA0B;AAAA,QACtC,CAAC,gBAAgB,GAAG,OAAO;AAAA,QAC3B,CAAC,0BAA0B,GAAG,OAAO,wBAAwB,sCAAsC;AAAA,QACnG,GAAG,OAAO,mBAAmB;AAAA,MAC/B,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAzBQ;AAAA,EA2BE,gBAAgB,YAAyC;AACjE,UAAM,QAAkB,CAAC;AAEzB,WAAO,QAAQ,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,KAAK,MAAM;AACnD,UAAI,UAAU,QAAQ,OAAO,UAAU,aAAa;AAClD;AAAA,MACF;AAEA,UAAI,MAAM,QAAQ,KAAK,GAAG;AACxB,gBAAQ,MAAM,KAAK,GAAG;AAAA,MACxB;AAEA,UAAI,iBAAiB,MAAM;AACzB,gBAAQ,MAAM,YAAY;AAAA,MAC5B,WAAW,UAAU,QAAQ,OAAO,UAAU,UAAU;AACtD,gBAAQ,KAAK,UAAU,KAAK;AAAA,MAC9B,WAAW,iBAAiB,UAAU;AACpC,cAAM,OAAO,MAAM;AAEnB,eAAO,QAAQ,MAAM,KAAK,IAAI;AAAA,MAChC;AAEA,YAAM,KAAK,GAAG,KAAK,OAAO,GAAG,CAAC,IAAI,KAAK,OAAO,KAAK,CAAC,EAAE;AAAA,IACxD,CAAC;AAED,WAAO,MAAM,KAAK,GAAG;AAAA,EACvB;AAAA,EAEU,OAAO,OAAe;AAC9B,WAAO,mBAAmB,KAAK,EAC5B,QAAQ,SAAS,GAAG,EACpB,QAAQ,QAAQ,GAAG,EACnB,QAAQ,SAAS,GAAG,EACpB,QAAQ,QAAQ,GAAG,EACnB,QAAQ,SAAS,GAAG,EACpB,QAAQ,SAAS,GAAG;AAAA,EACzB;AAAA,EAEU,0BAA0B,KAA+C;AACjF,WAAO,OAAO,QAAQ,GAAG,EACtB,OAAO,CAAC,CAAC,EAAE,KAAK,MAAM,OAAO,UAAU,WAAW,EAClD,OAAO,CAAC,aAAa,CAAC,KAAK,KAAK,OAAO,EAAE,GAAG,aAAa,CAAC,GAAG,GAAG,MAAM,IAAI,CAAC,CAAC;AAAA,EACjF;AAAA,EAIA,MAAM,YAAe,eAA8B,UAAkD;AACnG,QAAI;AACF,YAAM,WAAW,MAAM,KAAK,wBAA2B,aAAa;AAEpE,aAAO,KAAK,sBAAsB,SAAS,MAAM,QAAQ;AAAA,IAC3D,SAAS,GAAY;AACnB,aAAO,KAAK,qBAAqB,GAAG,QAAQ;AAAA,IAC9C;AAAA,EACF;AAAA,EAEA,MAAM,wBAA2B,eAAyD;AACxF,UAAM,wBAAwB;AAAA,MAC5B,GAAG;AAAA,MACH,SAAS,KAAK,0BAA0B;AAAA,QACtC,eAAe,MAAM,uBAAuB,KAAK,OAAO,cAAc;AAAA,QACtE,GAAG,cAAc;AAAA,MACnB,CAAC;AAAA,IACH;AAEA,WAAO,KAAK,SAAS,QAAW,qBAAqB;AAAA,EACvD;AAAA,EAEA,sBAAyB,UAAe,UAA0C;AAChF,UAAM,0BAA0B,aAAa,CAAC,SAAkB,SAAS,MAAM,IAAI;AACnF,UAAM,yBAAyB,CAAC,SAAe;AAE/C,UAAM,kBAAkB,2BAA2B;AAEnD,SAAK,OAAO,aAAa,aAAa,SAAS,IAAI;AAEnD,WAAO,gBAAgB,QAAQ;AAAA,EACjC;AAAA,EAEA,qBAAwB,GAAY,UAAsC;AACxE,UAAM,MAAM,KAAK,2BAA2B,CAAC;AAE7C,UAAM,uBAAuB,aAAa,CAAC,UAAqB,SAAS,KAAK;AAC9E,UAAM,sBAAsB,CAAC,UAAqB;AAChD,YAAM;AAAA,IACR;AAEA,UAAM,eAAe,wBAAwB;AAE7C,SAAK,OAAO,aAAa,UAAU,GAAG;AAEtC,WAAO,aAAa,GAAG;AAAA,EACzB;AAAA,EAEQ,2BAA2B,GAAuB;AACxD,QAAI,MAAM,aAAa,CAAC,KAAK,EAAE,UAAU;AACvC,aAAO,IAAI;AAAA,QACT;AAAA,UACE,MAAM,EAAE;AAAA,UACR,SAAS,EAAE;AAAA,UACX,MAAM,EAAE,SAAS;AAAA,UACjB,QAAQ,EAAE,SAAS;AAAA,UACnB,YAAY,EAAE,SAAS;AAAA,QACzB;AAAA,QACA,EAAE,SAAS;AAAA,QACX,EAAE,OAAO,EAAE;AAAA,MACb;AAAA,IACF;AAEA,QAAI,MAAM,aAAa,CAAC,GAAG;AACzB,aAAO;AAAA,IACT;AAEA,QAAI,SAAS,CAAC,KAAK,SAAU,EAA0B,QAAQ,GAAG;AAChE,aAAO,IAAI,cAAe,EAA0B,QAAQ;AAAA,IAC9D;AAEA,QAAI,aAAa,OAAO;AACtB,aAAO,IAAI,cAAc,CAAC;AAAA,IAC5B;AAEA,WAAO,IAAI,cAAc,2BAA2B,KAAK,EAAE,OAAO,EAAE,CAAC;AAAA,EACvE;AACF;;;AOxJO,IAAM,cAAN,cAA0B,WAAW;AAAA,EAC1C,UAAU,IAAI,QAAQ,IAAI;AAAA,EAC1B,QAAQ,IAAI,MAAM,IAAI;AAAA,EACtB,SAAS,IAAI,OAAO,IAAI;AAAA,EACxB,cAAc,IAAI,YAAY,IAAI;AAAA,EAClC,yBAAyB,IAAI,uBAAuB,IAAI;AAAA,EACxD,mBAAmB,IAAI,iBAAiB,IAAI;AAAA,EAC5C,OAAO,IAAI,KAAK,IAAI;AAAA,EACpB,eAAe,IAAI,aAAa,IAAI;AAAA,EACpC,QAAQ,IAAI,MAAM,IAAI;AAAA,EACtB,aAAa,IAAI,WAAW,IAAI;AAAA,EAChC,cAAc,IAAI,YAAY,IAAI;AAAA,EAClC,sBAAsB,IAAI,oBAAoB,IAAI;AAAA,EAClD,SAAS,IAAI,OAAO,IAAI;AAC1B;;;AC7BA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,wBAAAA;AAAA,EAAA,0BAAAC;AAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACMO,IAAM,qBAAN,MAAyB;AAAA,EAC9B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,UAAsD,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,UAAoB,YAAkC,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,eAAe,WAAW;AAAA,QAC1B,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtDO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAMrC,MAAM,UAA0C,UAA2C;AACzF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EASA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACrCO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,wBAAwB,WAAW;AAAA,QACnC,yBAAyB,WAAW;AAAA,MACtC;AAAA,MACA,MAAM;AAAA,QACJ,iBAAiB,WAAW;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kDAAkD,WAAW,UAAU;AAAA,MAC5E,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,wBAAwB,WAAW;AAAA,QACnC,yBAAyB,WAAW;AAAA,QACpC,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,yBAAyB,WAAW;AAAA,MACtC;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,SAAS,WAAW;AAAA,QACpB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3GO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,QAAQ;AAAA,MACjD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,eAAe,WAAW,WAAW;AAAA,MACjG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,eAAe,WAAW,WAAW;AAAA,MACjG,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,eAAe,WAAW,WAAW;AAAA,MACjG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,WAAW;AAAA,MAC3D,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,WAAW;AAAA,MAC3D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxOO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,uBAAqD,UAA2C;AACpG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,MAAM,OAAO,eAAe,WAAW,aAAa,WAAW;AAErE,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,GAAG;AAAA,MACvC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7DO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAqDrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,OAAO,YAAY;AAAA,QACnB,QAAQ,YAAY;AAAA,QACpB,MAAM,YAAY;AAAA,QAClB,IAAI,YAAY;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxEO,IAAM,UAAN,MAAc;AAAA,EACnB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,OAAO,OAAO,eAAe,WAAW,aAAa,WAAW;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,IAAI;AAAA,MAC/B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,WAA+B,YAAmC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,IAAI,UAAU,WAAW,QAAQ;AAAA,MACtF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,YAA+B,YAAoC,UAA2C;AAClH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,IAAI,UAAU,WAAW,QAAQ;AAAA,MACtF,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,QACrB,gBAAgB,WAAW;AAAA,MAC7B;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,WAAW;AAAA,QACd,GAAG,WAAW;AAAA,QACd,MAAM,WAAW,QAAQ;AAAA,MAC3B;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,aAAuB,YAAqC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,IAAI,UAAU,WAAW,cAAc,WAAW,WAAW,EAAE;AAAA,MACpH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,OAAO,OAAO,eAAe,WAAW,aAAa,WAAW;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK,0CAA0C,IAAI;AAAA,MACnD,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,QAAQ;AAAA,QACN,MAAM,OAAO,eAAe,WAAW,WAAW,OAAO;AAAA,QACzD,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,MAC/D;AAAA,IACF;AAEA,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,EAAE,gBAAgB,wBAAwB;AAAA,IACrD,IAAI,MAAM,KAAK,OAAO,wBAA2B,MAAM;AAEvD,UAAM,cAAc,wBAAwB,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK;AAE/D,WAAO,KAAK,OAAO,sBAAsB,EAAE,aAAa,OAAO,GAAG,QAAQ;AAAA,EAC5E;AAAA,EAsCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0CAA0C,WAAW,IAAI,WAAW,WAAW,EAAE;AAAA,MACtF,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,QAAQ;AAAA,QACN,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,EAAE,gBAAgB,wBAAwB;AAAA,IACrD,IAAI,MAAM,KAAK,OAAO,wBAA2B,MAAM;AAEvD,UAAM,cAAc,wBAAwB,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK;AAE/D,WAAO,KAAK,OAAO,sBAAsB,EAAE,aAAa,OAAO,GAAG,QAAQ;AAAA,EAC5E;AAAA,EAsCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0CAA0C,WAAW,IAAI,UAAU,WAAW,QAAQ;AAAA,MAC3F,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,QAAQ;AAAA,QACN,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,EAAE,gBAAgB,wBAAwB;AAAA,IACrD,IAAI,MAAM,KAAK,OAAO,wBAA2B,MAAM;AAEvD,UAAM,cAAc,wBAAwB,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK;AAE/D,WAAO,KAAK,OAAO,sBAAsB,EAAE,aAAa,OAAO,GAAG,QAAQ;AAAA,EAC5E;AACF;;;ACjVO,IAAM,uBAAN,MAA2B;AAAA,EAChC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoBrC,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1CO,SAAS,gBAAgB,KAAa,QAAgD;AAC3F,MAAI,OAAO,WAAW,YAAY,OAAO,WAAW,UAAU;AAC5D,WAAO,GAAG,GAAG,IAAI,MAAM;AAAA,EACzB;AAEA,MAAI,CAAC,QAAQ,QAAQ;AACnB,WAAO;AAAA,EACT;AAEA,SAAO,MAAM,OAAO,IAAI,WAAS,GAAG,GAAG,IAAI,KAAK,EAAE,EAAE,KAAK,GAAG;AAC9D;;;ACHO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,wBAAwB,WAAW;AAAA,MACrC;AAAA,MACA,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,MAAM,WAAW;AAAA,QACjB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,oBAAoB,WAAW;AAAA,QAC/B,WAAW,WAAW;AAAA,QACtB,wBAAwB,WAAW;AAAA,QACnC,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,gCACJ,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,YAAY;AAAA,QAC3B,WAAW,YAAY;AAAA,QACvB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,cAAc,OAAO,eAAe,WAAW,aAAa,WAAW;AAE7E,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW;AAAA,MACzC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,OAAO,eAAe,YAAY,gBAAgB,aAAa,WAAW,SAAS;AAAA,QAC9F,KAAK,OAAO,eAAe,YAAY,WAAW;AAAA,QAClD,UAAU,OAAO,eAAe,YAAY,gBAAgB,YAAY,WAAW,QAAQ;AAAA,MAC7F;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAcA,MAAM,UACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,iCAAiC,WAAW;AAAA,QAC5C,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,QACrB,OAAO,WAAW;AAAA,QAClB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAcA,MAAM,aAAuB,YAAqC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,WAAW,WAAW,QAAQ;AAAA,MAClF,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,aAAuB,YAAqC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,WAAW,WAAW,QAAQ;AAAA,MAClF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,UAAU,WAAW,MAAM;AAAA,MAC/E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4DA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,UAAU,WAAW,MAAM,eAAe,WAAW,WAAW;AAAA,MACpH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgEA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,UAAU,WAAW,MAAM,eAAe,WAAW,WAAW;AAAA,MACpH,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,UAAU,WAAW,MAAM,eAAe,WAAW,WAAW;AAAA,MACpH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,EAAE;AAAA,MAChC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,wBAAwB,WAAW;AAAA,MACrC;AAAA,MACA,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,MAAM,WAAW;AAAA,QACjB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,EAAE;AAAA,MAChC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,wBAAwB,WAAW;AAAA,MACrC;AAAA,MACA,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,MAAM,WAAW;AAAA,QACjB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3tBO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,WAAsC,UAA2C;AACrF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,cAAwB,YAAuC,UAA2C;AAC9G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACnFO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,qBAAmD,UAA2C;AAClG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,QAAQ,OAAO,eAAe,WAAW,aAAa,WAAW;AAEvE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE;AAAA,MACxC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,WAAW,WAAW;AAAA,QACtB,WAAW,WAAW;AAAA,QACtB,eAAe,WAAW;AAAA,QAC1B,WAAW,WAAW;AAAA,QACtB,QAAQ,WAAW;AAAA,QACnB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE,eAAe,WAAW,YAAY;AAAA,MAC9E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE,eAAe,WAAW,YAAY;AAAA,MAC9E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxPO,IAAM,UAAN,MAAc;AAAA,EACnB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,QACnB,0BAA0B,WAAW;AAAA,MACvC;AAAA,MACA,MAAM;AAAA,QACJ,qBAAqB,WAAW;AAAA,QAChC,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,WAAW,WAAW;AAAA,QACtB,iBAAiB,WAAW;AAAA,QAC5B,IAAI,WAAW;AAAA,QACf,KAAK,WAAW;AAAA,QAChB,MAAM,WAAW;AAAA,QACjB,OAAO,WAAW;AAAA,QAClB,WAAW,WAAW;AAAA,QACtB,MAAM,WAAW;AAAA,QACjB,kBAAkB,WAAW;AAAA,QAC7B,aAAa,WAAW;AAAA,QACxB,eAAe,WAAW;AAAA,QAC1B,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8CA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyCA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,mBAAmB,YAAY;AAAA,MACjC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,YAAY;AAAA,QACxB,WAAW,YAAY;AAAA,QACvB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,WAAW,YAAY;AAAA,QACvB,IAAI,YAAY;AAAA,QAChB,SAAS,YAAY;AAAA,QACrB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,QAAQ,YAAY;AAAA,QACpB,0BAA0B,YAAY;AAAA,QACtC,kBAAkB,YAAY;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,UACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,QACrD,0BAA0B,OAAO,eAAe,YAAY,WAAW;AAAA,MACzE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE;AAAA,MACxC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,QACnB,0BAA0B,WAAW;AAAA,MACvC;AAAA,MACA,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,KAAK,WAAW;AAAA,QAChB,WAAW,WAAW;AAAA,QACtB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuCA,MAAM,WACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,WAAwB,YAAmC,UAA2C;AAC1G,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE;AAAA,MACxC,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE;AAAA,MACxC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChnBO,IAAM,qBAAN,MAAyB;AAAA,EAC9B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgFrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,QACvB,iBAAiB,WAAW;AAAA,QAC5B,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvGO,IAAM,SAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,YAA8B,YAAoC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,YAAwB,YAAoC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,WAAW,YAAY;AAAA,QACvB,YAAY,YAAY;AAAA,QACxB,gBAAgB,YAAY;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,sBAAsB,WAAW;AAAA,QACjC,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA+CA,MAAM,WACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,SAAS,YAAY;AAAA,QACrB,WAAW,YAAY;AAAA,QACvB,YAAY,YAAY;AAAA,QACxB,iBAAiB,YAAY;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7RA,OAAO,UAAU;AAOV,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgDrC,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,OAAO,eAAe,YAAY,WAAW;AAAA,MACzD;AAAA,MACA,cAAc;AAAA,IAChB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,kBAAiD,UAA2C;AAChG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,OAAO,eAAe,YAAY,WAAW;AAAA,QACvD,mBAAmB,OAAO,eAAe,YAAY,WAAW;AAAA,QAChE,OAAO,OAAO,eAAe,YAAY,WAAW;AAAA,QACpD,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,MACA,cAAc;AAAA,IAChB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,EAAE;AAAA,MACjC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,EAAE;AAAA,MACjC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoDA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,EAAE;AAAA,MACjC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoDA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,EAAE;AAAA,MACjC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,WAAW,IAAI,SAAS;AAC9B,UAAM,cAAc,MAAM,QAAQ,WAAW,UAAU,IAAI,WAAW,aAAa,CAAC,WAAW,UAAU;AAGzG,QAAI;AAEJ,QAAI,OAAO,WAAW,aAAa;AACjC,YAAM,EAAE,UAAU,aAAa,IAAI,MAAM,OAAO,QAAQ;AAExD,iBAAW;AAAA,IACb;AAEA,qBAAiB,cAAc,aAAa;AAC1C,YAAM,OAAO,MAAM,KAAK,eAAe,YAAY,MAAM,QAAQ;AAEjE,UAAI,EAAE,gBAAgB,QAAQ,gBAAgB,OAAO;AACnD,cAAM,IAAI,MAAM,yCAAyC,OAAO,IAAI,EAAE;AAAA,MACxE;AAEA,eAAS,OAAO,QAAQ,MAAM,WAAW,QAAQ;AAAA,IACnD;AAEA,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,QACrB,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,MACN,eAAe;AAAA,MACf,kBAAkB;AAAA,IACpB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAEA,MAAc,eACZ,YACAC,OAEA,UACsB;AACtB,UAAM,WAAW,WAAW,aAAaA,MAAK,QAAQ,WAAW,QAAQ,KAAK;AAE9E,QAAI,WAAW,gBAAgB,QAAQ,WAAW,gBAAgB,MAAM;AACtE,aAAO,WAAW;AAAA,IACpB;AAEA,QAAI,OAAO,WAAW,SAAS,UAAU;AACvC,aAAO,IAAI,KAAK,CAAC,WAAW,IAAI,GAAG,WAAW,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,IAC5E;AAEA,QAAI,YAAY,WAAW,gBAAgB,UAAU;AACnD,aAAO,KAAK,cAAc,WAAW,MAAM,WAAW,UAAU,QAAQ;AAAA,IAC1E;AAEA,QAAI,WAAW,gBAAgB,gBAAgB;AAC7C,aAAO,KAAK,cAAc,WAAW,MAAM,WAAW,UAAU,QAAQ;AAAA,IAC1E;AAEA,QAAI,YAAY,OAAO,WAAW,IAAI,KAAK,WAAW,gBAAgB,aAAa;AACjF,aAAO,IAAI,KAAK,CAAC,WAAW,IAAI,GAAG,WAAW,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,IAC5E;AAEA,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACrD;AAAA,EAEA,MAAc,cAEZ,QACA,UACA,UACe;AACf,QAAI,OAAO,WAAW,eAAe,mBAAmB,MAAM,OAAO,QAAQ,GAAG,UAAU;AACxF,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,cAAM,SAAuB,CAAC;AAE9B,eAAO,GAAG,QAAQ,WAAS,OAAO,KAAK,KAAK,CAAC;AAC7C,eAAO,GAAG,OAAO,MAAM;AACrB,gBAAM,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhD,kBAAQ,IAAI,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC;AAAA,QACxD,CAAC;AACD,eAAO,GAAG,SAAS,MAAM;AAAA,MAC3B,CAAC;AAAA,IACH;AAEA,QAAI,kBAAkB,gBAAgB;AACpC,YAAM,SAAS,OAAO,UAAU;AAChC,YAAM,SAAuB,CAAC;AAE9B,UAAI,OAAO;AAEX,aAAO,CAAC,MAAM;AACZ,cAAM,EAAE,OAAO,MAAM,WAAW,IAAI,MAAM,OAAO,KAAK;AAEtD,YAAI,MAAO,QAAO,KAAK,KAAK;AAC5B,eAAO;AAAA,MACT;AAEA,YAAM,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhD,aAAO,IAAI,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,IACtD;AAEA,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACF;;;AC7gBO,IAAM,yBAAN,MAA6B;AAAA,EAClC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkCrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;AAE3E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,SAAS;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACrF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACrF,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACrF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7LO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAqCrC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,WAA+B,YAAmC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,IAAI,WAAW;AAAA,QACf,wBAAwB,WAAW;AAAA,QACnC,WAAW,WAAW;AAAA,QACtB,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,MAAM,WAAW;AAAA,QACjB,cAAc,WAAW;AAAA,QACzB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,WAA+B,YAAmC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,sBAAsB,WAAW;AAAA,QACjC,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxTO,IAAM,+BAAN,MAAmC;AAAA,EACxC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA2CrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,qBAAqB,YAAY;AAAA,QACjC,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,qBAAqB,YAAY;AAAA,QACjC,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjHO,IAAM,oCAAN,MAAwC;AAAA,EAC7C,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgDrC,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,IAAI,YAAY;AAAA,QAChB,gBAAgB,YAAY;AAAA,QAC5B,SAAS,YAAY;AAAA,QACrB,gBAAgB,YAAY;AAAA,QAC5B,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,MACA,MAAM;AAAA,QACJ,gBAAgB,YAAY;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,YAAY;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,IAAI,WAAW;AAAA,QACf,gBAAgB,WAAW;AAAA,QAC3B,SAAS,WAAW;AAAA,QACpB,gBAAgB,WAAW;AAAA,QAC3B,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,YAAY;AAAA,MACrD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpLO,IAAM,2BAAN,MAA+B;AAAA,EACpC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0CrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,OAAO,eAAe,YAAY,WAAW;AAAA,QAC7D,iBAAiB,OAAO,eAAe,YAAY,WAAW;AAAA,QAC9D,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,QACxD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO;AAAA,MAC5C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,IAAI,WAAW;AAAA,QACf,cAAc,WAAW;AAAA,QACzB,MAAM,WAAW;AAAA,QACjB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwGA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,QACxD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkGA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO;AAAA,MAC5C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,QACxD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,+CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO;AAAA,MAC5C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,MACA,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,QACxD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,qCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjtBO,IAAM,0BAAN,MAA8B;AAAA,EACnC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4CrC,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,iCAAiC,EAAE;AAAA,MACxC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,sBAAsB,WAAW;AAAA,QACjC,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA+BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS,WAAW,WAAW,QAAQ;AAAA,MAC1G,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS,WAAW,WAAW,QAAQ;AAAA,MAC1G,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpVO,IAAM,8BAAN,MAAkC;AAAA,EACvC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsCrC,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,QAAQ;AAAA,MAClC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,QAAQ;AAAA,MAC7C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,QAAQ;AAAA,MAClC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,MAC1D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,QAAQ;AAAA,MAClC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,MAC1D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,QAAQ,WAAW,WAAW,QAAQ;AAAA,MAC3E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,QAAQ,WAAW,WAAW,QAAQ;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,IAAI,WAAW;AAAA,QACf,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,QAAQ,WAAW,WAAW,QAAQ;AAAA,MAC3E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,QAAQ,WAAW,WAAW,QAAQ;AAAA,MAC3E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,KAAK,WAAW;AAAA,QAChB,wBAAwB,WAAW;AAAA,QACnC,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACrZO,IAAM,6BAAN,MAAiC;AAAA,EACtC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwCrC,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,mBAAmB,WAAW;AAAA,MAChC;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,YAAY;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,mBAAmB,WAAW;AAAA,MAChC;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC5GO,IAAM,2BAAN,MAA+B;AAAA,EACpC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsCrC,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,WAAW,YAAY;AAAA,QACvB,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,EAAE;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,EAAE;AAAA,MACzC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,EAAE;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,yBAAyB,WAAW;AAAA,MACtC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,oCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,4BAA4B,YAAY;AAAA,MAC1C;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,0CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,wCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,4BAA4B,WAAW;AAAA,QACvC,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wCAAwC,WAAW,EAAE;AAAA,MAC1D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,wCAAwC,EAAE;AAAA,MAC/C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wCAAwC,WAAW,EAAE;AAAA,MAC1D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mDACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wCAAwC,WAAW,EAAE;AAAA,MAC1D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACnoBO,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkCrC,MAAM,UAAqC,UAA2C;AACpF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,YAAY;AAAA,QACzB,MAAM,YAAY;AAAA,QAClB,aAAa,YAAY;AAAA,QACzB,MAAM,YAAY;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,MAAM,YAAY;AAAA,QAClB,IAAI,YAAY;AAAA,QAChB,OAAO,YAAY;AAAA,QACnB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,QACpB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,OAAO,YAAY;AAAA,QACnB,QAAQ,YAAY;AAAA,QACpB,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO;AAAA,MAC5C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,EAAE;AAAA,MACvC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,EAAE;AAAA,MACvC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,EAAE;AAAA,MACvC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzTO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,kBAA6C,UAA2C;AAC5F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,QACf,QAAQ,WAAW;AAAA,QACnB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,kBAAkB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEjF,UAAM,SAAwB;AAAA,MAC5B,KAAK,6BAA6B,eAAe;AAAA,MACjD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,6BAA6B,WAAW,eAAe;AAAA,MAC5D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,QACf,QAAQ,WAAW;AAAA,QACnB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,kBAAkB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEjF,UAAM,SAAwB;AAAA,MAC5B,KAAK,6BAA6B,eAAe;AAAA,MACjD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzMO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkDrC,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,cAAc,WAAW;AAAA,QACzB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA+BA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAS,OAAO,eAAe,WAAW,aAAa,WAAW;AAExE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,MAAM;AAAA,MACpC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmCA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAS,OAAO,eAAe,WAAW,aAAa,WAAW;AAExE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,MAAM;AAAA,MACpC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC5JO,IAAM,yBAAN,MAA6B;AAAA,EAClC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,gCAAyD,UAA2C;AACxG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,gCAA6C,UAA2C;AAC5F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACrEO,IAAM,2BAAN,MAA+B;AAAA,EACpC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,WAAW,YAAY;AAAA,QACvB,aAAa,YAAY;AAAA,QACzB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,0BAA0B,WAAW;AAAA,MACvC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,uCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,sBAAsB,YAAY;AAAA,QAClC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,EAAE;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,EAAE;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,0BAA0B,WAAW;AAAA,MACvC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,oBAAoB;AAAA,MACtE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,oBAAoB,iBAAiB,WAAW,cAAc;AAAA,MAChH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjTO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,cAAqC,UAA2C;AACpF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,YAAY;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,eAAyB,YAAuC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,KAAK,WAAW;AAAA,QAChB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,WAAW,gBAAgB,aAAa,YAAY,SAAS;AAAA,QAC7D,cAAc,YAAY;AAAA,QAC1B,aAAa,YAAY;AAAA,QACzB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,EAAE;AAAA,MAC/B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,eAAyB,YAAuC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,EAAE;AAAA,MAC1C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,eAA4B,YAAuC,UAA2C;AAClH,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,EAAE;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/RO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsDrC,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,YAAY;AAAA,QACzB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiGA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,WAAW;AAAA,MAC3D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsEA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,WAAW;AAAA,MAC3D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,WAAW;AAAA,MACtF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,WAAW;AAAA,MACtF,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,WAAW;AAAA,MACtF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxfO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4CrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,OAAO,eAAe,YAAY,WAAW;AAAA,MACzD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,cAAc,WAAW;AAAA,QACzB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,OAAO,eAAe,YAAY,WAAW;AAAA,MACzD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,MAAM;AAAA,MACjF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,MAAM;AAAA,MACjF,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,cAAc,WAAW;AAAA,QACzB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,MAAM;AAAA,MACjF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzUO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,eAAwC,UAA2C;AACvF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,MACjB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,gBAA0B,YAAwC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,KAAK,WAAW;AAAA,QAChB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,EAAE;AAAA,MAC5C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,EAAE;AAAA,MAC5C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,MAAM,WAAW;AAAA,QACjB,IAAI;AAAA,MACN;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,EAAE;AAAA,MAC5C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtQO,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwCrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,YAAY,YAAY;AAAA,QACxB,iBAAiB,YAAY;AAAA,QAC7B,kBAAkB,YAAY;AAAA,QAC9B,cAAc,YAAY;AAAA,QAC1B,mBAAmB,YAAY;AAAA,MACjC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,QAChB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,QACpB,cAAc,YAAY;AAAA,QAC1B,KAAK,YAAY;AAAA,QACjB,YAAY,YAAY;AAAA,QACxB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,eAAe,YAAY;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,QAChB,YAAY,WAAW;AAAA,QACvB,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8CA,MAAM,sCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,QACrB,iBAAiB,WAAW;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,0CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA;AAAA,QAEJ,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,cAAc,WAAW;AAAA,QACzB,KAAK,WAAW;AAAA,QAChB,YAAY,WAAW;AAAA,QACvB,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,QACvB,iBAAiB,WAAW;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3dO,IAAM,qBAAN,MAAyB;AAAA,EAC9B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,wBAAwB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEvF,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,qBAAqB;AAAA,MAC9D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,sBAAsB,OAAO,eAAe,YAAY,WAAW;AAAA,QACnE,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,6BAA6B,EAAE;AAAA,MACpC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvFO,IAAM,uBAAN,MAA2B;AAAA,EAChC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,wBAAoD,UAA2C;AACnG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,QAAQ,WAAW;AAAA,QACnB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,gBAAgB,MAAM,YAAY,EAAE;AAAA,QACxC,UAAU,gBAAgB,YAAY,YAAY,QAAQ;AAAA,QAC1D,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,eAAe,YAAY;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,gBAAgB,MAAM,YAAY,EAAE;AAAA,QACxC,UAAU,gBAAgB,YAAY,YAAY,QAAQ;AAAA,QAC1D,SAAS,gBAAgB,WAAW,YAAY,OAAO;AAAA,QACvD,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,uBAAuB,YAAY;AAAA,QACnC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,+BAA+B,WAAW;AAAA,QAC1C,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,gBAAgB,MAAM,YAAY,EAAE;AAAA,QACxC,WAAW,gBAAgB,aAAa,YAAY,SAAS;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,EAAE;AAAA,MAC3C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,EAAE;AAAA,MACtD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ;AAAA,MAC5D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ;AAAA,MAC5D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,UAAU,WAAW,OAAO;AAAA,MACxF,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,YAAyB,YAAoC,UAA2C;AAC5G,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,UAAU,WAAW,OAAO;AAAA,MACxF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,UAAU,WAAW,OAAO;AAAA,MACxF,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,UAAU,WAAW,OAAO,WAAW,WAAW,QAAQ;AAAA,MACtH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1lBO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsCrC,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,cAAc,OAAO,eAAe,WAAW,aAAa,WAAW;AAE7E,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW;AAAA,MACzC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,eAAe,WAAW,WAAW;AAAA,MACzF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,eAAe,WAAW,WAAW;AAAA,MACzF,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,eAAe,WAAW,WAAW;AAAA,MACzF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzKO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,QACpB,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,oBAAoB,WAAW;AAAA,QAC/B,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,mBAAmB,YAAY;AAAA,MACjC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,iBAAiB;AAAA,MAChE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,oBAAoB,WAAW;AAAA,MACjC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,oBAAoB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEnF,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,iBAAiB;AAAA,MACrD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,iBAAiB;AAAA,MAChE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,iBAAiB;AAAA,MAChE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,iBAAiB,cAAc,WAAW,WAAW;AAAA,MACpG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9aO,IAAM,yBAAN,MAA6B;AAAA,EAClC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,iCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,yBAAyB,YAAY;AAAA,MACvC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,4CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,qCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,yBAAyB,YAAY;AAAA,QACrC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,uBAAuB;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,0BAA0B,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzF,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,uBAAuB;AAAA,MACjE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,uCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,uBAAuB;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,uBAAuB;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,wCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,uBAAuB;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,oCACJ,YACA,UACmB;AACnB,UAAM,0BAA0B,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzF,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,uBAAuB;AAAA,MACjE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,OAAO,OAAO,eAAe,YAAY,WAAW;AAAA,MACtD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjbO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkCrC,MAAM,iBAAgD,UAA2C;AAC/F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,gBAAgB,WAAW;AAAA,QAC3B,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,EAAE;AAAA,MAChC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,EAAE;AAAA,MAChC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,wBAAwB,OAAO,eAAe,WAAW,WAAW,yBAAyB;AAAA,MAC/F;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,EAAE;AAAA,MAChC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,QACrB,gBAAgB,WAAW;AAAA,MAC7B;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,WAAW;AAAA,QACd,GAAG,WAAW;AAAA,QACd,MAAM,WAAW,QAAQ;AAAA,MAC3B;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/UO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0CrC,MAAM,SACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,QAAkB,YAAyC,UAA2C;AAC1G,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,WAAqB,YAA4C,UAA2C;AAChH,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7IO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwCrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8CA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChNO,IAAM,yBAAN,MAA6B;AAAA,EAClC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoCrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,SAAS;AAAA,MACjF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACtH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA2CA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACtH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACtH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9LO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8CrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,WAAW,WAAW,UAAU;AAAA,QAC/D,YAAY,OAAO,eAAe,WAAW,WAAW,aAAa;AAAA,QACrE,cAAc,OAAO,eAAe,WAAW,WAAW,eAAe;AAAA,QACzE,eAAe,OAAO,eAAe,WAAW,WAAW,gBAAgB;AAAA,QAC3E,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,WAA+B,YAAmC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,gBAAgB,WAAW;AAAA,QAC3B,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,QAAQ,WAAW;AAAA,QACnB,sBAAsB,WAAW;AAAA,MACnC;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,SAAS,WAAW;AAAA,QACpB,SAAS,WAAW;AAAA,QACpB,IAAI,WAAW;AAAA,QACf,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,kBAAkB,WAAW;AAAA,QAC7B,cAAc,WAAW;AAAA,QACzB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,WAAW;AAAA,QAC3B,sBAAsB,WAAW;AAAA,MACnC;AAAA,MACA,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,WAAW;AAAA,QAC3B,sBAAsB,WAAW;AAAA,MACnC;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,WAA+B,YAAmC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,gBAAgB,WAAW;AAAA,QAC3B,aAAa,WAAW;AAAA,QACxB,QAAQ,WAAW;AAAA,QACnB,sBAAsB,WAAW;AAAA,MACnC;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,kBAAkB,WAAW;AAAA,QAC7B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,gBAAgB,WAAW;AAAA,QAC3B,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,QACvB,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,KAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxjBO,IAAM,SAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0CrC,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,gBAAgB,WAAW;AAAA,QAC3B,YAAY,WAAW;AAAA,QACvB,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,UAAmC,UAA2C;AAClF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,MAC5B;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,iBAAiB,WAAW;AAAA,QAC5B,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoDA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuCA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6CA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,YAAY;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA+CA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,cAAc,WAAW;AAAA,QACzB,gBAAgB,WAAW;AAAA,QAC3B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,YAAY;AAAA,QACxB,aAAa,YAAY;AAAA,QACzB,cAAc,YAAY;AAAA,QAC1B,gBAAgB,YAAY;AAAA,QAC5B,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,cAAc;AAAA,MAC9D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,cAAc,eAAe,WAAW,WAAW;AAAA,MACnG,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,iBAAiB,YAAY;AAAA,MAC/B;AAAA,MACA,MAAM;AAAA,QACJ,8BAA8B,YAAY;AAAA,MAC5C;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,SACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,QAC7D,cAAc,OAAO,eAAe,WAAW,WAAW,eAAe;AAAA,QACzE,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,QAC7D,YAAY,OAAO,eAAe,WAAW,WAAW,aAAa;AAAA,QACrE,eAAe,OAAO,eAAe,WAAW,WAAW,gBAAgB;AAAA,MAC7E;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsDA,MAAM,UAAoB,YAAkC,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,wBAAwB,WAAW;AAAA,QACnC,sBAAsB,WAAW;AAAA,QACjC,aAAa,WAAW;AAAA,QACxB,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,iBAAiB,WAAW;AAAA,QAC5B,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,YAAsB,YAA6C,UAA2C;AAClH,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,OAAO,eAAe,WAAW,WAAW,iBAAiB;AAAA,MAC/E;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,YAAsB,YAAoC,UAA2C;AACzG,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,QAAQ,WAAW;AAAA,QACnB,kBAAkB,WAAW;AAAA,QAC7B,YAAY,WAAW;AAAA,QACvB,aAAa,WAAW;AAAA,QACxB,cAAc,WAAW;AAAA,QACzB,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,KAAK,WAAW;AAAA,QAChB,QAAQ,WAAW;AAAA,QACnB,MAAM,WAAW;AAAA,QACjB,MAAM,WAAW;AAAA,QACjB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,WAAW,WAAW,UAAU;AAAA,QAC/D,YAAY,OAAO,eAAe,WAAW,WAAW,aAAa;AAAA,MACvE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkHA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,wBAAwB,OAAO,eAAe,WAAW,WAAW,yBAAyB;AAAA,QAC7F,sBAAsB,OAAO,eAAe,WAAW,WAAW,uBAAuB;AAAA,MAC3F;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,OAAiB,YAA+B,UAA2C;AAC/F,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,UAAU,WAAW;AAAA,QACrB,SAAS,WAAW;AAAA,QACpB,UAAU,WAAW;AAAA,QACrB,IAAI,WAAW;AAAA,MACjB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,QAC7D,cAAc,OAAO,eAAe,WAAW,WAAW,eAAe;AAAA,QACzE,yBAAyB,OAAO,eAAe,WAAW,WAAW,0BAA0B;AAAA,QAC/F,+BACE,OAAO,eAAe,WAAW,WAAW,gCAAgC;AAAA,QAC9E,uBAAuB,OAAO,eAAe,WAAW,WAAW,wBAAwB;AAAA,MAC7F;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,aAAuB,YAAqC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,iBAAiB,WAAW;AAAA,QAC5B,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,QACvB,mBAAmB,WAAW;AAAA,QAC9B,YAAY,WAAW;AAAA,QACvB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjyCO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,kBAAkB,YAAY;AAAA,QAC9B,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0HA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkIA,MAAM,0CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/UO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,YAAY;AAAA,QACjB,iBAAiB,YAAY;AAAA,QAC7B,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,oBAAsD,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwHA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sCAAsC,WAAW,EAAE;AAAA,MACxD,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,iBAA2C,UAA2C;AAC1F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxOO,IAAM,MAAN,MAAU;AAAA,EACf,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgCrC,MAAM,gBAA6C,UAA2C;AAC5F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,wBAAwB,YAAY;AAAA,QACpC,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,YAAY;AAAA,QACvB,YAAY,YAAY;AAAA,QACxB,eAAe,YAAY;AAAA,QAC3B,gBAAgB,YAAY;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,YAAY;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjTO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,6BAA6B,WAAW;AAAA,MAC1C;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxIO,IAAM,SAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAerC,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChCO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAcrC,MAAM,WAA+B,UAA2C;AAC9E,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,2BAAqD,UAA2C;AACpG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,sCACJ,gBACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uDAAuD,cAAc;AAAA,MAC1E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjFO,IAAM,SAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsDrC,MAAM,cAA0B,YAAsC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsEA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB,OAAO,WAAW,UAAU,WAAW,eAAe;AAAA,MACxE;AAAA,MACA,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,MAClB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,UAA6B,UAA2C;AAC5E,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACnQO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0OrC,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,QAAQ;AAAA,MAC7C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8CA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ;AAAA,MACxD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ;AAAA,MACxD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ;AAAA,MACxD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ;AAAA,MACxD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,IAAI,WAAW;AAAA,QACf,YAAY,WAAW;AAAA,QACvB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ,eAAe,WAAW,YAAY;AAAA,MAC9F,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ,eAAe,WAAW,YAAY;AAAA,MAC9F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACrjBO,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4ErC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,YAAY;AAAA,QACxB,WAAW,YAAY;AAAA,QACvB,UAAU,YAAY;AAAA,QACtB,SAAS,YAAY;AAAA,QACrB,aAAa,YAAY;AAAA,QACzB,aAAa,YAAY;AAAA,QACzB,0BAA0B,YAAY;AAAA,QACtC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,kBAA0C,UAA2C;AACzF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsEA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,YAAY;AAAA,QACvB,mBAAmB,YAAY;AAAA,QAC/B,oBAAoB,YAAY;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7PO,IAAM,QAAN,MAAY;AAAA,EACjB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsBrC,MAAM,SACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,YAAY;AAAA,QAC5B,iBAAiB,YAAY;AAAA,QAC7B,QAAQ,YAAY;AAAA,QACpB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,WAAwB,YAAmC,UAA2C;AAC1G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,MACA,MAAM;AAAA,QACJ,sBAAsB,WAAW;AAAA,QACjC,cAAc,WAAW;AAAA,QACzB,gBAAgB,WAAW;AAAA,QAC3B,cAAc,WAAW;AAAA,QACzB,eAAe,WAAW;AAAA,QAC1B,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,QAAyB,YAAgC,UAA2C;AACxG,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4GA,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,YAAsB,YAAoC,UAA2C;AACzG,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,cAA2B,YAAsC,UAA2C;AAChH,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,UAAoB,YAAkC,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AClSO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,YAAY,gBAAgB,cAAc,YAAY,UAAU;AAAA,QAChE,UAAU,gBAAgB,YAAY,YAAY,QAAQ;AAAA,QAC1D,YAAY,YAAY;AAAA,QACxB,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,YAAY;AAAA,QACxB,YAAY,YAAY;AAAA,QACxB,UAAU,YAAY;AAAA,QACtB,UAAU,YAAY;AAAA,QACtB,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,uCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,QAAQ;AAAA,MACtD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,YAAY,WAAW;AAAA,QACvB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,QAAQ;AAAA,MACtD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,QAAQ;AAAA,MACtD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,QAAQ;AAAA,MACtD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,WAAW,gBAAgB,aAAa,WAAW,SAAS;AAAA,QAC5D,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACnUO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsBrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,IAAI,WAAW;AAAA,QACf,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,QACvB,gBAAgB,WAAW;AAAA,QAC3B,OAAO,WAAW;AAAA,QAClB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,WAAW,WAAW,EAAE;AAAA,MAC7E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,QACrB,gBAAgB,WAAW;AAAA,MAC7B;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,WAAW;AAAA,QACd,GAAG,WAAW;AAAA,QACd,MAAM,WAAW,QAAQ;AAAA,MAC3B;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvKO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,wBAAsD,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,EAAE;AAAA,MACtC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,EAAE;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,EAAE;AAAA,MACtC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxKO,IAAM,8BAAN,MAAkC;AAAA,EACvC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,MACjB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjHO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,kBAAkB,YAAY;AAAA,QAC9B,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,QAChB,UAAU,WAAW;AAAA,QACrB,cAAc,WAAW;AAAA,QACzB,aAAa,WAAW;AAAA,QACxB,IAAI,WAAW;AAAA,QACf,qBAAqB,WAAW;AAAA,QAChC,MAAM,WAAW;AAAA,QACjB,eAAe,WAAW;AAAA,QAC1B,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,cAAc,WAAW;AAAA,QACzB,kBAAkB,WAAW;AAAA,QAC7B,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,EAAE;AAAA,MAChC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,cAAc,WAAW;AAAA,QACzB,eAAe,WAAW;AAAA,QAC1B,cAAc,WAAW;AAAA,QACzB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,EAAE;AAAA,MAChC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,OAAO,eAAe,WAAW,WAAW,eAAe;AAAA,MAC3E;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,EAAE;AAAA,MAChC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,iBAAiB,WAAW;AAAA,QAC5B,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,iBAAiB,OAAO,eAAe,WAAW,WAAW,kBAAkB;AAAA,MACjF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9XO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsBrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;AAE3E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,SAAS;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,SAAS;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,oBAAoB,WAAW;AAAA,MACjC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxEO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAYrC,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,aAAa,WAAW,UAAU;AAAA,MACvF,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACnDO,IAAM,8BAAN,MAAkC;AAAA,EACvC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoBrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,MAAM,OAAO,eAAe,WAAW,aAAa,YAAY;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,MAAM,OAAO,eAAe,WAAW,aAAa,YAAY;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,OAAO,OAAO,eAAe,WAAW,aAAa,WAAW;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/GO,IAAM,2BAAN,MAA+B;AAAA,EACpC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,MACjB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjKO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,eAAe,WAAW,WAAW;AAAA,MAC1F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,eAAe,WAAW,WAAW;AAAA,MAC1F,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,eAAe,WAAW,WAAW;AAAA,MAC1F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvKO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA+BrC,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,SAAS,WAAW,EAAE;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,OAAO,WAAW;AAAA,QAClB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,UAAkC,YAAkC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,SAAS,WAAW,EAAE;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,YAAsB,YAAoC,UAA2C;AACzG,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,SAAS,WAAW,EAAE;AAAA,MAC3E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,MAAM,WAAW;AAAA,QACjB,OAAO,WAAW;AAAA,QAClB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,EAAE;AAAA,MAC3B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,WAAW,EAAE;AAAA,MACtC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,WAAW,EAAE;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AClPO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsCrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmCA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,SAAS,WAAW,EAAE;AAAA,MAC3E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,OAAO,eAAe,WAAW,WAAW,gBAAgB;AAAA,QAC3E,sBAAsB,OAAO,eAAe,WAAW,WAAW,uBAAuB;AAAA,MAC3F;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoEA,MAAM,mBAA6C,UAA2C;AAC5F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,EAAE;AAAA,MAC3B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,WAAW,EAAE;AAAA,MACtC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,WAAW,EAAE;AAAA,MACtC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,EAAE;AAAA,MAC3B,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,MAAM,OAAO,eAAe,WAAW,WAAW,OAAO;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AClaO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8CrC,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,YAAY;AAAA,QACrB,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7DO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoBrC,MAAM,mBAA6C,UAA2C;AAC5F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAMA,MAAM,6BAAuD,UAA2C;AACtG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,4BAA4B,cAAc;AAAA,MAC/C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,4BAA4B,cAAc;AAAA,MAC/C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChHO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,WAAW,WAAW,UAAU;AAAA,QAC/D,YAAY,OAAO,eAAe,WAAW,WAAW,aAAa;AAAA,QACrE,SAAS,OAAO,eAAe,WAAW,WAAW,UAAU;AAAA,QAC/D,OAAO,OAAO,eAAe,WAAW,WAAW,QAAQ;AAAA,QAC3D,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,QAC7D,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,IAAI,WAAW;AAAA,QACf,2BAA2B,WAAW;AAAA,QACtC,qBAAqB,WAAW;AAAA,QAChC,MAAM,WAAW;AAAA,QACjB,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,WAAW,WAAW;AAAA,QACtB,iBAAiB,WAAW;AAAA,QAC5B,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,WACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,EAAE;AAAA,MAC9B,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,UAAU,WAAW;AAAA,QACrB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,WAAW,WAAW;AAAA,QACtB,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE,YAAY,WAAW,YAAY;AAAA,MAC5E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,YAAgC,YAAoC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,EAAE;AAAA,MAC9B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,SAAS,WAAW;AAAA,QACpB,eAAe,WAAW;AAAA,QAC1B,OAAO,WAAW;AAAA,QAClB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,SAAS,WAAW;AAAA,QACpB,eAAe,WAAW;AAAA,QAC1B,OAAO,WAAW;AAAA,QAClB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqCA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,4BAA4B,WAAW;AAAA,QACvC,sBAAsB,WAAW;AAAA,QACjC,iBAAiB,WAAW;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,EAAE;AAAA,MAC9B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,SAAS,gBAAgB,WAAW,aAAa;AAAA,MACxF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC5lBO,IAAM,WAAN,MAAe;AAAA,EACpB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwDrC,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,QACrB,YAAY,WAAW;AAAA,QACvB,aAAa,WAAW;AAAA,QACxB,0BAA0B,WAAW;AAAA,QACrC,qBAAqB,WAAW;AAAA,QAChC,iBAAiB,WAAW;AAAA,QAC5B,uBAAuB,WAAW;AAAA,QAClC,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,MAAM,WAAW;AAAA,QACjB,oBAAoB,WAAW;AAAA,QAC/B,kBAAkB,WAAW;AAAA,QAC7B,oBAAoB,WAAW;AAAA,QAC/B,gBAAgB,WAAW;AAAA,QAC3B,KAAK,WAAW;AAAA,QAChB,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA+BA,MAAM,UAAgC,YAAmC,UAA2C;AAClH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,IAAI,YAAY;AAAA,QAChB,MAAM,YAAY;AAAA,QAClB,OAAO,YAAY;AAAA,QACnB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,QACpB,YAAY,YAAY;AAAA,QACxB,eAAe,YAAY;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,WACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,QAC7D,YAAY,OAAO,eAAe,WAAW,WAAW,aAAa;AAAA,MACvE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,QACrB,YAAY,WAAW;AAAA,QACvB,aAAa,WAAW;AAAA,QACxB,qBAAqB,WAAW;AAAA,QAChC,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,MAAM,WAAW;AAAA,QACjB,oBAAoB,WAAW;AAAA,QAC/B,kBAAkB,WAAW;AAAA,QAC7B,oBAAoB,WAAW;AAAA,QAC/B,gBAAgB,WAAW;AAAA,QAC3B,qBAAqB,WAAW;AAAA,QAChC,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,OAAO,eAAe,WAAW,WAAW,aAAa;AAAA,MACvE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,QACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;AAE3E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,SAAS;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/iBO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,QAAQ,YAAY;AAAA,QACpB,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,OAAO,OAAO,eAAe,WAAW,aAAa,WAAW;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ;AAAA,QACA,aAAa,OAAO,eAAe,YAAY,WAAW;AAAA,QAC1D,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,MACxD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,4BAA4B,WAAW,cAAc;AAAA,MAC1D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,4BAA4B,cAAc;AAAA,MAC/C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzJO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK;AAAA,MACxE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK;AAAA,MACxE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK,WAAW,WAAW,EAAE;AAAA,MAChG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK,WAAW,WAAW,EAAE;AAAA,MAChG,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/IO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAqBrC,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,YAAY;AAAA,QACtB,OAAO,YAAY;AAAA,QACnB,SAAS,YAAY;AAAA,QACrB,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,QAAQ;AAAA,MACpC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ;AAAA,MAC/C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK;AAAA,MACxE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,gBAA0B,YAAwC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK;AAAA,MACxE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK,SAAS,WAAW,GAAG;AAAA,MAC/F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpMO,IAAM,UAAN,MAAc;AAAA,EACnB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,WACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,aAAa,YAAY;AAAA,QACzB,OAAO,YAAY;AAAA,QACnB,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,OAAO;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ;AAAA,MAC/C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAcA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,QAAQ;AAAA,MACpC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,QAAQ;AAAA,MACpC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7OO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,cAA4C,UAA2C;AAC3F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1BO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,SACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/BO,IAAM,SAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,QACA,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,eAAyB,YAAuC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,OAAkC,YAAgC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,cAAc,YAAY;AAAA,QAC1B,gBAAgB,YAAY;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,QAAQ,YAAY,WAAW,SAAS;AAAA,MAChF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,QAAQ;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,QAAQ;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3QO,IAAM,QAAN,MAAY;AAAA,EACjB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA2CrC,MAAM,QACJ,YACA,UACmB;AACnB,UAAM,SAAS,OAAO,eAAe,WAAW,aAAa,WAAW;AAExE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,MAAM;AAAA,MAC/B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,WAAwB,YAA4C,UAA2C;AACnH,UAAM,SAAS,OAAO,eAAe,WAAW,aAAa,WAAW;AAExE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,MAAM;AAAA,MAC/B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxFO,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,SACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,QACnB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,IAAI,WAAW;AAAA,QACf,eAAe,WAAW;AAAA,QAC1B,eAAe,WAAW;AAAA,QAC1B,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,mBAAmB,WAAW,eAAe;AAAA,MAC7F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,mBAAmB,WAAW,eAAe;AAAA,MAC7F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,mBAAmB,WAAW,eAAe;AAAA,MAC7F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,eAAe,WAAW;AAAA,QAC1B,kBAAkB,WAAW;AAAA,QAC7B,MAAM,WAAW;AAAA,QACjB,eAAe,WAAW;AAAA,QAC1B,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,kBAAkB,WAAW,cAAc;AAAA,MAC3F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,kBAAkB,WAAW,cAAc;AAAA,MAC3F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,kBAAkB,WAAW,cAAc;AAAA,MAC3F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3TO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,sCAAgD,UAA2C;AAC/F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,YAAY;AAAA,QACjB,MAAM,YAAY;AAAA,QAClB,KAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,wCACJ,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,mCACJ,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,oBAAoB,WAAW;AAAA,QAC/B,oBAAoB,WAAW;AAAA,QAC/B,YAAY,WAAW;AAAA,QACvB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AClKO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,gBAAgB;AAAA,MAC/D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,mBAAmB,OAAO,eAAe,WAAW,aAAa,WAAW;AAElF,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,gBAAgB;AAAA,MACpD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChMO,IAAM,iBAAN,MAAqB;AAAA,EAC1B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkCrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,WAAW;AAAA,MAC1D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,WAAW;AAAA,MAC1D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,WAAW;AAAA,MAC1D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtLO,IAAM,aAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4CrC,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8DA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,WAAW,YAAY;AAAA,QACvB,UAAU,YAAY;AAAA,QACtB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,UAAU,YAAY;AAAA,QACtB,SAAS,YAAY;AAAA,QACrB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,oBAAoB,YAAY;AAAA,QAChC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8DA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,mBAAmB,gBAAgB,qBAAqB,WAAW,iBAAiB;AAAA,QACpF,YAAY,WAAW;AAAA,QACvB,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA2CA,MAAM,UAA6B,YAAmC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,UAAU,YAAY;AAAA,QACtB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqEA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwEA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW,aAAa,WAAW;AAAA,MAChD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgEA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,UAAU,YAAY;AAAA,QACtB,WAAW,YAAY;AAAA,QACvB,UAAU,YAAY;AAAA,QACtB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpmBO,IAAM,oBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sCAAsC,WAAW,WAAW;AAAA,MACjE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sCAAsC,WAAW,WAAW;AAAA,MACjE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AClFO,IAAM,QAAN,MAAY;AAAA,EACjB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,QAAyB,YAAgC,UAA2C;AACxG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,WAA4B,YAAmC,UAA2C;AAC9G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,KAAK,WAAW;AAAA,QAChB,MAAM,WAAW;AAAA,QACjB,UAAU,WAAW;AAAA,QACrB,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,QACrB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,WAAW,gBAAgB,aAAa,WAAW,SAAS;AAAA,MAC9D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,UAAU,gBAAgB,YAAY,WAAW,QAAQ;AAAA,QACzD,KAAK,gBAAgB,OAAO,WAAW,GAAG;AAAA,MAC5C;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,YAAY;AAAA,QACvB,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,eAA2B,YAAuC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;AAE3E,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;AAE3E,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,QACrB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,YAA+B,YAAqC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACneO,IAAM,WAAN,MAAe;AAAA,EACpB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,YAAY;AAAA,QACxB,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtNO,IAAM,uBAAN,MAA2B;AAAA,EAChC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,oCACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,mBAAmB,WAAW;AAAA,QAC9B,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,qBAAqB,WAAW;AAAA,QAChC,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,oBAAoB,WAAW,SAAS;AAAA,MACxF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,oBAAoB,WAAW,SAAS;AAAA,MACxF,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,oBAAoB,WAAW,SAAS;AAAA,MACxF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,OAAO,eAAe,YAAY,WAAW;AAAA,MAC7D;AAAA,MACA,MAAM;AAAA,QACJ,gBAAgB,OAAO,eAAe,YAAY,WAAW;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,QAC3B,YAAY,WAAW;AAAA,QACvB,qBAAqB,WAAW;AAAA,QAChC,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzhBO,IAAM,oCAAN,MAAwC;AAAA,EAC7C,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgCrC,MAAM,qCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,kBAAkB,WAAW;AAAA,QAC7B,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpFO,IAAM,kBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,iBAAiB,WAAW;AAAA,QAC5B,aAAa,WAAW;AAAA,QACxB,OAAO,WAAW;AAAA,QAClB,IAAI,WAAW;AAAA,QACf,mBAAmB,WAAW;AAAA,QAC9B,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,kBAAkB,WAAW;AAAA,QAC7B,MAAM,WAAW;AAAA,QACjB,yBAAyB,WAAW;AAAA,QACpC,2BAA2B,WAAW;AAAA,QACtC,MAAM,WAAW;AAAA,QACjB,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,QACvB,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,cAA2B,YAAsC,UAA2C;AAChH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,aAAa,WAAW;AAAA,QACxB,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,mCAAmC,WAAW;AAAA,QAC9C,2BAA2B,WAAW;AAAA,QACtC,SAAS,WAAW;AAAA,QACpB,wBAAwB,WAAW;AAAA,MACrC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,IAAI,WAAW;AAAA,QACf,wBAAwB,WAAW;AAAA,MACrC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,OAAO,eAAe,YAAY,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,mBAAmB,WAAW;AAAA,QAC9B,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,OAAO,eAAe,YAAY,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,qBAAqB,WAAW;AAAA,QAChC,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,OAAO,eAAe,YAAY,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,cAAc,WAAW,SAAS;AAAA,MAClF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,cAAc,WAAW,SAAS;AAAA,MAClF,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,cAAc,WAAW,SAAS;AAAA,MAClF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,OAAO,eAAe,YAAY,WAAW;AAAA,QAC3D,qBAAqB,OAAO,eAAe,YAAY,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,QAC3B,YAAY,WAAW;AAAA,QACvB,qBAAqB,WAAW;AAAA,QAChC,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,OAAO,eAAe,YAAY,WAAW;AAAA,QAC3D,qBAAqB,OAAO,eAAe,YAAY,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,kCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,gBAAgB;AAAA,MAC9D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1uBO,IAAM,2BAAN,MAA+B;AAAA,EACpC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,oBAAiD,UAA2C;AAChG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,OAAO;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7DO,IAAM,mBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,YAAwC,UAA2C;AACvF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,UACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,QAAQ;AAAA,MACnC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9EO,IAAM,+BAAN,MAAmC;AAAA,EACxC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,YAAY;AAAA,MAChE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,WAAW;AAAA,QAChC,KAAK,WAAW;AAAA,QAChB,cAAc,WAAW;AAAA,QACzB,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,iCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,YAAY;AAAA,MAChE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,QAChB,cAAc,WAAW;AAAA,QACzB,cAAc,WAAW;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,cAAc;AAAA,QACd,KAAK;AAAA,QACL,cAAc;AAAA,QACd,cAAc;AAAA,MAChB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,iCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,YAAY;AAAA,MAChE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,QAChB,cAAc,WAAW;AAAA,QACzB,cAAc,WAAW;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,cAAc;AAAA,QACd,KAAK;AAAA,QACL,cAAc;AAAA,QACd,cAAc;AAAA,MAChB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,iCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,YAAY;AAAA,MAChE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,QAChB,cAAc,WAAW;AAAA,QACzB,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/LO,IAAM,0BAAN,MAA8B;AAAA,EACnC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkDrC,MAAM,wCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,QAClB,MAAM,WAAW;AAAA,QACjB,eAAe,WAAW;AAAA,QAC1B,UAAU,WAAW;AAAA,QACrB,OAAO,WAAW;AAAA,QAClB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwDA,MAAM,2CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,2CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3LO,IAAM,YAAN,MAAgB;AAAA,EACrB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA2BrC,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,cAAc,gBAAgB,gBAAgB,YAAY,YAAY;AAAA,QACtE,QAAQ,YAAY;AAAA,QACpB,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,QAAQ;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,kCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,UAAU,YAAY,WAAW,SAAS;AAAA,MAClF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,UAAU;AAAA,MAClD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,UAAU;AAAA,MAClD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA2BA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,0BAA0B,WAAW;AAAA,QACrC,0BAA0B,WAAW;AAAA,MACvC;AAAA,MACA,MAAM;AAAA,QACJ,sBAAsB,WAAW;AAAA,QACjC,aAAa,WAAW;AAAA,QACxB,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,QACvB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,QAAQ,YAAY;AAAA,QACpB,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,OAAO,YAAY;AAAA,QACnB,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxbO,IAAM,iBAAN,cAA6B,WAAW;AAAA,EAC7C,qBAAqB,IAAI,mBAAmB,IAAI;AAAA,EAChD,kBAAkB,IAAI,gBAAgB,IAAI;AAAA,EAC1C,mBAAmB,IAAI,iBAAiB,IAAI;AAAA,EAC5C,eAAe,IAAI,aAAa,IAAI;AAAA,EACpC,gBAAgB,IAAI,cAAc,IAAI;AAAA,EACtC,eAAe,IAAI,aAAa,IAAI;AAAA,EACpC,UAAU,IAAI,QAAQ,IAAI;AAAA,EAC1B,uBAAuB,IAAI,qBAAqB,IAAI;AAAA,EACpD,aAAa,IAAI,WAAW,IAAI;AAAA,EAChC,iBAAiB,IAAI,eAAe,IAAI;AAAA,EACxC,UAAU,IAAI,QAAQ,IAAI;AAAA,EAC1B,gBAAgB,IAAI,cAAc,IAAI;AAAA,EACtC,qBAAqB,IAAI,mBAAmB,IAAI;AAAA,EAChD,SAAS,IAAI,OAAO,IAAI;AAAA,EACxB,mBAAmB,IAAI,iBAAiB,IAAI;AAAA,EAC5C,yBAAyB,IAAI,uBAAuB,IAAI;AAAA,EACxD,gBAAgB,IAAI,cAAc,IAAI;AAAA,EACtC,+BAA+B,IAAI,6BAA6B,IAAI;AAAA,EACpE,oCAAoC,IAAI,kCAAkC,IAAI;AAAA,EAC9E,2BAA2B,IAAI,yBAAyB,IAAI;AAAA,EAC5D,0BAA0B,IAAI,wBAAwB,IAAI;AAAA,EAC1D,8BAA8B,IAAI,4BAA4B,IAAI;AAAA,EAClE,6BAA6B,IAAI,2BAA2B,IAAI;AAAA,EAChE,2BAA2B,IAAI,yBAAyB,IAAI;AAAA,EAC5D,cAAc,IAAI,YAAY,IAAI;AAAA,EAClC,aAAa,IAAI,WAAW,IAAI;AAAA,EAChC,iBAAiB,IAAI,eAAe,IAAI;AAAA,EACxC,yBAAyB,IAAI,uBAAuB,IAAI;AAAA,EACxD,2BAA2B,IAAI,yBAAyB,IAAI;AAAA,EAC5D,kBAAkB,IAAI,gBAAgB,IAAI;AAAA,EAC1C,kBAAkB,IAAI,gBAAgB,IAAI;AAAA,EAC1C,mBAAmB,IAAI,iBAAiB,IAAI;AAAA,EAC5C,mBAAmB,IAAI,iBAAiB,IAAI;AAAA,EAC5C,SAAS,IAAI,OAAO,IAAI;AAAA,EACxB,cAAc,IAAI,YAAY,IAAI;AAAA,EAClC,qBAAqB,IAAI,mBAAmB,IAAI;AAAA,EAChD,uBAAuB,IAAI,qBAAqB,IAAI;AAAA,EACpD,sBAAsB,IAAI,oBAAoB,IAAI;AAAA,EAClD,aAAa,IAAI,WAAW,IAAI;AAAA,EAChC,mBAAmB,IAAI,iBAAiB,IAAI;AAAA,EAC5C,yBAAyB,IAAI,uBAAuB,IAAI;AAAA,EACxD,aAAa,IAAI,WAAW,IAAI;AAAA,EAChC,gBAAgB,IAAI,cAAc,IAAI;AAAA,EACtC,yBAAyB,IAAI,uBAAuB,IAAI;AAAA,EACxD,gBAAgB,IAAI,cAAc,IAAI;AAAA,EACtC,kBAAkB,IAAI,gBAAgB,IAAI;AAAA,EAC1C,eAAe,IAAI,aAAa,IAAI;AAAA,EACpC,MAAM,IAAI,IAAI,IAAI;AAAA,EAClB,mBAAmB,IAAI,iBAAiB,IAAI;AAAA,EAC5C,SAAS,IAAI,OAAO,IAAI;AAAA,EACxB,iBAAiB,IAAI,eAAe,IAAI;AAAA,EACxC,SAAS,IAAI,OAAO,IAAI;AAAA,EACxB,cAAc,IAAI,YAAY,IAAI;AAAA,EAClC,oBAAoB,IAAI,kBAAkB,IAAI;AAAA,EAC9C,QAAQ,IAAI,MAAM,IAAI;AAAA,EACtB,kBAAkB,IAAI,gBAAgB,IAAI;AAAA,EAC1C,iBAAiB,IAAI,eAAe,IAAI;AAAA,EACxC,oBAAoB,IAAI,kBAAkB,IAAI;AAAA,EAC9C,8BAA8B,IAAI,4BAA4B,IAAI;AAAA,EAClE,oBAAoB,IAAI,kBAAkB,IAAI;AAAA,EAC9C,eAAe,IAAI,aAAa,IAAI;AAAA,EACpC,kBAAkB,IAAI,gBAAgB,IAAI;AAAA,EAC1C,8BAA8B,IAAI,4BAA4B,IAAI;AAAA,EAClE,2BAA2B,IAAI,yBAAyB,IAAI;AAAA,EAC5D,oBAAoB,IAAI,kBAAkB,IAAI;AAAA,EAC9C,oBAAoB,IAAI,kBAAkB,IAAI;AAAA,EAC9C,eAAe,IAAI,aAAa,IAAI;AAAA,EACpC,WAAW,IAAI,SAAS,IAAI;AAAA,EAC5B,mBAAmB,IAAI,iBAAiB,IAAI;AAAA,EAC5C,eAAe,IAAI,aAAa,IAAI;AAAA,EACpC,kBAAkB,IAAI,gBAAgB,IAAI;AAAA,EAC1C,UAAU,IAAI,QAAQ,IAAI;AAAA,EAC1B,gBAAgB,IAAI,cAAc,IAAI;AAAA,EACtC,kBAAkB,IAAI,gBAAgB,IAAI;AAAA,EAC1C,aAAa,IAAI,WAAW,IAAI;AAAA,EAChC,aAAa,IAAI,WAAW,IAAI;AAAA,EAChC,kBAAkB,IAAI,gBAAgB,IAAI;AAAA,EAC1C,SAAS,IAAI,OAAO,IAAI;AAAA,EACxB,QAAQ,IAAI,MAAM,IAAI;AAAA,EACtB,cAAc,IAAI,YAAY,IAAI;AAAA,EAClC,eAAe,IAAI,aAAa,IAAI;AAAA,EACpC,sBAAsB,IAAI,oBAAoB,IAAI;AAAA,EAClD,oBAAoB,IAAI,kBAAkB,IAAI;AAAA,EAC9C,iBAAiB,IAAI,eAAe,IAAI;AAAA,EACxC,QAAQ,IAAI,MAAM,IAAI;AAAA,EACtB,aAAa,IAAI,WAAW,IAAI;AAAA,EAChC,WAAW,IAAI,SAAS,IAAI;AAAA,EAC5B,YAAY,IAAI,UAAU,IAAI;AAAA,EAC9B,uBAAuB,IAAI,qBAAqB,IAAI;AAAA,EACpD,oCAAoC,IAAI,kCAAkC,IAAI;AAAA,EAC9E,kBAAkB,IAAI,gBAAgB,IAAI;AAAA,EAC1C,2BAA2B,IAAI,yBAAyB,IAAI;AAAA,EAC5D,mBAAmB,IAAI,iBAAiB,IAAI;AAAA,EAC5C,+BAA+B,IAAI,6BAA6B,IAAI;AAAA,EACpE,0BAA0B,IAAI,wBAAwB,IAAI;AAC5D;;;ACjMA,IAAAC,kBAAA;;;ACAA,IAAAC,sBAAA;;;ACAA;AAAA;AAAA,4BAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA;AAAA,0BAAAC;AAAA,EAAA;AAAA,gCAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,yCAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,kCAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,8BAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,2BAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,8BAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,8BAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,WAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,mCAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA,qBAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,eAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,cAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA,mBAAAC;AAAA,EAAA,oBAAAC;AAAA,EAAA,2BAAAC;AAAA,EAAA,yBAAAC;AAAA,EAAA,sBAAAC;AAAA,EAAA,kBAAAC;AAAA,EAAA,aAAAC;AAAA,EAAA;AAAA,wBAAAC;AAAA,EAAA,0BAAAC;AAAA,EAAA,gBAAAC;AAAA,EAAA,4BAAAC;AAAA,EAAA,yCAAAC;AAAA,EAAA,uBAAAC;AAAA,EAAA,gCAAAC;AAAA,EAAA,wBAAAC;AAAA,EAAA,oCAAAC;AAAA,EAAA,+BAAAC;AAAA,EAAA,iBAAAC;AAAA;;;ACMO,IAAMC,sBAAN,MAAyB;AAAA,EAC9B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,UAAsD,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,UAAoB,YAAmC,UAA2C;AACtG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,eAAe,YAAY;AAAA,QAC3B,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtDO,IAAMC,mBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAMrC,MAAM,UAA0C,UAA2C;AACzF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EASA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,OAAO,WAAW,QAAQ,WAAW,WAAW,MAAM,WAAW,IAAI,KAAK,GAAG;AAAA,MACpF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACrCO,IAAMC,oBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,uBAAqD,UAA2C;AACpG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,MAAM,OAAO,eAAe,WAAW,aAAa,WAAW;AAErE,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,GAAG;AAAA,MACvC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7DO,IAAMC,gBAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,wBAAwB,WAAW;AAAA,QACnC,yBAAyB,WAAW;AAAA,MACtC;AAAA,MACA,MAAM;AAAA,QACJ,iBAAiB,WAAW;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kDAAkD,WAAW,UAAU;AAAA,MAC5E,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,wBAAwB,WAAW;AAAA,QACnC,yBAAyB,WAAW;AAAA,QACpC,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,yBAAyB,WAAW;AAAA,MACtC;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,SAAS,WAAW;AAAA,QACpB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3GO,IAAMC,iBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,QAAQ;AAAA,MACjD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,eAAe,WAAW,WAAW;AAAA,MACjG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,eAAe,WAAW,WAAW;AAAA,MACjG,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,eAAe,WAAW,WAAW;AAAA,MACjG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,WAAW;AAAA,MAC3D,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,WAAW;AAAA,MAC3D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpOO,IAAMC,gBAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAqDrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,OAAO,YAAY;AAAA,QACnB,QAAQ,YAAY;AAAA,QACpB,MAAM,YAAY;AAAA,QAClB,IAAI,YAAY;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxEO,IAAMC,WAAN,MAAc;AAAA,EACnB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,OAAO,OAAO,eAAe,WAAW,aAAa,WAAW;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,IAAI;AAAA,MAC/B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,WAA+B,YAAmC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,IAAI,UAAU,WAAW,QAAQ;AAAA,MACtF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,YAA+B,YAAoC,UAA2C;AAClH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,IAAI,UAAU,WAAW,QAAQ;AAAA,MACtF,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,QACrB,gBAAgB,WAAW;AAAA,MAC7B;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,WAAW;AAAA,QACd,GAAG,WAAW;AAAA,QACd,MAAM,WAAW,QAAQ;AAAA,MAC3B;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,aAAuB,YAAqC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,IAAI,UAAU,WAAW,cAAc,WAAW,WAAW,EAAE;AAAA,MACpH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,OAAO,OAAO,eAAe,WAAW,aAAa,WAAW;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK,0CAA0C,IAAI;AAAA,MACnD,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,QAAQ;AAAA,QACN,MAAM,OAAO,eAAe,WAAW,WAAW,OAAO;AAAA,QACzD,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,MAC/D;AAAA,IACF;AAEA,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,EAAE,gBAAgB,wBAAwB;AAAA,IACrD,IAAI,MAAM,KAAK,OAAO,wBAA2B,MAAM;AAEvD,UAAM,cAAc,wBAAwB,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK;AAE/D,WAAO,KAAK,OAAO,sBAAsB,EAAE,aAAa,OAAO,GAAG,QAAQ;AAAA,EAC5E;AAAA,EAsCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0CAA0C,WAAW,IAAI,WAAW,WAAW,EAAE;AAAA,MACtF,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,QAAQ;AAAA,QACN,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,EAAE,gBAAgB,wBAAwB;AAAA,IACrD,IAAI,MAAM,KAAK,OAAO,wBAA2B,MAAM;AAEvD,UAAM,cAAc,wBAAwB,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK;AAE/D,WAAO,KAAK,OAAO,sBAAsB,EAAE,aAAa,OAAO,GAAG,QAAQ;AAAA,EAC5E;AAAA,EAsCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0CAA0C,WAAW,IAAI,UAAU,WAAW,QAAQ;AAAA,MAC3F,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,QAAQ;AAAA,QACN,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,UAAM;AAAA,MACJ,MAAM;AAAA,MACN,SAAS,EAAE,gBAAgB,wBAAwB;AAAA,IACrD,IAAI,MAAM,KAAK,OAAO,wBAA2B,MAAM;AAEvD,UAAM,cAAc,wBAAwB,MAAM,GAAG,EAAE,CAAC,EAAE,KAAK;AAE/D,WAAO,KAAK,OAAO,sBAAsB,EAAE,aAAa,OAAO,GAAG,QAAQ;AAAA,EAC5E;AACF;;;ACjVO,IAAMC,wBAAN,MAA2B;AAAA,EAChC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoBrC,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpCO,IAAMC,cAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,wBAAwB,WAAW;AAAA,MACrC;AAAA,MACA,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,MAAM,WAAW;AAAA,QACjB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,oBAAoB,WAAW;AAAA,QAC/B,WAAW,WAAW;AAAA,QACtB,wBAAwB,WAAW;AAAA,QACnC,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,gCACJ,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,YAAY;AAAA,QAC3B,WAAW,YAAY;AAAA,QACvB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,cAAc,OAAO,eAAe,WAAW,aAAa,WAAW;AAE7E,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW;AAAA,MACzC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,QACxD,KAAK,OAAO,eAAe,YAAY,WAAW;AAAA,QAClD,UAAU,OAAO,eAAe,YAAY,WAAW;AAAA,MACzD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAcA,MAAM,UACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,iCAAiC,WAAW;AAAA,QAC5C,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,QACrB,OAAO,WAAW;AAAA,QAClB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAcA,MAAM,aAAuB,YAAqC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,WAAW,WAAW,QAAQ;AAAA,MAClF,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,aAAuB,YAAqC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,WAAW,WAAW,QAAQ;AAAA,MAClF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,UAAU,WAAW,MAAM;AAAA,MAC/E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4DA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,UAAU,WAAW,MAAM,eAAe,WAAW,WAAW;AAAA,MACpH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgEA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,UAAU,WAAW,MAAM,eAAe,WAAW,WAAW;AAAA,MACpH,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,UAAU,WAAW,MAAM,eAAe,WAAW,WAAW;AAAA,MACpH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,EAAE;AAAA,MAChC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,wBAAwB,WAAW;AAAA,MACrC;AAAA,MACA,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,MAAM,WAAW;AAAA,QACjB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,EAAE;AAAA,MAChC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,wBAAwB,WAAW;AAAA,MACrC;AAAA,MACA,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,MAAM,WAAW;AAAA,QACjB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1tBO,IAAMC,kBAAN,MAAqB;AAAA,EAC1B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,WAAsC,UAA2C;AACrF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,cAAwB,YAAuC,UAA2C;AAC9G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACnFO,IAAMC,WAAN,MAAc;AAAA,EACnB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoBrC,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,QACnB,0BAA0B,WAAW;AAAA,MACvC;AAAA,MACA,MAAM;AAAA,QACJ,qBAAqB,WAAW;AAAA,QAChC,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,WAAW,WAAW;AAAA,QACtB,iBAAiB,WAAW;AAAA,QAC5B,IAAI,WAAW;AAAA,QACf,KAAK,WAAW;AAAA,QAChB,MAAM,WAAW;AAAA,QACjB,OAAO,WAAW;AAAA,QAClB,WAAW,WAAW;AAAA,QACtB,MAAM,WAAW;AAAA,QACjB,kBAAkB,WAAW;AAAA,QAC7B,aAAa,WAAW;AAAA,QACxB,eAAe,WAAW;AAAA,QAC1B,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8CA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyCA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,mBAAmB,YAAY;AAAA,MACjC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,YAAY;AAAA,QACxB,WAAW,YAAY;AAAA,QACvB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,WAAW,YAAY;AAAA,QACvB,IAAI,YAAY;AAAA,QAChB,SAAS,YAAY;AAAA,QACrB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,QAAQ,YAAY;AAAA,QACpB,0BAA0B,YAAY;AAAA,QACtC,kBAAkB,YAAY;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,UACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,QACrD,0BAA0B,OAAO,eAAe,YAAY,WAAW;AAAA,MACzE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE;AAAA,MACxC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,QACnB,0BAA0B,WAAW;AAAA,MACvC;AAAA,MACA,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,KAAK,WAAW;AAAA,QAChB,WAAW,WAAW;AAAA,QACtB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuCA,MAAM,WACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,WAAwB,YAAmC,UAA2C;AAC1G,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE;AAAA,MACxC,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE;AAAA,MACxC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AClnBO,IAAMC,iBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,qBAAmD,UAA2C;AAClG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,QAAQ,OAAO,eAAe,WAAW,aAAa,WAAW;AAEvE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,EAAE;AAAA,MAC7B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE;AAAA,MACxC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,WAAW,WAAW;AAAA,QACtB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,QACnB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE,eAAe,WAAW,YAAY;AAAA,MAC9E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,WAAW,EAAE,eAAe,WAAW,YAAY;AAAA,MAC9E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxPO,IAAMC,sBAAN,MAAyB;AAAA,EAC9B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgFrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,QACvB,iBAAiB,WAAW;AAAA,QAC5B,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvGO,IAAMC,UAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,YAA8B,YAAoC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,YAAwB,YAAoC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,WAAW,YAAY;AAAA,QACvB,YAAY,YAAY;AAAA,QACxB,gBAAgB,YAAY;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,sBAAsB,WAAW;AAAA,QACjC,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA+CA,MAAM,WACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,SAAS,YAAY;AAAA,QACrB,WAAW,YAAY;AAAA,QACvB,YAAY,YAAY;AAAA,QACxB,iBAAiB,YAAY;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzRO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,WAA+B,UAA2C;AAC9E,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/BA,OAAOC,WAAU;AAOV,IAAMC,oBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgDrC,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,OAAO,eAAe,YAAY,WAAW;AAAA,MACzD;AAAA,MACA,cAAc;AAAA,IAChB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,kBAAiD,UAA2C;AAChG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,OAAO,eAAe,YAAY,WAAW;AAAA,QACvD,mBAAmB,OAAO,eAAe,YAAY,WAAW;AAAA,QAChE,OAAO,OAAO,eAAe,YAAY,WAAW;AAAA,QACpD,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,MACA,cAAc;AAAA,IAChB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,EAAE;AAAA,MACjC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,EAAE;AAAA,MACjC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoDA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,EAAE;AAAA,MACjC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoDA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,EAAE;AAAA,MACjC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6CA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,WAAW,IAAI,SAAS;AAC9B,UAAM,cAAc,MAAM,QAAQ,WAAW,UAAU,IAAI,WAAW,aAAa,CAAC,WAAW,UAAU;AAGzG,QAAI;AAEJ,QAAI,OAAO,WAAW,aAAa;AACjC,YAAM,EAAE,UAAU,aAAa,IAAI,MAAM,OAAO,QAAQ;AAExD,iBAAW;AAAA,IACb;AAEA,eAAW,cAAc,aAAa;AACpC,YAAM,OAAO,MAAM,KAAK,eAAe,YAAYD,OAAM,QAAQ;AAEjE,UAAI,EAAE,gBAAgB,QAAQ,gBAAgB,OAAO;AACnD,cAAM,IAAI,MAAM,yCAAyC,OAAO,IAAI,EAAE;AAAA,MACxE;AAEA,eAAS,OAAO,QAAQ,MAAM,WAAW,QAAQ;AAAA,IACnD;AAEA,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,QACrB,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,MACN,eAAe;AAAA,MACf,kBAAkB;AAAA,IACpB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAEA,MAAc,eACZ,YACAA,OAEA,UACsB;AACtB,UAAM,WAAW,WAAW,aAAaA,MAAK,QAAQ,WAAW,QAAQ,KAAK;AAE9E,QAAI,WAAW,gBAAgB,QAAQ,WAAW,gBAAgB,MAAM;AACtE,aAAO,WAAW;AAAA,IACpB;AAEA,QAAI,OAAO,WAAW,SAAS,UAAU;AACvC,aAAO,IAAI,KAAK,CAAC,WAAW,IAAI,GAAG,WAAW,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,IAC5E;AAEA,QAAI,YAAY,WAAW,gBAAgB,UAAU;AACnD,aAAO,KAAK,cAAc,WAAW,MAAM,WAAW,UAAU,QAAQ;AAAA,IAC1E;AAEA,QAAI,WAAW,gBAAgB,gBAAgB;AAC7C,aAAO,KAAK,cAAc,WAAW,MAAM,WAAW,UAAU,QAAQ;AAAA,IAC1E;AAEA,QAAI,YAAY,OAAO,WAAW,IAAI,KAAK,WAAW,gBAAgB,aAAa;AACjF,aAAO,IAAI,KAAK,CAAC,WAAW,IAAI,GAAG,WAAW,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,IAC5E;AAEA,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACrD;AAAA,EAEA,MAAc,cAEZ,QACA,UACA,UACe;AACf,QAAI,OAAO,WAAW,eAAe,mBAAmB,MAAM,OAAO,QAAQ,GAAG,UAAU;AACxF,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,cAAM,SAAuB,CAAC;AAE9B,eAAO,GAAG,QAAQ,WAAS,OAAO,KAAK,KAAK,CAAC;AAC7C,eAAO,GAAG,OAAO,MAAM;AACrB,gBAAM,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhD,kBAAQ,IAAI,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC;AAAA,QACxD,CAAC;AACD,eAAO,GAAG,SAAS,MAAM;AAAA,MAC3B,CAAC;AAAA,IACH;AAEA,QAAI,kBAAkB,gBAAgB;AACpC,YAAM,SAAS,OAAO,UAAU;AAChC,YAAM,SAAuB,CAAC;AAE9B,UAAI,OAAO;AAEX,aAAO,CAAC,MAAM;AACZ,cAAM,EAAE,OAAO,MAAM,WAAW,IAAI,MAAM,OAAO,KAAK;AAEtD,YAAI,MAAO,QAAO,KAAK,KAAK;AAC5B,eAAO;AAAA,MACT;AAEA,YAAM,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhD,aAAO,IAAI,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,IACtD;AAEA,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACF;;;ACzhBO,IAAM,sBAAN,MAA0B;AAAA,EAC/B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0CrC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,wBAAwB,WAAW;AAAA,QACnC,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,WAAW;AAAA,QAC3B,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,iBAAiB,WAAW;AAAA,QAC5B,wBAAwB,WAAW;AAAA,QACnC,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0FA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,sBAAsB,WAAW;AAAA,QACjC,wBAAwB,WAAW;AAAA,MACrC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4DA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,WAAW;AAAA,QAC3B,cAAc,WAAW;AAAA,QACzB,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,sBAAsB,WAAW;AAAA,QACjC,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,wBAAwB,WAAW;AAAA,MACrC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,wBAAwB,WAAW;AAAA,MACrC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoFA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7lBO,IAAME,0BAAN,MAA6B;AAAA,EAClC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkCrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;AAE3E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,SAAS;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACrF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACrF,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACrF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7LO,IAAMC,iBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAqCrC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,YAAY;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,WAA+B,YAAmC,UAA2C;AACjH,UAAM,OACJ,OAAO,WAAW,YAAY,WAC1B;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,WAAW,QAAQ,CAAC;AAAA,QACtD;AAAA,MACF;AAAA,IACF,IACE,WAAW;AAEjB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB;AAAA,QACA,SAAS,WAAW;AAAA,QACpB,IAAI,WAAW;AAAA,QACf,wBAAwB,WAAW;AAAA,QACnC,WAAW,WAAW;AAAA,QACtB,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,MAAM,WAAW;AAAA,QACjB,cAAc,WAAW;AAAA,QACzB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,WAA+B,YAAmC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,OACJ,OAAO,WAAW,SAAS,WACvB;AAAA,MACA,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS;AAAA,QACP;AAAA,UACE,MAAM;AAAA,UACN,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,WAAW,KAAK,CAAC;AAAA,QACnD;AAAA,MACF;AAAA,IACF,IACE,WAAW;AAEjB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,sBAAsB,WAAW;AAAA,QACjC,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ;AAAA,QACA,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpVO,IAAMC,gCAAN,MAAmC;AAAA,EACxC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0CrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,qBAAqB,WAAW;AAAA,QAChC,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,qBAAqB,WAAW;AAAA,QAChC,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9GO,IAAMC,qCAAN,MAAwC;AAAA,EAC7C,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgDrC,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,IAAI,YAAY;AAAA,QAChB,gBAAgB,gBAAgB,kBAAkB,YAAY,cAAc;AAAA,QAC5E,SAAS,YAAY;AAAA,QACrB,gBAAgB,YAAY;AAAA,QAC5B,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,MACA,MAAM;AAAA,QACJ,gBAAgB,YAAY;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,eAAe,OAAO,eAAe,WAAW,aAAa,WAAW;AAE9E,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,YAAY;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,IAAI,OAAO,eAAe,YAAY,WAAW;AAAA,QACjD,gBAAgB,OAAO,eAAe,YAAY,WAAW;AAAA,QAC7D,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,gBAAgB,OAAO,eAAe,YAAY,WAAW;AAAA,QAC7D,aAAa,OAAO,eAAe,YAAY,WAAW;AAAA,QAC1D,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,YAAY;AAAA,MACrD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvLO,IAAMC,4BAAN,MAA+B;AAAA,EACpC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0CrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,OAAO,eAAe,YAAY,WAAW;AAAA,QAC7D,iBAAiB,OAAO,eAAe,YAAY,WAAW;AAAA,QAC9D,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,QACxD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO;AAAA,MAC5C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,IAAI,WAAW;AAAA,QACf,cAAc,WAAW;AAAA,QACzB,MAAM,WAAW;AAAA,QACjB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwGA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,QACxD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkGA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO;AAAA,MAC5C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,QACxD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,+CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO;AAAA,MAC5C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,MACA,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,QACxD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,qCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjtBO,IAAMC,2BAAN,MAA8B;AAAA,EACnC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4CrC,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,iCAAiC,EAAE;AAAA,MACxC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,sBAAsB,WAAW;AAAA,QACjC,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA+BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS,WAAW,WAAW,QAAQ;AAAA,MAC1G,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO,YAAY,WAAW,SAAS,WAAW,WAAW,QAAQ;AAAA,MAC1G,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpVO,IAAMC,+BAAN,MAAkC;AAAA,EACvC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsCrC,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,QAAQ;AAAA,MAClC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,QAAQ;AAAA,MAC7C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,QAAQ;AAAA,MAClC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,MAC1D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,QAAQ;AAAA,MAClC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,WAAW,OAAO,eAAe,YAAY,WAAW;AAAA,MAC1D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,QAAQ,WAAW,WAAW,QAAQ;AAAA,MAC3E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,QAAQ,WAAW,WAAW,QAAQ;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,IAAI,WAAW;AAAA,QACf,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,QAAQ,WAAW,WAAW,QAAQ;AAAA,MAC3E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,QAAQ,WAAW,WAAW,QAAQ;AAAA,MAC3E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,KAAK,WAAW;AAAA,QAChB,wBAAwB,WAAW;AAAA,QACnC,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACrZO,IAAMC,8BAAN,MAAiC;AAAA,EACtC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwCrC,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,mBAAmB,WAAW;AAAA,MAChC;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,YAAY;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,mBAAmB,WAAW;AAAA,MAChC;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3GO,IAAMC,4BAAN,MAA+B;AAAA,EACpC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsCrC,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,WAAW,YAAY;AAAA,QACvB,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,EAAE;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,EAAE;AAAA,MACpD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,EAAE;AAAA,MACpD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,EAAE;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,yBAAyB,WAAW;AAAA,MACtC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,oCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,4BAA4B,YAAY;AAAA,MAC1C;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,0CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,wCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,4BAA4B,YAAY;AAAA,QACxC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wCAAwC,WAAW,EAAE;AAAA,MAC1D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wCAAwC,WAAW,EAAE;AAAA,MAC1D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wCAAwC,WAAW,EAAE;AAAA,MAC1D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mDACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wCAAwC,WAAW,EAAE;AAAA,MAC1D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9nBO,IAAMC,eAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkCrC,MAAM,UAAqC,UAA2C;AACpF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,MAAM,YAAY;AAAA,QAClB,IAAI,YAAY;AAAA,QAChB,OAAO,YAAY;AAAA,QACnB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,QACpB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,OAAO,YAAY;AAAA,QACnB,QAAQ,YAAY;AAAA,QACpB,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,OAAO;AAAA,MAC5C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,EAAE;AAAA,MACvC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,EAAE;AAAA,MACvC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,EAAE;AAAA,MACvC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzTO,IAAMC,cAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkDrC,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,aAAa,WAAW;AAAA,QACxB,cAAc,WAAW;AAAA,QACzB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,MAAM;AAAA,MAC/C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,gBAA0B,YAAwC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,MAAM;AAAA,MAC/C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9IO,IAAMC,kBAAN,MAAqB;AAAA,EAC1B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,kBAA6C,UAA2C;AAC5F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,QACf,QAAQ,WAAW;AAAA,QACnB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,6BAA6B,WAAW,eAAe;AAAA,MAC5D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,6BAA6B,WAAW,eAAe;AAAA,MAC5D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,QACf,QAAQ,WAAW;AAAA,QACnB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,6BAA6B,WAAW,eAAe;AAAA,MAC5D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChMO,IAAMC,0BAAN,MAA6B;AAAA,EAClC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,gCAAyD,UAA2C;AACxG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,gCAA6C,UAA2C;AAC5F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACrEO,IAAMC,4BAAN,MAA+B;AAAA,EACpC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,WAAW,YAAY;AAAA,QACvB,aAAa,YAAY;AAAA,QACzB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,0BAA0B,WAAW;AAAA,MACvC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,uCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,sBAAsB,YAAY;AAAA,QAClC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,EAAE;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,EAAE;AAAA,MACpD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,0BAA0B,WAAW;AAAA,MACvC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,oBAAoB;AAAA,MACtE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,kCAAkC,WAAW,oBAAoB,iBAAiB,WAAW,cAAc;AAAA,MAChH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjTO,IAAMC,mBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,cAAqC,UAA2C;AACpF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,YAAY;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,eAAyB,YAAuC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,KAAK,WAAW;AAAA,QAChB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,WAAW,gBAAgB,aAAa,YAAY,SAAS;AAAA,QAC7D,cAAc,YAAY;AAAA,QAC1B,aAAa,YAAY;AAAA,QACzB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,EAAE;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,eAAyB,YAAuC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,EAAE;AAAA,MAC1C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,eAA4B,YAAuC,UAA2C;AAClH,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,EAAE;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1RO,IAAMC,mBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsDrC,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,YAAY;AAAA,QACzB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiGA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,WAAW;AAAA,MAC3D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,QACnB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsEA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,WAAW;AAAA,MAC3D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,WAAW;AAAA,MACtF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,WAAW;AAAA,MACtF,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,WAAW;AAAA,MACtF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtfO,IAAMC,oBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4CrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,QAAQ,WAAW;AAAA,QACnB,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,MAAM;AAAA,MACjF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,MAAM;AAAA,MACjF,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,QAAQ,WAAW;AAAA,QACnB,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,eAAe,WAAW,MAAM;AAAA,MACjF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACrUO,IAAMC,oBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,eAAwC,UAA2C;AACvF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,IACR;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,MACjB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,gBAA0B,YAAwC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,KAAK,WAAW;AAAA,QAChB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,EAAE;AAAA,MAC5C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,EAAE;AAAA,MAC5C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,IAAI;AAAA,MACN;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,EAAE;AAAA,MAC5C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7QO,IAAMC,UAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0CrC,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,gBAAgB,WAAW;AAAA,QAC3B,YAAY,WAAW;AAAA,QACvB,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,UAAmC,UAA2C;AAClF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoDA,MAAM,YACJ,YACA,UACmB;AACnB,QAAI,OAAO,WAAW,OAAO,gBAAgB,UAAU;AACrD,iBAAW,OAAO,cAAc;AAAA,QAC9B,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,SAAS;AAAA,cACP;AAAA,gBACE,MAAM,WAAW,OAAO;AAAA,gBACxB,MAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,MAC5B;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,iBAAiB,WAAW;AAAA,QAC5B,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoDA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuCA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiDA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,YAAY;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA+CA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,cAAc,WAAW;AAAA,QACzB,gBAAgB,WAAW;AAAA,QAC3B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,YAAY;AAAA,QACxB,aAAa,YAAY;AAAA,QACzB,cAAc,YAAY;AAAA,QAC1B,gBAAgB,YAAY;AAAA,QAC5B,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,cAAc;AAAA,MAC9D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,cAAc,eAAe,WAAW,WAAW;AAAA,MACnG,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,iBAAiB,YAAY;AAAA,MAC/B;AAAA,MACA,MAAM;AAAA,QACJ,8BAA8B,YAAY;AAAA,MAC5C;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,SAA2B,YAAiC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,QACnB,cAAc,WAAW;AAAA,QACzB,QAAQ,WAAW;AAAA,QACnB,YAAY,WAAW;AAAA,QACvB,eAAe,WAAW;AAAA,QAC1B,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0DA,MAAM,UAAoB,YAAkC,UAA2C;AACrG,QAAI,WAAW,QAAQ,eAAe,OAAO,WAAW,OAAO,gBAAgB,UAAU;AACvF,YAAM;AAAA,QACJ,QAAQ,EAAE,YAAY;AAAA,MACxB,IAAI,MAAM,KAAK,SAAS,EAAE,cAAc,WAAW,aAAa,CAAC;AAEjE,iBAAW,OAAO,cAAc;AAAA,QAC9B,MAAM;AAAA,QACN,SAAS,aAAa,WAAW;AAAA,QACjC,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,SAAS;AAAA,cACP;AAAA,gBACE,MAAM,WAAW,OAAO;AAAA,gBACxB,MAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,wBAAwB,WAAW;AAAA,QACnC,sBAAsB,WAAW;AAAA,QACjC,aAAa,WAAW;AAAA,QACxB,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,iBAAiB,WAAW;AAAA,QAC5B,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,YAAsB,YAAoC,UAA2C;AACzG,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,YAAsB,YAAoC,UAA2C;AACzG,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,QAAQ,WAAW;AAAA,QACnB,kBAAkB,WAAW;AAAA,QAC7B,YAAY,WAAW;AAAA,QACvB,aAAa,WAAW;AAAA,QACxB,cAAc,WAAW;AAAA,QACzB,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,KAAK,WAAW;AAAA,QAChB,QAAQ,WAAW;AAAA,QACnB,MAAM,WAAW;AAAA,QACjB,MAAM,WAAW;AAAA,QACjB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkHA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,wBAAwB,WAAW;AAAA,QACnC,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,OAAiB,YAA+B,UAA2C;AAC/F,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,UAAU,WAAW;AAAA,QACrB,SAAS,WAAW;AAAA,QACpB,UAAU,WAAW;AAAA,QACrB,IAAI,WAAW;AAAA,MACjB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA+CA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,QACnB,cAAc,WAAW;AAAA,QACzB,yBAAyB,WAAW;AAAA,QACpC,+BAA+B,WAAW;AAAA,QAC1C,uBAAuB,WAAW;AAAA,MACpC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,aAAuB,YAAqC,UAA2C;AAC3G,QAAI,WAAW,QAAQ,eAAe,OAAO,WAAW,OAAO,gBAAgB,UAAU;AACvF,iBAAW,OAAO,cAAc;AAAA,QAC9B,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,SAAS;AAAA,cACP;AAAA,gBACE,MAAM,WAAW,OAAO;AAAA,gBACxB,MAAM;AAAA,cACR;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,iBAAiB,WAAW;AAAA,QAC5B,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,YAAY;AAAA,QACxB,mBAAmB,YAAY;AAAA,QAC/B,YAAY,YAAY;AAAA,QACxB,UAAU,YAAY;AAAA,QACtB,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC91CO,IAAMC,eAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwCrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,YAAY,YAAY;AAAA,QACxB,iBAAiB,YAAY;AAAA,QAC7B,kBAAkB,YAAY;AAAA,QAC9B,cAAc,YAAY;AAAA,QAC1B,mBAAmB,YAAY;AAAA,MACjC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,QAChB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,QACpB,cAAc,YAAY;AAAA,QAC1B,KAAK,YAAY;AAAA,QACjB,YAAY,YAAY;AAAA,QACxB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,eAAe,YAAY;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,QAChB,YAAY,WAAW;AAAA,QACvB,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8CA,MAAM,sCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,QACvB,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,QACrB,iBAAiB,WAAW;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,0CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,cAAc,WAAW;AAAA,QACzB,KAAK,WAAW;AAAA,QAChB,YAAY,WAAW;AAAA,QACvB,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,QACvB,iBAAiB,WAAW;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1dO,IAAMC,sBAAN,MAAyB;AAAA,EAC9B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,qBAAqB;AAAA,MACzE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,sBAAsB,WAAW;AAAA,QACjC,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,6BAA6B,WAAW,EAAE;AAAA,MAC/C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpFO,IAAMC,wBAAN,MAA2B;AAAA,EAChC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,wBAAoD,UAA2C;AACnG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,QAAQ,WAAW;AAAA,QACnB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,UAAU,YAAY;AAAA,QACtB,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,eAAe,YAAY;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,UAAU,YAAY;AAAA,QACtB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,uBAAuB,YAAY;AAAA,QACnC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,+BAA+B,WAAW;AAAA,QAC1C,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,EAAE;AAAA,MACtD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,EAAE;AAAA,MACtD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ;AAAA,MAC5D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ;AAAA,MAC5D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,UAAU,WAAW,OAAO;AAAA,MACxF,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,YAAyB,YAAoC,UAA2C;AAC5G,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,UAAU,WAAW,OAAO;AAAA,MACxF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,UAAU,WAAW,OAAO;AAAA,MACxF,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,QAAQ,UAAU,WAAW,OAAO,WAAW,WAAW,QAAQ;AAAA,MACtH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvlBO,IAAMC,uBAAN,MAA0B;AAAA,EAC/B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsCrC,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW;AAAA,MACpD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,eAAe,WAAW,WAAW;AAAA,MACzF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,eAAe,WAAW,WAAW;AAAA,MACzF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,WAAW,eAAe,WAAW,WAAW;AAAA,MACzF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtKO,IAAMC,cAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkCrC,MAAM,iBAAgD,UAA2C;AAC/F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,gBAAgB,WAAW,kBAAkB;AAAA,QAC7C,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,gBAA0B,YAAwC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,wBAAwB,WAAW;AAAA,MACrC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,QACrB,gBAAgB,WAAW;AAAA,MAC7B;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,WAAW;AAAA,QACd,GAAG,WAAW;AAAA,QACd,MAAM,WAAW,QAAQ;AAAA,MAC3B;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChUO,IAAMC,oBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,QACpB,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,oBAAoB,WAAW;AAAA,QAC/B,aAAa,WAAW;AAAA,QACxB,cAAc,WAAW;AAAA,QACzB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,mBAAmB,YAAY;AAAA,MACjC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,iBAAiB;AAAA,MAChE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,oBAAoB,WAAW;AAAA,QAC/B,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA2BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,iBAAiB;AAAA,MAChE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,iBAAiB;AAAA,MAChE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,iBAAiB;AAAA,MAChE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,iBAAiB,cAAc,WAAW,WAAW;AAAA,MACpG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzaO,IAAMC,0BAAN,MAA6B;AAAA,EAClC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,mBAAmB,WAAW;AAAA,QAC9B,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,iCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,yBAAyB,YAAY;AAAA,MACvC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,4CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,qCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,yBAAyB,YAAY;AAAA,QACrC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,uBAAuB;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,uBAAuB;AAAA,MAC5E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,uCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,uBAAuB;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,uBAAuB;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,wCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,uBAAuB;AAAA,MAC5E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,oCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,uBAAuB;AAAA,MAC5E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7aO,IAAMC,cAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0CrC,MAAM,SAA2B,YAAiC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,QAAkB,YAAgC,UAA2C;AACjG,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpIO,IAAMC,iBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwCrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA2CA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC5MO,IAAMC,0BAAN,MAA6B;AAAA,EAClC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoCrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,SAAS;AAAA,MACjF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACtH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA2CA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACtH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,SAAS,eAAe,WAAW,WAAW;AAAA,MACtH,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9LO,IAAMC,iBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8CrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,eAAe,WAAW;AAAA,QAC1B,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,WAA+B,YAAmC,UAA2C;AACjH,QAAI;AAEJ,QAAI,OAAO,WAAW,YAAY,UAAU;AAC1C,gBAAU;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,SAAS;AAAA,cACP;AAAA,gBACE,MAAM;AAAA,gBACN,MAAM,WAAW;AAAA,cACnB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,gBAAU,WAAW;AAAA,IACvB;AAEA,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,gBAAgB,WAAW;AAAA,QAC3B,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,QAAQ,WAAW;AAAA,QACnB,sBAAsB,WAAW;AAAA,MACnC;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB;AAAA,QACA,SAAS,WAAW;AAAA,QACpB,IAAI,WAAW;AAAA,QACf,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,kBAAkB,WAAW;AAAA,QAC7B,cAAc,WAAW;AAAA,QACzB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,WAAW;AAAA,QAC3B,sBAAsB,WAAW;AAAA,MACnC;AAAA,MACA,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY;AAAA,MACjD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,WAAW;AAAA,QAC3B,sBAAsB,WAAW;AAAA,MACnC;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,WAA+B,YAAmC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,cACJ,YACA,UACmB;AACnB,QAAI;AAEJ,QAAI,OAAO,WAAW,YAAY,UAAU;AAC1C,gBAAU;AAAA,QACR,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,UACP;AAAA,YACE,MAAM;AAAA,YACN,SAAS;AAAA,cACP;AAAA,gBACE,MAAM;AAAA,gBACN,MAAM,WAAW;AAAA,cACnB;AAAA,YACF;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAAA,IACF,OAAO;AACL,gBAAU,WAAW;AAAA,IACvB;AAEA,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,gBAAgB,WAAW;AAAA,QAC3B,aAAa,WAAW;AAAA,QACxB,QAAQ,WAAW;AAAA,QACnB,sBAAsB,WAAW;AAAA,MACnC;AAAA,MACA,MAAM;AAAA,QACJ;AAAA,QACA,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,kBAAkB,WAAW;AAAA,QAC7B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,WAAW,YAAY,YAAY,WAAW,EAAE;AAAA,MAC1E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,WAAW;AAAA,QACxB,gBAAgB,WAAW;AAAA,QAC3B,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,QACvB,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,KAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AClmBO,IAAMC,mBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,kBAAkB,YAAY;AAAA,QAC9B,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0HA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkIA,MAAM,0CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/UO,IAAMC,gBAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,YAAY;AAAA,QACjB,iBAAiB,YAAY;AAAA,QAC7B,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,oBAAsD,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwHA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sCAAsC,WAAW,EAAE;AAAA,MACxD,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,iBAA2C,UAA2C;AAC1F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxOO,IAAMC,OAAN,MAAU;AAAA,EACf,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgCrC,MAAM,gBAA6C,UAA2C;AAC5F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4CA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,wBAAwB,YAAY;AAAA,QACpC,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,YAAY;AAAA,QACvB,YAAY,YAAY;AAAA,QACxB,eAAe,YAAY;AAAA,QAC3B,gBAAgB,YAAY;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,MACA,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,YAAY;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjTO,IAAMC,oBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,6BAA6B,WAAW;AAAA,MAC1C;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxIO,IAAMC,UAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAerC,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChCO,IAAMC,kBAAN,MAAqB;AAAA,EAC1B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAcrC,MAAM,WAA+B,UAA2C;AAC9E,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,2BAAqD,UAA2C;AACpG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,sCACJ,gBACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uDAAuD,cAAc;AAAA,MAC1E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjFO,IAAMC,UAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsDrC,MAAM,cAA0B,YAAsC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsEA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,UAA6B,UAA2C;AAC5E,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/PO,IAAMC,eAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4ErC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,YAAY;AAAA,QACxB,WAAW,YAAY;AAAA,QACvB,UAAU,YAAY;AAAA,QACtB,SAAS,YAAY;AAAA,QACrB,aAAa,YAAY;AAAA,QACzB,aAAa,YAAY;AAAA,QACzB,0BAA0B,YAAY;AAAA,QACtC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,kBAA0C,UAA2C;AACzF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsEA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,YAAY;AAAA,QACvB,mBAAmB,YAAY;AAAA,QAC/B,oBAAoB,YAAY;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7PO,IAAMC,qBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0OrC,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,MACtB;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ;AAAA,MACxD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8CA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ;AAAA,MACxD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,UAAU;AAAA,QACV,QAAQ;AAAA,MACV;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ;AAAA,MACxD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ;AAAA,MACxD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ;AAAA,MACxD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,QAAQ,WAAW;AAAA,QACnB,IAAI,WAAW;AAAA,QACf,YAAY,WAAW;AAAA,QACvB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ,eAAe,WAAW,YAAY;AAAA,MAC9F,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,QAAQ,eAAe,WAAW,YAAY;AAAA,MAC9F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACnjBO,IAAMC,SAAN,MAAY;AAAA,EACjB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsBrC,MAAM,SACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,gBAAgB,YAAY;AAAA,QAC5B,iBAAiB,YAAY;AAAA,QAC7B,QAAQ,YAAY;AAAA,QACpB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,WAAwB,YAAmC,UAA2C;AAC1G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,MACA,MAAM;AAAA,QACJ,sBAAsB,WAAW;AAAA,QACjC,cAAc,WAAW;AAAA,QACzB,gBAAgB,WAAW;AAAA,QAC3B,cAAc,WAAW;AAAA,QACzB,eAAe,WAAW;AAAA,QAC1B,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,QAAyB,YAAgC,UAA2C;AACxG,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,MACA,MAAM;AAAA,QACJ,sBAAsB,WAAW;AAAA,QACjC,cAAc,WAAW;AAAA,QACzB,gBAAgB,WAAW;AAAA,QAC3B,cAAc,WAAW;AAAA,QACzB,eAAe,WAAW;AAAA,QAC1B,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,YAAsB,YAAoC,UAA2C;AACzG,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,cAA2B,YAAsC,UAA2C;AAChH,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,UAAoB,YAAkC,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtNO,IAAMC,mBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,YAAY,gBAAgB,cAAc,YAAY,UAAU;AAAA,QAChE,UAAU,gBAAgB,YAAY,YAAY,QAAQ;AAAA,QAC1D,YAAY,YAAY;AAAA,QACxB,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,+BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,YAAY;AAAA,QACxB,YAAY,YAAY;AAAA,QACxB,UAAU,YAAY;AAAA,QACtB,UAAU,YAAY;AAAA,QACtB,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,uCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,QAAQ;AAAA,MACtD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,YAAY,WAAW;AAAA,QACvB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,QAAQ;AAAA,MACtD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,QAAQ;AAAA,MACtD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,QAAQ;AAAA,MACtD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,WAAW,gBAAgB,aAAa,WAAW,SAAS;AAAA,QAC5D,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACnUO,IAAMC,kBAAN,MAAqB;AAAA,EAC1B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsBrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,IAAI,WAAW;AAAA,QACf,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,QACvB,gBAAgB,WAAW;AAAA,QAC3B,OAAO,WAAW;AAAA,QAClB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,WAAW,WAAW,EAAE;AAAA,MAC7E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0CA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,QACrB,gBAAgB,WAAW;AAAA,MAC7B;AAAA,MACA,QAAQ;AAAA,QACN,GAAG,WAAW;AAAA,QACd,GAAG,WAAW;AAAA,QACd,MAAM,WAAW,QAAQ;AAAA,MAC3B;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvKO,IAAMC,qBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,wBAAsD,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,EAAE;AAAA,MACjD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,EAAE;AAAA,MACjD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,EAAE;AAAA,MACjD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjKO,IAAMC,+BAAN,MAAkC;AAAA,EACvC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,MACjB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjHO,IAAMC,qBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,kBAAkB,WAAW;AAAA,QAC7B,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,QAChB,UAAU,WAAW;AAAA,QACrB,cAAc,WAAW;AAAA,QACzB,aAAa,WAAW;AAAA,QACxB,IAAI,WAAW;AAAA,QACf,qBAAqB,WAAW;AAAA,QAChC,MAAM,WAAW;AAAA,QACjB,eAAe,WAAW;AAAA,QAC1B,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,cAAc,WAAW;AAAA,QACzB,kBAAkB,WAAW;AAAA,QAC7B,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,cAAc,WAAW;AAAA,QACzB,eAAe,WAAW;AAAA,QAC1B,cAAc,WAAW;AAAA,QACzB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gBAA0B,YAAwC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,yBAAyB,WAAW,EAAE;AAAA,MAC3C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,iBAAiB,WAAW;AAAA,QAC5B,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,iBAAiB,WAAW;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7WO,IAAMC,gBAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsBrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;AAE3E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,SAAS;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,SAAS;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,oBAAoB,WAAW;AAAA,MACjC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxEO,IAAMC,mBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAYrC,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,aAAa,WAAW,UAAU;AAAA,MACvF,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACnDO,IAAMC,+BAAN,MAAkC;AAAA,EACvC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoBrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,MAAM,OAAO,eAAe,WAAW,aAAa,YAAY;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,MAAM,OAAO,eAAe,WAAW,aAAa,YAAY;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,OAAO,OAAO,eAAe,WAAW,aAAa,WAAW;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/GO,IAAMC,4BAAN,MAA+B;AAAA,EACpC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,MACjB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjKO,IAAMC,qBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,eAAe,WAAW,WAAW;AAAA,MAC1F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,eAAe,WAAW,WAAW;AAAA,MAC1F,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,eAAe,WAAW,WAAW;AAAA,MAC1F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvKO,IAAMC,qBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA+BrC,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,SAAS,WAAW,EAAE;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,UAAkC,YAAkC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,SAAS,WAAW,EAAE;AAAA,MAC3E,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,YAAsB,YAAoC,UAA2C;AACzG,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,SAAS,WAAW,EAAE;AAAA,MAC3E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,MAAM,WAAW;AAAA,QACjB,OAAO,WAAW;AAAA,QAClB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,EAAE;AAAA,MAC3B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,WAAW,EAAE;AAAA,MACtC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,SAAS,WAAW;AAAA,QACpB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,WAAW,EAAE;AAAA,MACtC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,QACpB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AClPO,IAAMC,gBAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsCrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmCA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc,SAAS,WAAW,EAAE;AAAA,MAC3E,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,sBAAsB,WAAW;AAAA,MACnC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,OAAO,eAAe,YAAY,WAAW;AAAA,QAC5D,sBAAsB,OAAO,eAAe,YAAY,WAAW;AAAA,MACrE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoEA,MAAM,mBAA6C,UAA2C;AAC5F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,EAAE;AAAA,MAC3B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,WAAW,EAAE;AAAA,MACtC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,WAAW,EAAE;AAAA,MACtC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,EAAE;AAAA,MAC3B,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,MAAM,OAAO,eAAe,YAAY,WAAW;AAAA,MACrD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACjaO,IAAMC,YAAN,MAAe;AAAA,EACpB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwDrC,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,QACrB,YAAY,WAAW;AAAA,QACvB,aAAa,WAAW;AAAA,QACxB,0BAA0B,WAAW;AAAA,QACrC,qBAAqB,WAAW;AAAA,QAChC,iBAAiB,WAAW;AAAA,QAC5B,uBAAuB,WAAW;AAAA,QAClC,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,MAAM,WAAW;AAAA,QACjB,oBAAoB,WAAW;AAAA,QAC/B,kBAAkB,WAAW;AAAA,QAC7B,oBAAoB,WAAW;AAAA,QAC/B,gBAAgB,WAAW;AAAA,QAC3B,KAAK,WAAW;AAAA,QAChB,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA+BA,MAAM,UAAgC,YAAmC,UAA2C;AAClH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,IAAI,YAAY;AAAA,QAChB,MAAM,YAAY;AAAA,QAClB,OAAO,YAAY;AAAA,QACnB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,QACpB,QAAQ,YAAY;AAAA,QACpB,YAAY,YAAY;AAAA,QACxB,eAAe,YAAY;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,WACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,QACrD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW;AAAA,QACrB,YAAY,WAAW;AAAA,QACvB,aAAa,WAAW;AAAA,QACxB,qBAAqB,WAAW;AAAA,QAChC,KAAK,WAAW;AAAA,QAChB,eAAe,WAAW;AAAA,QAC1B,MAAM,WAAW;AAAA,QACjB,oBAAoB,WAAW;AAAA,QAC/B,kBAAkB,WAAW;AAAA,QAC7B,oBAAoB,WAAW;AAAA,QAC/B,gBAAgB,WAAW;AAAA,QAC3B,qBAAqB,WAAW;AAAA,QAChC,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,QACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;AAE3E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,SAAS;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,cAAc;AAAA,MACrD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9iBO,IAAMC,oBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgDrC,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/DO,IAAMC,gBAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoBrC,MAAM,mBAA6C,UAA2C;AAC5F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAMA,MAAM,6BAAuD,UAA2C;AACtG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,4BAA4B,cAAc;AAAA,MAC/C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,4BAA4B,cAAc;AAAA,MAC/C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChHO,IAAMC,mBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,OAAO,OAAO,eAAe,YAAY,WAAW;AAAA,QACpD,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,QACrD,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,cAAc;AAAA,MAC1C,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,QACxB,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,IAAI,WAAW;AAAA,QACf,2BAA2B,WAAW;AAAA,QACtC,qBAAqB,WAAW;AAAA,QAChC,MAAM,WAAW;AAAA,QACjB,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,WAAW,WAAW;AAAA,QACtB,iBAAiB,WAAW;AAAA,QAC5B,eAAe,WAAW;AAAA,MAC5B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,WACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,EAAE;AAAA,MAC9B,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,QAAQ,WAAW;AAAA,QACnB,QAAQ,WAAW;AAAA,QACnB,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,UAAU,WAAW;AAAA,QACrB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,WAAW,WAAW;AAAA,QACtB,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE,YAAY,WAAW,YAAY;AAAA,MAC5E,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,YAAgC,YAAoC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,EAAE;AAAA,MAC9B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,SAAS,WAAW;AAAA,QACpB,eAAe,WAAW;AAAA,QAC1B,OAAO,WAAW;AAAA,QAClB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,SAAS,WAAW;AAAA,QACpB,eAAe,WAAW;AAAA,QAC1B,OAAO,WAAW;AAAA,QAClB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqCA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,EAAE;AAAA,MACzC,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,4BAA4B,WAAW;AAAA,QACvC,sBAAsB,WAAW;AAAA,QACjC,iBAAiB,WAAW;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,EAAE;AAAA,MAC9B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,SAAS,gBAAgB,WAAW,aAAa;AAAA,MACxF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC5lBO,IAAMC,WAAN,MAAc;AAAA,EACnB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,qBAAqB,OAAO;AAAA,MACjC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,QACtD,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,QACzD,QAAQ,OAAO,eAAe,YAAY,WAAW;AAAA,MACvD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,WACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,aAAa,YAAY;AAAA,QACzB,OAAO,YAAY;AAAA,QACnB,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,OAAO;AAAA,MAChD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ;AAAA,MAC/C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAcA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,QAAQ;AAAA,MACpC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,QAAQ;AAAA,MACpC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC5OO,IAAMC,iBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,IAAI,YAAY;AAAA,QAChB,QAAQ,YAAY;AAAA,QACpB,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,OAAO,OAAO,eAAe,WAAW,aAAa,WAAW;AAEtE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ;AAAA,QACA,aAAa,OAAO,eAAe,YAAY,WAAW;AAAA,QAC1D,SAAS,OAAO,eAAe,YAAY,WAAW;AAAA,MACxD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,4BAA4B,WAAW,cAAc;AAAA,MAC1D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,iBAAiB,OAAO,eAAe,WAAW,aAAa,WAAW;AAEhF,UAAM,SAAwB;AAAA,MAC5B,KAAK,4BAA4B,cAAc;AAAA,MAC/C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzJO,IAAMC,mBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK;AAAA,MACxE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK;AAAA,MACxE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK,WAAW,WAAW,EAAE;AAAA,MAChG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK,WAAW,WAAW,EAAE;AAAA,MAChG,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9IO,IAAMC,cAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAqBrC,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,UAAU,gBAAgB,YAAY,YAAY,QAAQ;AAAA,QAC1D,OAAO,YAAY;AAAA,QACnB,SAAS,YAAY;AAAA,QACrB,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,QAAQ;AAAA,MACpC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,OAAO,eAAe,YAAY,WAAW;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ;AAAA,MAC/C,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK;AAAA,MACxE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,gBAA0B,YAAwC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK;AAAA,MACxE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,cAAwB,YAAsC,UAA2C;AAC7G,UAAM,SAAwB;AAAA,MAC5B,KAAK,uBAAuB,WAAW,QAAQ,SAAS,WAAW,KAAK,SAAS,WAAW,GAAG;AAAA,MAC/F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtMO,IAAMC,cAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,cAA4C,UAA2C;AAC3F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1BO,IAAMC,mBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,SACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/BO,IAAMC,UAAN,MAAa;AAAA,EAClB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,QACA,QAAQ,OAAO,eAAe,WAAW,WAAW,SAAS;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,eAAyB,YAAuC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,OAAkC,YAAgC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,YAAY;AAAA,QACpB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,cAAc,YAAY;AAAA,QAC1B,gBAAgB,YAAY;AAAA,MAC9B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,QAAQ,YAAY,WAAW,SAAS;AAAA,MAChF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,QAAQ;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,QAAQ;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3QO,IAAMC,SAAN,MAAY;AAAA,EACjB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA2CrC,MAAM,QACJ,YACA,UACmB;AACnB,UAAM,SAAS,OAAO,eAAe,WAAW,aAAa,WAAW;AAExE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,MAAM;AAAA,MAC/B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,WAAwB,YAA4C,UAA2C;AACnH,UAAM,SAAS,OAAO,eAAe,WAAW,aAAa,WAAW;AAExE,UAAM,SAAwB;AAAA,MAC5B,KAAK,oBAAoB,MAAM;AAAA,MAC/B,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxFO,IAAMC,eAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,SACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,QACnB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,IAAI,WAAW;AAAA,QACf,eAAe,WAAW;AAAA,QAC1B,eAAe,WAAW;AAAA,QAC1B,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,mBAAmB,WAAW,eAAe;AAAA,MAC7F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,mBAAmB,WAAW,eAAe;AAAA,MAC7F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,mBAAmB,WAAW,eAAe;AAAA,MAC7F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,eAAe,WAAW;AAAA,QAC1B,kBAAkB,WAAW;AAAA,QAC7B,MAAM,WAAW;AAAA,QACjB,eAAe,WAAW;AAAA,QAC1B,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,kBAAkB,WAAW,cAAc;AAAA,MAC3F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,kBAAkB,WAAW,cAAc;AAAA,MAC3F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,0BAA0B,WAAW,MAAM,kBAAkB,WAAW,cAAc;AAAA,MAC3F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC3TO,IAAMC,gBAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,sCAAgD,UAA2C;AAC/F,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,YAAY;AAAA,QACjB,MAAM,YAAY;AAAA,QAClB,KAAK,YAAY;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,wCACJ,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,mCACJ,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,YAAY,WAAW;AAAA,QACvB,oBAAoB,WAAW;AAAA,QAC/B,oBAAoB,WAAW;AAAA,MACjC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AClKO,IAAMC,uBAAN,MAA0B;AAAA,EAC/B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,gBAAgB;AAAA,MAC/D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,mBAAmB,OAAO,eAAe,WAAW,aAAa,WAAW;AAElF,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,gBAAgB;AAAA,MACpD,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AChMO,IAAMC,qBAAN,MAAwB;AAAA,EAC7B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sCAAsC,WAAW,WAAW;AAAA,MACjE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,sCAAsC,WAAW,WAAW;AAAA,MACjE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACnFO,IAAMC,kBAAN,MAAqB;AAAA,EAC1B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkCrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,WAAW;AAAA,MAC1D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,WAAW;AAAA,MAC1D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,+BAA+B,WAAW,WAAW;AAAA,MAC1D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,SAAS,WAAW;AAAA,QACpB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtLO,IAAMC,SAAN,MAAY;AAAA,EACjB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,QAAyB,YAAgC,UAA2C;AACxG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,QACrB,KAAK,WAAW;AAAA,QAChB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,WAA4B,YAAmC,UAA2C;AAC9G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,cAAc,WAAW;AAAA,QACzB,UAAU,WAAW,WACjB,WAAW,WACX,CAAC,aAAa,oBAAoB,0BAA0B,eAAe;AAAA,QAC/E,MAAM,WAAW;AAAA,MACnB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,WAAqB,YAAmC,UAA2C;AACvG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,QACrB,KAAK,WAAW;AAAA,MAClB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,WAAW,gBAAgB,aAAa,WAAW,SAAS;AAAA,MAC9D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,gBAAgB,OAAO,WAAW,GAAG;AAAA,QAC1C,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,UAAU,gBAAgB,YAAY,WAAW,QAAQ;AAAA,MAC3D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,eAA2B,YAAuC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,MACA,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBAA2B,YAAyC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,QACtB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;AAE3E,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,YAAY,OAAO,eAAe,WAAW,aAAa,WAAW;AAE3E,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN;AAAA,MACF;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,YAA+B,YAAqC,UAA2C;AACnH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACheO,IAAMC,cAAN,MAAiB;AAAA,EACtB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4CrC,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8DA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,WAAW,YAAY;AAAA,QACvB,UAAU,YAAY;AAAA,QACtB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,UAAU,YAAY;AAAA,QACtB,SAAS,YAAY;AAAA,QACrB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,oBAAoB,YAAY;AAAA,QAChC,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8DA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,QACtB,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,QACrB,YAAY,WAAW;AAAA,QACvB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkDA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,YAAY,WAAW;AAAA,QACvB,YAAY,WAAW;AAAA,QACvB,mBAAmB,gBAAgB,qBAAqB,WAAW,iBAAiB;AAAA,QACpF,YAAY,WAAW;AAAA,QACvB,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA2CA,MAAM,UAA6B,YAAmC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,UAAU,YAAY;AAAA,QACtB,WAAW,YAAY;AAAA,QACvB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqEA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwEA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,SAAS,WAAW;AAAA,QACpB,WAAW,WAAW,aAAa,WAAW;AAAA,MAChD;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgEA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,UAAU,YAAY;AAAA,QACtB,WAAW,YAAY;AAAA,QACvB,UAAU,YAAY;AAAA,QACtB,YAAY,YAAY;AAAA,QACxB,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpmBO,IAAMC,YAAN,MAAe;AAAA,EACpB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA0BrC,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,KAAK,WAAW;AAAA,QAChB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,YAAY;AAAA,QACxB,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACrNO,IAAMC,aAAN,MAAgB;AAAA,EACrB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA2BrC,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,UAAU,WAAW;AAAA,QACrB,aAAa,WAAW;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,cAAc,gBAAgB,gBAAgB,YAAY,YAAY;AAAA,QACtE,QAAQ,YAAY;AAAA,QACpB,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAgCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,QAAQ;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,kCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,UAAU,YAAY,WAAW,SAAS;AAAA,MAClF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,UAAU;AAAA,MAClD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,wBAAwB,WAAW,UAAU;AAAA,MAClD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA2BA,MAAM,cACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,0BAA0B,YAAY;AAAA,QACtC,0BAA0B,YAAY;AAAA,MACxC;AAAA,MACA,MAAM;AAAA,QACJ,sBAAsB,YAAY;AAAA,QAClC,aAAa,YAAY;AAAA,QACzB,eAAe,YAAY;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,YAAY;AAAA,QACxB,WAAW,YAAY;AAAA,QACvB,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,WAAW;AAAA,QAClB,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,QACxB,QAAQ,YAAY;AAAA,QACpB,aAAa,YAAY;AAAA,QACzB,SAAS,YAAY;AAAA,QACrB,OAAO,YAAY;AAAA,QACnB,UAAU,YAAY;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,MACA,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,QACrB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,SAAS,WAAW;AAAA,QACpB,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/gBO,IAAMC,wBAAN,MAA2B;AAAA,EAChC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,oCACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,mBAAmB,WAAW;AAAA,QAC9B,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,wBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,qBAAqB,WAAW;AAAA,QAChC,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,oBAAoB,WAAW,SAAS;AAAA,MACxF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,oBAAoB,WAAW,SAAS;AAAA,MACxF,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,oBAAoB,WAAW,SAAS;AAAA,MACxF,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,OAAO,eAAe,YAAY,WAAW;AAAA,MAC7D;AAAA,MACA,MAAM;AAAA,QACJ,gBAAgB,OAAO,eAAe,YAAY,WAAW;AAAA,MAC/D;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,QAC3B,YAAY,WAAW;AAAA,QACvB,qBAAqB,WAAW;AAAA,QAChC,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACzhBO,IAAMC,qCAAN,MAAwC;AAAA,EAC7C,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgCrC,MAAM,qCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,kBAAkB,WAAW;AAAA,MAC/B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACpFO,IAAMC,mBAAN,MAAsB;AAAA,EAC3B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,YAAY;AAAA,QACrB,YAAY,YAAY;AAAA,MAC1B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,iBAAiB,WAAW;AAAA,QAC5B,aAAa,WAAW;AAAA,QACxB,OAAO,WAAW;AAAA,QAClB,IAAI,WAAW;AAAA,QACf,mBAAmB,WAAW;AAAA,QAC9B,YAAY,WAAW;AAAA,QACvB,cAAc,WAAW;AAAA,QACzB,kBAAkB,WAAW;AAAA,QAC7B,MAAM,WAAW;AAAA,QACjB,yBAAyB,WAAW;AAAA,QACpC,2BAA2B,WAAW;AAAA,QACtC,MAAM,WAAW;AAAA,QACjB,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,QACvB,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,cAA2B,YAAsC,UAA2C;AAChH,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,aAAa,WAAW;AAAA,QACxB,IAAI,WAAW;AAAA,QACf,MAAM,WAAW;AAAA,QACjB,mCAAmC,WAAW;AAAA,QAC9C,2BAA2B,WAAW;AAAA,QACtC,SAAS,WAAW;AAAA,QACpB,wBAAwB,WAAW;AAAA,MACrC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,6BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,mBAAmB,WAAW;AAAA,QAC9B,IAAI,WAAW;AAAA,QACf,wBAAwB,WAAW;AAAA,MACrC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,OAAO,eAAe,YAAY,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,iBAAiB,WAAW;AAAA,QAC5B,mBAAmB,WAAW;AAAA,QAC9B,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,OAAO,eAAe,YAAY,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,qBAAqB,WAAW;AAAA,QAChC,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,OAAO,eAAe,YAAY,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,cAAc,WAAW,SAAS;AAAA,MAClF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,2BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,cAAc,WAAW,SAAS;AAAA,MAClF,QAAQ;AAAA,MACR,MAAM,WAAW;AAAA,IACnB;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,8BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE,cAAc,WAAW,SAAS;AAAA,MAClF,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,WAAW;AAAA,MAClC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,OAAO,eAAe,YAAY,WAAW;AAAA,QAC3D,qBAAqB,OAAO,eAAe,YAAY,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,EAAE;AAAA,MAChD,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,QAC3B,YAAY,WAAW;AAAA,QACvB,qBAAqB,WAAW;AAAA,QAChC,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,KAAK,OAAO,eAAe,WAAW,aAAa,WAAW;AAEpE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,EAAE;AAAA,MACrC,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,OAAO,eAAe,YAAY,WAAW;AAAA,QAC3D,qBAAqB,OAAO,eAAe,YAAY,WAAW;AAAA,MACpE;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAYA,MAAM,kCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,WAAW,gBAAgB;AAAA,MAC9D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,eAAe,WAAW;AAAA,QAC1B,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvuBO,IAAMC,4BAAN,MAA+B;AAAA,EACpC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAgBrC,MAAM,oBAAiD,UAA2C;AAChG,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,UAAU,OAAO,eAAe,WAAW,aAAa,WAAW;AAEzE,UAAM,SAAwB;AAAA,MAC5B,KAAK,8BAA8B,OAAO;AAAA,MAC1C,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7DO,IAAMC,oBAAN,MAAuB;AAAA,EAC5B,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,YAAwC,UAA2C;AACvF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,UACJ,YACA,UACmB;AACnB,UAAM,WAAW,OAAO,eAAe,WAAW,aAAa,WAAW;AAE1E,UAAM,SAAwB;AAAA,MAC5B,KAAK,sBAAsB,QAAQ;AAAA,MACnC,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC9EO,IAAMC,gCAAN,MAAmC;AAAA,EACxC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA4BrC,MAAM,gCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,YAAY;AAAA,MAChE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,qBAAqB,WAAW;AAAA,QAChC,KAAK,WAAW;AAAA,QAChB,cAAc,WAAW;AAAA,QACzB,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,iCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,YAAY;AAAA,MAChE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,QAChB,cAAc,WAAW;AAAA,QACzB,cAAc,WAAW;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,cAAc;AAAA,QACd,KAAK;AAAA,QACL,cAAc;AAAA,QACd,cAAc;AAAA,MAChB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,iCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,YAAY;AAAA,MAChE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,QAChB,cAAc,WAAW;AAAA,QACzB,cAAc,WAAW;AAAA,MAC3B;AAAA,MACA,MAAM;AAAA,QACJ,GAAG;AAAA,QACH,cAAc;AAAA,QACd,KAAK;AAAA,QACL,cAAc;AAAA,QACd,cAAc;AAAA,MAChB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,iCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,YAAY;AAAA,MAChE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,KAAK,WAAW;AAAA,QAChB,cAAc,WAAW;AAAA,QACzB,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/LO,IAAMC,2BAAN,MAA8B;AAAA,EACnC,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkDrC,MAAM,wCACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,YAAY,WAAW;AAAA,QACvB,OAAO,WAAW;AAAA,QAClB,MAAM,WAAW;AAAA,QACjB,eAAe,WAAW;AAAA,QAC1B,UAAU,WAAW;AAAA,QACrB,OAAO,WAAW;AAAA,QAClB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwDA,MAAM,2CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkCA,MAAM,2CACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/FO,IAAM,iBAAN,cAA6B,WAAW;AAAA,EAC7C,qBAAqB,IAAIC,oBAAmB,IAAI;AAAA,EAChD,kBAAkB,IAAIC,iBAAgB,IAAI;AAAA,EAC1C,mBAAmB,IAAIC,kBAAiB,IAAI;AAAA,EAC5C,eAAe,IAAIC,cAAa,IAAI;AAAA,EACpC,gBAAgB,IAAIC,eAAc,IAAI;AAAA,EACtC,eAAe,IAAIC,cAAa,IAAI;AAAA,EACpC,UAAU,IAAIC,SAAQ,IAAI;AAAA,EAC1B,uBAAuB,IAAIC,sBAAqB,IAAI;AAAA,EACpD,aAAa,IAAIC,YAAW,IAAI;AAAA,EAChC,iBAAiB,IAAIC,gBAAe,IAAI;AAAA,EACxC,UAAU,IAAIC,SAAQ,IAAI;AAAA,EAC1B,gBAAgB,IAAIC,eAAc,IAAI;AAAA,EACtC,qBAAqB,IAAIC,oBAAmB,IAAI;AAAA,EAChD,SAAS,IAAIC,QAAO,IAAI;AAAA,EACxB,sBAAsB,IAAI,oBAAoB,IAAI;AAAA,EAClD,mBAAmB,IAAIC,kBAAiB,IAAI;AAAA,EAC5C,sBAAsB,IAAI,oBAAoB,IAAI;AAAA,EAClD,yBAAyB,IAAIC,wBAAuB,IAAI;AAAA,EACxD,gBAAgB,IAAIC,eAAc,IAAI;AAAA,EACtC,+BAA+B,IAAIC,8BAA6B,IAAI;AAAA,EACpE,oCAAoC,IAAIC,mCAAkC,IAAI;AAAA,EAC9E,2BAA2B,IAAIC,0BAAyB,IAAI;AAAA,EAC5D,0BAA0B,IAAIC,yBAAwB,IAAI;AAAA,EAC1D,8BAA8B,IAAIC,6BAA4B,IAAI;AAAA,EAClE,6BAA6B,IAAIC,4BAA2B,IAAI;AAAA,EAChE,2BAA2B,IAAIC,0BAAyB,IAAI;AAAA,EAC5D,cAAc,IAAIC,aAAY,IAAI;AAAA,EAClC,aAAa,IAAIC,YAAW,IAAI;AAAA,EAChC,iBAAiB,IAAIC,gBAAe,IAAI;AAAA,EACxC,yBAAyB,IAAIC,wBAAuB,IAAI;AAAA,EACxD,2BAA2B,IAAIC,0BAAyB,IAAI;AAAA,EAC5D,kBAAkB,IAAIC,iBAAgB,IAAI;AAAA,EAC1C,kBAAkB,IAAIC,iBAAgB,IAAI;AAAA,EAC1C,mBAAmB,IAAIC,kBAAiB,IAAI;AAAA,EAC5C,mBAAmB,IAAIC,kBAAiB,IAAI;AAAA,EAC5C,SAAS,IAAIC,QAAO,IAAI;AAAA,EACxB,cAAc,IAAIC,aAAY,IAAI;AAAA,EAClC,qBAAqB,IAAIC,oBAAmB,IAAI;AAAA,EAChD,uBAAuB,IAAIC,sBAAqB,IAAI;AAAA,EACpD,sBAAsB,IAAIC,qBAAoB,IAAI;AAAA,EAClD,aAAa,IAAIC,YAAW,IAAI;AAAA,EAChC,mBAAmB,IAAIC,kBAAiB,IAAI;AAAA,EAC5C,yBAAyB,IAAIC,wBAAuB,IAAI;AAAA,EACxD,aAAa,IAAIC,YAAW,IAAI;AAAA,EAChC,gBAAgB,IAAIC,eAAc,IAAI;AAAA,EACtC,yBAAyB,IAAIC,wBAAuB,IAAI;AAAA,EACxD,gBAAgB,IAAIC,eAAc,IAAI;AAAA,EACtC,kBAAkB,IAAIC,iBAAgB,IAAI;AAAA,EAC1C,eAAe,IAAIC,cAAa,IAAI;AAAA,EACpC,MAAM,IAAIC,KAAI,IAAI;AAAA,EAClB,mBAAmB,IAAIC,kBAAiB,IAAI;AAAA,EAC5C,SAAS,IAAIC,QAAO,IAAI;AAAA,EACxB,iBAAiB,IAAIC,gBAAe,IAAI;AAAA,EACxC,SAAS,IAAIC,QAAO,IAAI;AAAA,EACxB,cAAc,IAAIC,aAAY,IAAI;AAAA,EAClC,oBAAoB,IAAIC,mBAAkB,IAAI;AAAA,EAC9C,QAAQ,IAAIC,OAAM,IAAI;AAAA,EACtB,kBAAkB,IAAIC,iBAAgB,IAAI;AAAA,EAC1C,iBAAiB,IAAIC,gBAAe,IAAI;AAAA,EACxC,oBAAoB,IAAIC,mBAAkB,IAAI;AAAA,EAC9C,8BAA8B,IAAIC,6BAA4B,IAAI;AAAA,EAClE,oBAAoB,IAAIC,mBAAkB,IAAI;AAAA,EAC9C,eAAe,IAAIC,cAAa,IAAI;AAAA,EACpC,kBAAkB,IAAIC,iBAAgB,IAAI;AAAA,EAC1C,8BAA8B,IAAIC,6BAA4B,IAAI;AAAA,EAClE,2BAA2B,IAAIC,0BAAyB,IAAI;AAAA,EAC5D,oBAAoB,IAAIC,mBAAkB,IAAI;AAAA,EAC9C,oBAAoB,IAAIC,mBAAkB,IAAI;AAAA,EAC9C,eAAe,IAAIC,cAAa,IAAI;AAAA,EACpC,WAAW,IAAIC,UAAS,IAAI;AAAA,EAC5B,mBAAmB,IAAIC,kBAAiB,IAAI;AAAA,EAC5C,eAAe,IAAIC,cAAa,IAAI;AAAA,EACpC,kBAAkB,IAAIC,iBAAgB,IAAI;AAAA,EAC1C,UAAU,IAAIC,SAAQ,IAAI;AAAA,EAC1B,gBAAgB,IAAIC,eAAc,IAAI;AAAA,EACtC,kBAAkB,IAAIC,iBAAgB,IAAI;AAAA,EAC1C,aAAa,IAAIC,YAAW,IAAI;AAAA,EAChC,aAAa,IAAIC,YAAW,IAAI;AAAA,EAChC,kBAAkB,IAAIC,iBAAgB,IAAI;AAAA,EAC1C,SAAS,IAAIC,QAAO,IAAI;AAAA,EACxB,QAAQ,IAAIC,OAAM,IAAI;AAAA,EACtB,cAAc,IAAIC,aAAY,IAAI;AAAA,EAClC,eAAe,IAAIC,cAAa,IAAI;AAAA,EACpC,sBAAsB,IAAIC,qBAAoB,IAAI;AAAA,EAClD,oBAAoB,IAAIC,mBAAkB,IAAI;AAAA,EAC9C,iBAAiB,IAAIC,gBAAe,IAAI;AAAA,EACxC,QAAQ,IAAIC,OAAM,IAAI;AAAA,EACtB,aAAa,IAAIC,YAAW,IAAI;AAAA,EAChC,WAAW,IAAIC,UAAS,IAAI;AAAA,EAC5B,YAAY,IAAIC,WAAU,IAAI;AAAA,EAC9B,uBAAuB,IAAIC,sBAAqB,IAAI;AAAA,EACpD,oCAAoC,IAAIC,mCAAkC,IAAI;AAAA,EAC9E,kBAAkB,IAAIC,iBAAgB,IAAI;AAAA,EAC1C,2BAA2B,IAAIC,0BAAyB,IAAI;AAAA,EAC5D,mBAAmB,IAAIC,kBAAiB,IAAI;AAAA,EAC5C,+BAA+B,IAAIC,8BAA6B,IAAI;AAAA,EACpE,0BAA0B,IAAIC,yBAAwB,IAAI;AAC5D;;;ACrMA,IAAAC,kBAAA;;;ACAA,IAAAC,sBAAA;;;ACAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,2BAAAC;AAAA,EAAA,6BAAAC;AAAA;;;ACMO,IAAM,WAAN,MAAe;AAAA,EACpB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAuBrC,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,OAAO,YAAY;AAAA,QACnB,aAAa,YAAY;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACxCO,IAAM,OAAN,MAAW;AAAA,EAChB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,QAAiC,UAA2C;AAChF,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1BO,IAAM,UAAN,MAAc;AAAA,EACnB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAsBrC,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACtCO,IAAM,gBAAN,MAAoB;AAAA,EACzB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkBrC,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,MACA,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,WAAW,WAAW;AAAA,QACtB,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;ACvCO,IAAM,eAAN,MAAmB;AAAA,EACxB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EA8BrC,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,OAAO,YAAY;AAAA,QACnB,WAAW,YAAY;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,YAAY;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,cAAc;AAAA,MACnE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,cAAc;AAAA,MACnE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,cAAc;AAAA,MACnE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,cAAc,aAAa,WAAW,WAAW;AAAA,MACtG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,cAAc,aAAa,WAAW,WAAW;AAAA,MACtG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,cAAc,aAAa,WAAW,WAAW;AAAA,MACtG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,cAAc;AAAA,MACnE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAyBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,cAAc;AAAA,MACnE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,qCAAqC,WAAW,cAAc;AAAA,MACnE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,QAClB,WAAW,WAAW;AAAA,MACxB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,gBAA0B,YAAwC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,gBAAgB,WAAW;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC7fO,IAAM,UAAN,MAAc;AAAA,EACnB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAkCrC,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,YAAY,YAAY;AAAA,QACxB,eAAe,YAAY;AAAA,QAC3B,gBAAgB,YAAY;AAAA,QAC5B,gBAAgB,YAAY;AAAA,QAC5B,eAAe,YAAY;AAAA,QAC3B,eAAe,YAAY;AAAA,QAC3B,QAAQ,YAAY;AAAA,QACpB,OAAO,YAAY;AAAA,QACnB,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgDA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,eAAe,YAAY;AAAA,QAC3B,eAAe,YAAY;AAAA,QAC3B,oBAAoB,YAAY;AAAA,QAChC,qBAAqB,YAAY;AAAA,QACjC,iBAAiB,YAAY;AAAA,QAC7B,SAAS,YAAY;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,4BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY,aAAa,WAAW,UAAU;AAAA,MAC9F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAqBA,MAAM,eACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY,aAAa,WAAW,UAAU;AAAA,MAC9F,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsCA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,wBAAwB,WAAW;AAAA,QACnC,mBAAmB,WAAW;AAAA,QAC9B,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAiCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY,eAAe,WAAW,YAAY;AAAA,MAClG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY,eAAe,WAAW,YAAY;AAAA,MAClG,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,QACnB,UAAU,WAAW;AAAA,QACrB,QAAQ,WAAW;AAAA,QACnB,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY,YAAY,WAAW,SAAS;AAAA,MAC5F,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA4BA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY,YAAY,WAAW,SAAS;AAAA,MAC5F,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,MACA,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,UAAoB,YAAkC,UAA2C;AACrG,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,YAAsB,YAAoC,UAA2C;AACzG,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA8BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,sBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY,QAAQ,WAAW,WAAW;AAAA,MAC1F,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,yBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,uBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,0BACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,YAAY;AAAA,MAC5D,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,IAAI,WAAW;AAAA,QACf,mBAAmB,WAAW;AAAA,MAChC;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,cAAc;AAAA,MAC9D,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAmBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,cAAc;AAAA,MAC9D,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,MACA,MAAM;AAAA,QACJ,MAAM,WAAW;AAAA,QACjB,QAAQ,WAAW;AAAA,QACnB,SAAS,WAAW;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,eAAyB,YAAuC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK,gCAAgC,WAAW,cAAc;AAAA,MAC9D,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC1kCO,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAoCrC,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,MACA,QAAQ;AAAA,QACN,aAAa,YAAY;AAAA,QACzB,eAAe,YAAY;AAAA,QAC3B,OAAO,YAAY;AAAA,QACnB,OAAO,YAAY;AAAA,QACnB,QAAQ,YAAY;AAAA,MACtB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AACF;;;AC/DA,OAAOC,WAAU;AAOV,IAAM,cAAN,MAAkB;AAAA,EACvB,YAAoB,QAAgB;AAAhB;AAAA,EAAiB;AAAA,EAwBrC,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK;AAAA,MACL,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,YAAY;AAAA,QACnB,OAAO,YAAY;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,IACV;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,oBACJ,YACA,UACmB;AACnB,UAAM,WAAW,IAAI,SAAS;AAC9B,UAAM,cAAc,MAAM,QAAQ,WAAW,UAAU,IAAI,WAAW,aAAa,CAAC,WAAW,UAAU;AAGzG,QAAI;AAEJ,QAAI,OAAO,WAAW,aAAa;AACjC,YAAM,EAAE,UAAU,aAAa,IAAI,MAAM,OAAO,QAAQ;AAExD,iBAAW;AAAA,IACb;AAEA,qBAAiB,cAAc,aAAa;AAC1C,YAAM,OAAO,MAAM,KAAK,eAAe,YAAYA,OAAM,QAAQ;AAEjE,UAAI,EAAE,gBAAgB,QAAQ,gBAAgB,OAAO;AACnD,cAAM,IAAI,MAAM,yCAAyC,OAAO,IAAI,EAAE;AAAA,MACxE;AAEA,eAAS,OAAO,QAAQ,MAAM,WAAW,QAAQ;AAAA,IACnD;AAEA,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,QACrB,gBAAgB;AAAA,MAClB;AAAA,MACA,MAAM;AAAA,IACR;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAwBA,MAAM,aACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,MACA,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,aAAuB,YAAqC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoBA,MAAM,gBAA0B,YAAwC,UAA2C;AACjH,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,MACA,MAAM;AAAA,QACJ,WAAW,WAAW;AAAA,QACtB,YAAY,WAAW;AAAA,MACzB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgBA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,MACA,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,WAAW,WAAW;AAAA,QACtB,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,UAAiC,YAAkC,UAA2C;AAClH,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,QACzB,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,SAA2B,YAAiC,UAA2C;AAC3G,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa,UAAU,WAAW,OAAO;AAAA,MAC7F,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,cAAc,WAAW;AAAA,MAC3B;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAuBA,MAAM,iBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa,UAAU,WAAW,OAAO;AAAA,MAC7F,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,gBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,SAAS,WAAW;AAAA,QACpB,QAAQ,WAAW;AAAA,QACnB,aAAa,WAAW;AAAA,QACxB,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoDA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,MACA,MAAM;AAAA,QACJ,aAAa,WAAW;AAAA,QACxB,MAAM,WAAW;AAAA,QACjB,aAAa,WAAW;AAAA,QACxB,UAAU,WAAW;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAsBA,MAAM,mBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa,gBAAgB,WAAW,aAAa;AAAA,MACzG,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAkBA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa,gBAAgB,WAAW,aAAa;AAAA,MACzG,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAoCA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa,gBAAgB,WAAW,aAAa;AAAA,MACzG,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,QAAQ,WAAW;AAAA,MACrB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAgCA,MAAM,kBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa,gBAAgB,WAAW,aAAa;AAAA,MACzG,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA6BA,MAAM,YACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa,gBAAgB,WAAW,aAAa,aAAa,WAAW,WAAW;AAAA,MAC5I,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,YAAyB,YAAoC,UAA2C;AAC5G,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa,gBAAgB,WAAW,aAAa,aAAa,WAAW,WAAW;AAAA,MAC5I,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,eAAyB,YAAuC,UAA2C;AAC/G,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa,gBAAgB,WAAW,aAAa,aAAa,WAAW,WAAW;AAAA,MAC5I,QAAQ;AAAA,MACR,SAAS;AAAA,QACP,qBAAqB;AAAA,MACvB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EA0BA,MAAM,qBACJ,YACA,UACmB;AACnB,UAAM,SAAwB;AAAA,MAC5B,KAAK,oCAAoC,WAAW,aAAa;AAAA,MACjE,QAAQ;AAAA,MACR,QAAQ;AAAA,QACN,OAAO,WAAW;AAAA,QAClB,OAAO,WAAW;AAAA,MACpB;AAAA,IACF;AAEA,WAAO,KAAK,OAAO,YAAY,QAAQ,QAAQ;AAAA,EACjD;AAAA,EAEA,MAAc,eACZ,YACAA,OAEA,UACsB;AACtB,UAAM,WAAW,WAAW,aAAaA,MAAK,QAAQ,WAAW,QAAQ,KAAK;AAE9E,QAAI,WAAW,gBAAgB,QAAQ,WAAW,gBAAgB,MAAM;AACtE,aAAO,WAAW;AAAA,IACpB;AAEA,QAAI,OAAO,WAAW,SAAS,UAAU;AACvC,aAAO,IAAI,KAAK,CAAC,WAAW,IAAI,GAAG,WAAW,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,IAC5E;AAEA,QAAI,YAAY,WAAW,gBAAgB,UAAU;AACnD,aAAO,KAAK,cAAc,WAAW,MAAM,WAAW,UAAU,QAAQ;AAAA,IAC1E;AAEA,QAAI,WAAW,gBAAgB,gBAAgB;AAC7C,aAAO,KAAK,cAAc,WAAW,MAAM,WAAW,UAAU,QAAQ;AAAA,IAC1E;AAEA,QAAI,YAAY,OAAO,WAAW,IAAI,KAAK,WAAW,gBAAgB,aAAa;AACjF,aAAO,IAAI,KAAK,CAAC,WAAW,IAAI,GAAG,WAAW,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,IAC5E;AAEA,UAAM,IAAI,MAAM,mCAAmC;AAAA,EACrD;AAAA,EAEA,MAAc,cAEZ,QACA,UACA,UACe;AACf,QAAI,OAAO,WAAW,eAAe,mBAAmB,MAAM,OAAO,QAAQ,GAAG,UAAU;AACxF,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,cAAM,SAAuB,CAAC;AAE9B,eAAO,GAAG,QAAQ,WAAS,OAAO,KAAK,KAAK,CAAC;AAC7C,eAAO,GAAG,OAAO,MAAM;AACrB,gBAAM,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhD,kBAAQ,IAAI,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC;AAAA,QACxD,CAAC;AACD,eAAO,GAAG,SAAS,MAAM;AAAA,MAC3B,CAAC;AAAA,IACH;AAEA,QAAI,kBAAkB,gBAAgB;AACpC,YAAM,SAAS,OAAO,UAAU;AAChC,YAAM,SAAuB,CAAC;AAE9B,UAAI,OAAO;AAEX,aAAO,CAAC,MAAM;AACZ,cAAM,EAAE,OAAO,MAAM,WAAW,IAAI,MAAM,OAAO,KAAK;AAEtD,YAAI,MAAO,QAAO,KAAK,KAAK;AAC5B,eAAO;AAAA,MACT;AAEA,YAAM,OAAO,IAAI,KAAK,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEhD,aAAO,IAAI,KAAK,CAAC,IAAI,GAAG,UAAU,EAAE,MAAM,SAAS,CAAC;AAAA,IACtD;AAEA,UAAM,IAAI,MAAM,0BAA0B;AAAA,EAC5C;AACF;;;AC33BA,IAAAC,kBAAA;;;ACAA,IAAAC,sBAAA;;;ACUO,IAAM,oBAAN,cAAgC,WAAW;AAAA,EAChD,WAAW,IAAI,SAAS,IAAI;AAAA,EAC5B,OAAO,IAAI,KAAK,IAAI;AAAA,EACpB,WAAW,IAAI,QAAQ,IAAI;AAAA,EAC3B,gBAAgB,IAAI,cAAc,IAAI;AAAA,EACtC,eAAe,IAAI,aAAa,IAAI;AAAA,EACpC,UAAU,IAAI,QAAQ,IAAI;AAAA,EAC1B,cAAc,IAAI,YAAY,IAAI;AAAA,EAClC,cAAc,IAAI,YAAY,IAAI;AACpC;;;ACZO,IAAK,aAAL,kBAAKC,gBAAL;AACL,EAAAA,YAAA,WAAQ;AACR,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,cAAW;AACX,EAAAA,YAAA,iBAAc;AAJJ,SAAAA;AAAA,GAAA;AAWL,SAAS,aAAa,YAAwB,QAA4B;AAC/E,UAAQ,YAAY;AAAA,IAClB,KAAK;AACH,aAAO,IAAI,YAAY,MAAM;AAAA,IAC/B,KAAK;AACH,aAAO,IAAI,eAAe,MAAM;AAAA,IAClC,KAAK;AACH,aAAO,IAAI,eAAe,MAAM;AAAA,IAClC,KAAK;AACH,aAAO,IAAI,kBAAkB,MAAM;AAAA,IACrC;AACE,aAAO,IAAI,WAAW,MAAM;AAAA,EAChC;AACF;","names":["models_exports","parameters_exports","mime","models_exports","parameters_exports","AnnouncementBanner","AppDataPolicies","AppMigration","AppProperties","ApplicationRoles","AuditRecords","Avatars","ClassificationLevels","Dashboards","DynamicModules","FilterSharing","Filters","GroupAndUserPicker","Groups","IssueAttachments","IssueCommentProperties","IssueComments","IssueCustomFieldAssociations","IssueCustomFieldConfigurationApps","IssueCustomFieldContexts","IssueCustomFieldOptions","IssueCustomFieldOptionsApps","IssueCustomFieldValuesApps","IssueFieldConfigurations","IssueFields","IssueLinkTypes","IssueLinks","IssueNavigatorSettings","IssueNotificationSchemes","IssuePriorities","IssueProperties","IssueRemoteLinks","IssueResolutions","IssueSearch","IssueSecurityLevel","IssueSecuritySchemes","IssueTypeProperties","IssueTypeSchemes","IssueTypeScreenSchemes","IssueTypes","IssueVotes","IssueWatchers","IssueWorklogProperties","IssueWorklogs","Issues","JQL","JiraExpressions","JiraSettings","JqlFunctionsApps","Labels","LicenseMetrics","Myself","PermissionSchemes","Permissions","Plans","PrioritySchemes","ProjectAvatars","ProjectCategories","ProjectClassificationLevels","ProjectComponents","ProjectEmail","ProjectFeatures","ProjectKeyAndNameValidation","ProjectPermissionSchemes","ProjectProperties","ProjectRoleActors","ProjectRoles","ProjectTemplates","ProjectTypes","ProjectVersions","Projects","ScreenSchemes","ScreenTabFields","ScreenTabs","Screens","ServerInfo","ServiceRegistry","Status","Tasks","TeamsInPlan","TimeTracking","UIModificationsApps","UserNavProperties","UserProperties","UserSearch","Users","models_exports","parameters_exports","Webhooks","WorkflowSchemeDrafts","WorkflowSchemeProjectAssociations","WorkflowSchemes","WorkflowStatusCategories","WorkflowStatuses","WorkflowTransitionProperties","WorkflowTransitionRules","Workflows","AnnouncementBanner","AppDataPolicies","ApplicationRoles","AppMigration","AppProperties","AuditRecords","Avatars","ClassificationLevels","Dashboards","DynamicModules","Filters","FilterSharing","GroupAndUserPicker","Groups","mime","IssueAttachments","IssueCommentProperties","IssueComments","IssueCustomFieldAssociations","IssueCustomFieldConfigurationApps","IssueCustomFieldContexts","IssueCustomFieldOptions","IssueCustomFieldOptionsApps","IssueCustomFieldValuesApps","IssueFieldConfigurations","IssueFields","IssueLinks","IssueLinkTypes","IssueNavigatorSettings","IssueNotificationSchemes","IssuePriorities","IssueProperties","IssueRemoteLinks","IssueResolutions","Issues","IssueSearch","IssueSecurityLevel","IssueSecuritySchemes","IssueTypeProperties","IssueTypes","IssueTypeSchemes","IssueTypeScreenSchemes","IssueVotes","IssueWatchers","IssueWorklogProperties","IssueWorklogs","JiraExpressions","JiraSettings","JQL","JqlFunctionsApps","Labels","LicenseMetrics","Myself","Permissions","PermissionSchemes","Plans","PrioritySchemes","ProjectAvatars","ProjectCategories","ProjectClassificationLevels","ProjectComponents","ProjectEmail","ProjectFeatures","ProjectKeyAndNameValidation","ProjectPermissionSchemes","ProjectProperties","ProjectRoleActors","ProjectRoles","Projects","ProjectTemplates","ProjectTypes","ProjectVersions","Screens","ScreenSchemes","ScreenTabFields","ScreenTabs","ServerInfo","ServiceRegistry","Status","Tasks","TeamsInPlan","TimeTracking","UIModificationsApps","UserNavProperties","UserProperties","Users","UserSearch","Webhooks","Workflows","WorkflowSchemeDrafts","WorkflowSchemeProjectAssociations","WorkflowSchemes","WorkflowStatusCategories","WorkflowStatuses","WorkflowTransitionProperties","WorkflowTransitionRules","AnnouncementBanner","AppDataPolicies","ApplicationRoles","AppMigration","AppProperties","AuditRecords","Avatars","ClassificationLevels","Dashboards","DynamicModules","Filters","FilterSharing","GroupAndUserPicker","Groups","IssueAttachments","IssueCommentProperties","IssueComments","IssueCustomFieldAssociations","IssueCustomFieldConfigurationApps","IssueCustomFieldContexts","IssueCustomFieldOptions","IssueCustomFieldOptionsApps","IssueCustomFieldValuesApps","IssueFieldConfigurations","IssueFields","IssueLinks","IssueLinkTypes","IssueNavigatorSettings","IssueNotificationSchemes","IssuePriorities","IssueProperties","IssueRemoteLinks","IssueResolutions","Issues","IssueSearch","IssueSecurityLevel","IssueSecuritySchemes","IssueTypeProperties","IssueTypes","IssueTypeSchemes","IssueTypeScreenSchemes","IssueVotes","IssueWatchers","IssueWorklogProperties","IssueWorklogs","JiraExpressions","JiraSettings","JQL","JqlFunctionsApps","Labels","LicenseMetrics","Myself","Permissions","PermissionSchemes","Plans","PrioritySchemes","ProjectAvatars","ProjectCategories","ProjectClassificationLevels","ProjectComponents","ProjectEmail","ProjectFeatures","ProjectKeyAndNameValidation","ProjectPermissionSchemes","ProjectProperties","ProjectRoleActors","ProjectRoles","Projects","ProjectTemplates","ProjectTypes","ProjectVersions","Screens","ScreenSchemes","ScreenTabFields","ScreenTabs","ServerInfo","ServiceRegistry","Status","Tasks","TeamsInPlan","TimeTracking","UIModificationsApps","UserNavProperties","UserProperties","Users","UserSearch","Webhooks","Workflows","WorkflowSchemeDrafts","WorkflowSchemeProjectAssociations","WorkflowSchemes","WorkflowStatusCategories","WorkflowStatuses","WorkflowTransitionProperties","WorkflowTransitionRules","models_exports","parameters_exports","models_exports","parameters_exports","mime","models_exports","parameters_exports","ClientType"]}