import { BaseAPIRequestFactory } from "../../datadog-api-client-common/baseapi";
import { Configuration } from "../../datadog-api-client-common/configuration";
import { RequestContext, ResponseContext } from "../../datadog-api-client-common/http/http";
import { IncidentAttachmentAttachmentType } from "../models/IncidentAttachmentAttachmentType";
import { IncidentAttachmentRelatedObject } from "../models/IncidentAttachmentRelatedObject";
import { IncidentAttachmentsResponse } from "../models/IncidentAttachmentsResponse";
import { IncidentAttachmentUpdateRequest } from "../models/IncidentAttachmentUpdateRequest";
import { IncidentAttachmentUpdateResponse } from "../models/IncidentAttachmentUpdateResponse";
import { IncidentCreateRequest } from "../models/IncidentCreateRequest";
import { IncidentIntegrationMetadataCreateRequest } from "../models/IncidentIntegrationMetadataCreateRequest";
import { IncidentIntegrationMetadataListResponse } from "../models/IncidentIntegrationMetadataListResponse";
import { IncidentIntegrationMetadataPatchRequest } from "../models/IncidentIntegrationMetadataPatchRequest";
import { IncidentIntegrationMetadataResponse } from "../models/IncidentIntegrationMetadataResponse";
import { IncidentRelatedObject } from "../models/IncidentRelatedObject";
import { IncidentResponse } from "../models/IncidentResponse";
import { IncidentResponseData } from "../models/IncidentResponseData";
import { IncidentSearchResponse } from "../models/IncidentSearchResponse";
import { IncidentSearchResponseIncidentsData } from "../models/IncidentSearchResponseIncidentsData";
import { IncidentSearchSortOrder } from "../models/IncidentSearchSortOrder";
import { IncidentsResponse } from "../models/IncidentsResponse";
import { IncidentTodoCreateRequest } from "../models/IncidentTodoCreateRequest";
import { IncidentTodoListResponse } from "../models/IncidentTodoListResponse";
import { IncidentTodoPatchRequest } from "../models/IncidentTodoPatchRequest";
import { IncidentTodoResponse } from "../models/IncidentTodoResponse";
import { IncidentUpdateRequest } from "../models/IncidentUpdateRequest";
export declare class IncidentsApiRequestFactory extends BaseAPIRequestFactory {
    createIncident(body: IncidentCreateRequest, _options?: Configuration): Promise<RequestContext>;
    createIncidentIntegration(incidentId: string, body: IncidentIntegrationMetadataCreateRequest, _options?: Configuration): Promise<RequestContext>;
    createIncidentTodo(incidentId: string, body: IncidentTodoCreateRequest, _options?: Configuration): Promise<RequestContext>;
    deleteIncident(incidentId: string, _options?: Configuration): Promise<RequestContext>;
    deleteIncidentIntegration(incidentId: string, integrationMetadataId: string, _options?: Configuration): Promise<RequestContext>;
    deleteIncidentTodo(incidentId: string, todoId: string, _options?: Configuration): Promise<RequestContext>;
    getIncident(incidentId: string, include?: Array<IncidentRelatedObject>, _options?: Configuration): Promise<RequestContext>;
    getIncidentIntegration(incidentId: string, integrationMetadataId: string, _options?: Configuration): Promise<RequestContext>;
    getIncidentTodo(incidentId: string, todoId: string, _options?: Configuration): Promise<RequestContext>;
    listIncidentAttachments(incidentId: string, include?: Array<IncidentAttachmentRelatedObject>, filterAttachmentType?: Array<IncidentAttachmentAttachmentType>, _options?: Configuration): Promise<RequestContext>;
    listIncidentIntegrations(incidentId: string, _options?: Configuration): Promise<RequestContext>;
    listIncidents(include?: Array<IncidentRelatedObject>, pageSize?: number, pageOffset?: number, _options?: Configuration): Promise<RequestContext>;
    listIncidentTodos(incidentId: string, _options?: Configuration): Promise<RequestContext>;
    searchIncidents(query: string, include?: IncidentRelatedObject, sort?: IncidentSearchSortOrder, pageSize?: number, pageOffset?: number, _options?: Configuration): Promise<RequestContext>;
    updateIncident(incidentId: string, body: IncidentUpdateRequest, include?: Array<IncidentRelatedObject>, _options?: Configuration): Promise<RequestContext>;
    updateIncidentAttachments(incidentId: string, body: IncidentAttachmentUpdateRequest, include?: Array<IncidentAttachmentRelatedObject>, _options?: Configuration): Promise<RequestContext>;
    updateIncidentIntegration(incidentId: string, integrationMetadataId: string, body: IncidentIntegrationMetadataPatchRequest, _options?: Configuration): Promise<RequestContext>;
    updateIncidentTodo(incidentId: string, todoId: string, body: IncidentTodoPatchRequest, _options?: Configuration): Promise<RequestContext>;
}
export declare class IncidentsApiResponseProcessor {
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to createIncident
     * @throws ApiException if the response code was not in [200, 299]
     */
    createIncident(response: ResponseContext): Promise<IncidentResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to createIncidentIntegration
     * @throws ApiException if the response code was not in [200, 299]
     */
    createIncidentIntegration(response: ResponseContext): Promise<IncidentIntegrationMetadataResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to createIncidentTodo
     * @throws ApiException if the response code was not in [200, 299]
     */
    createIncidentTodo(response: ResponseContext): Promise<IncidentTodoResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to deleteIncident
     * @throws ApiException if the response code was not in [200, 299]
     */
    deleteIncident(response: ResponseContext): Promise<void>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to deleteIncidentIntegration
     * @throws ApiException if the response code was not in [200, 299]
     */
    deleteIncidentIntegration(response: ResponseContext): Promise<void>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to deleteIncidentTodo
     * @throws ApiException if the response code was not in [200, 299]
     */
    deleteIncidentTodo(response: ResponseContext): Promise<void>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to getIncident
     * @throws ApiException if the response code was not in [200, 299]
     */
    getIncident(response: ResponseContext): Promise<IncidentResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to getIncidentIntegration
     * @throws ApiException if the response code was not in [200, 299]
     */
    getIncidentIntegration(response: ResponseContext): Promise<IncidentIntegrationMetadataResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to getIncidentTodo
     * @throws ApiException if the response code was not in [200, 299]
     */
    getIncidentTodo(response: ResponseContext): Promise<IncidentTodoResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to listIncidentAttachments
     * @throws ApiException if the response code was not in [200, 299]
     */
    listIncidentAttachments(response: ResponseContext): Promise<IncidentAttachmentsResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to listIncidentIntegrations
     * @throws ApiException if the response code was not in [200, 299]
     */
    listIncidentIntegrations(response: ResponseContext): Promise<IncidentIntegrationMetadataListResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to listIncidents
     * @throws ApiException if the response code was not in [200, 299]
     */
    listIncidents(response: ResponseContext): Promise<IncidentsResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to listIncidentTodos
     * @throws ApiException if the response code was not in [200, 299]
     */
    listIncidentTodos(response: ResponseContext): Promise<IncidentTodoListResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to searchIncidents
     * @throws ApiException if the response code was not in [200, 299]
     */
    searchIncidents(response: ResponseContext): Promise<IncidentSearchResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to updateIncident
     * @throws ApiException if the response code was not in [200, 299]
     */
    updateIncident(response: ResponseContext): Promise<IncidentResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to updateIncidentAttachments
     * @throws ApiException if the response code was not in [200, 299]
     */
    updateIncidentAttachments(response: ResponseContext): Promise<IncidentAttachmentUpdateResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to updateIncidentIntegration
     * @throws ApiException if the response code was not in [200, 299]
     */
    updateIncidentIntegration(response: ResponseContext): Promise<IncidentIntegrationMetadataResponse>;
    /**
     * Unwraps the actual response sent by the server from the response context and deserializes the response content
     * to the expected objects
     *
     * @params response Response returned by the server for a request to updateIncidentTodo
     * @throws ApiException if the response code was not in [200, 299]
     */
    updateIncidentTodo(response: ResponseContext): Promise<IncidentTodoResponse>;
}
export interface IncidentsApiCreateIncidentRequest {
    /**
     * Incident payload.
     * @type IncidentCreateRequest
     */
    body: IncidentCreateRequest;
}
export interface IncidentsApiCreateIncidentIntegrationRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * Incident integration metadata payload.
     * @type IncidentIntegrationMetadataCreateRequest
     */
    body: IncidentIntegrationMetadataCreateRequest;
}
export interface IncidentsApiCreateIncidentTodoRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * Incident todo payload.
     * @type IncidentTodoCreateRequest
     */
    body: IncidentTodoCreateRequest;
}
export interface IncidentsApiDeleteIncidentRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
}
export interface IncidentsApiDeleteIncidentIntegrationRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * The UUID of the incident integration metadata.
     * @type string
     */
    integrationMetadataId: string;
}
export interface IncidentsApiDeleteIncidentTodoRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * The UUID of the incident todo.
     * @type string
     */
    todoId: string;
}
export interface IncidentsApiGetIncidentRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * Specifies which types of related objects should be included in the response.
     * @type Array<IncidentRelatedObject>
     */
    include?: Array<IncidentRelatedObject>;
}
export interface IncidentsApiGetIncidentIntegrationRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * The UUID of the incident integration metadata.
     * @type string
     */
    integrationMetadataId: string;
}
export interface IncidentsApiGetIncidentTodoRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * The UUID of the incident todo.
     * @type string
     */
    todoId: string;
}
export interface IncidentsApiListIncidentAttachmentsRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * Specifies which types of related objects are included in the response.
     * @type Array<IncidentAttachmentRelatedObject>
     */
    include?: Array<IncidentAttachmentRelatedObject>;
    /**
     * Specifies which types of attachments are included in the response.
     * @type Array<IncidentAttachmentAttachmentType>
     */
    filterAttachmentType?: Array<IncidentAttachmentAttachmentType>;
}
export interface IncidentsApiListIncidentIntegrationsRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
}
export interface IncidentsApiListIncidentsRequest {
    /**
     * Specifies which types of related objects should be included in the response.
     * @type Array<IncidentRelatedObject>
     */
    include?: Array<IncidentRelatedObject>;
    /**
     * Size for a given page. The maximum allowed value is 100.
     * @type number
     */
    pageSize?: number;
    /**
     * Specific offset to use as the beginning of the returned page.
     * @type number
     */
    pageOffset?: number;
}
export interface IncidentsApiListIncidentTodosRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
}
export interface IncidentsApiSearchIncidentsRequest {
    /**
     * Specifies which incidents should be returned. After entering a search query in your [Incidents page][1],
     * use the query parameter value in the URL of the page as the value for this parameter.
     *
     * The query can contain any number of incident facets joined by `ANDs`, along with multiple values for each of
     * those facets joined by `OR`s, for instance: `query="state:active AND severity:(SEV-2 OR SEV-1)"`.
     *
     * [1]: https://app.datadoghq.com/incidents
     * @type string
     */
    query: string;
    /**
     * Specifies which types of related objects should be included in the response.
     * @type IncidentRelatedObject
     */
    include?: IncidentRelatedObject;
    /**
     * Specifies the order of returned incidents.
     * @type IncidentSearchSortOrder
     */
    sort?: IncidentSearchSortOrder;
    /**
     * Size for a given page. The maximum allowed value is 100.
     * @type number
     */
    pageSize?: number;
    /**
     * Specific offset to use as the beginning of the returned page.
     * @type number
     */
    pageOffset?: number;
}
export interface IncidentsApiUpdateIncidentRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * Incident Payload.
     * @type IncidentUpdateRequest
     */
    body: IncidentUpdateRequest;
    /**
     * Specifies which types of related objects should be included in the response.
     * @type Array<IncidentRelatedObject>
     */
    include?: Array<IncidentRelatedObject>;
}
export interface IncidentsApiUpdateIncidentAttachmentsRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * Incident Attachment Payload.
     * @type IncidentAttachmentUpdateRequest
     */
    body: IncidentAttachmentUpdateRequest;
    /**
     * Specifies which types of related objects are included in the response.
     * @type Array<IncidentAttachmentRelatedObject>
     */
    include?: Array<IncidentAttachmentRelatedObject>;
}
export interface IncidentsApiUpdateIncidentIntegrationRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * The UUID of the incident integration metadata.
     * @type string
     */
    integrationMetadataId: string;
    /**
     * Incident integration metadata payload.
     * @type IncidentIntegrationMetadataPatchRequest
     */
    body: IncidentIntegrationMetadataPatchRequest;
}
export interface IncidentsApiUpdateIncidentTodoRequest {
    /**
     * The UUID of the incident.
     * @type string
     */
    incidentId: string;
    /**
     * The UUID of the incident todo.
     * @type string
     */
    todoId: string;
    /**
     * Incident todo payload.
     * @type IncidentTodoPatchRequest
     */
    body: IncidentTodoPatchRequest;
}
export declare class IncidentsApi {
    private requestFactory;
    private responseProcessor;
    private configuration;
    constructor(configuration: Configuration, requestFactory?: IncidentsApiRequestFactory, responseProcessor?: IncidentsApiResponseProcessor);
    /**
     * Create an incident.
     * @param param The request object
     */
    createIncident(param: IncidentsApiCreateIncidentRequest, options?: Configuration): Promise<IncidentResponse>;
    /**
     * Create an incident integration metadata.
     * @param param The request object
     */
    createIncidentIntegration(param: IncidentsApiCreateIncidentIntegrationRequest, options?: Configuration): Promise<IncidentIntegrationMetadataResponse>;
    /**
     * Create an incident todo.
     * @param param The request object
     */
    createIncidentTodo(param: IncidentsApiCreateIncidentTodoRequest, options?: Configuration): Promise<IncidentTodoResponse>;
    /**
     * Deletes an existing incident from the users organization.
     * @param param The request object
     */
    deleteIncident(param: IncidentsApiDeleteIncidentRequest, options?: Configuration): Promise<void>;
    /**
     * Delete an incident integration metadata.
     * @param param The request object
     */
    deleteIncidentIntegration(param: IncidentsApiDeleteIncidentIntegrationRequest, options?: Configuration): Promise<void>;
    /**
     * Delete an incident todo.
     * @param param The request object
     */
    deleteIncidentTodo(param: IncidentsApiDeleteIncidentTodoRequest, options?: Configuration): Promise<void>;
    /**
     * Get the details of an incident by `incident_id`.
     * @param param The request object
     */
    getIncident(param: IncidentsApiGetIncidentRequest, options?: Configuration): Promise<IncidentResponse>;
    /**
     * Get incident integration metadata details.
     * @param param The request object
     */
    getIncidentIntegration(param: IncidentsApiGetIncidentIntegrationRequest, options?: Configuration): Promise<IncidentIntegrationMetadataResponse>;
    /**
     * Get incident todo details.
     * @param param The request object
     */
    getIncidentTodo(param: IncidentsApiGetIncidentTodoRequest, options?: Configuration): Promise<IncidentTodoResponse>;
    /**
     * Get all attachments for a given incident.
     * @param param The request object
     */
    listIncidentAttachments(param: IncidentsApiListIncidentAttachmentsRequest, options?: Configuration): Promise<IncidentAttachmentsResponse>;
    /**
     * Get all integration metadata for an incident.
     * @param param The request object
     */
    listIncidentIntegrations(param: IncidentsApiListIncidentIntegrationsRequest, options?: Configuration): Promise<IncidentIntegrationMetadataListResponse>;
    /**
     * Get all incidents for the user's organization.
     * @param param The request object
     */
    listIncidents(param?: IncidentsApiListIncidentsRequest, options?: Configuration): Promise<IncidentsResponse>;
    /**
     * Provide a paginated version of listIncidents returning a generator with all the items.
     */
    listIncidentsWithPagination(param?: IncidentsApiListIncidentsRequest, options?: Configuration): AsyncGenerator<IncidentResponseData>;
    /**
     * Get all todos for an incident.
     * @param param The request object
     */
    listIncidentTodos(param: IncidentsApiListIncidentTodosRequest, options?: Configuration): Promise<IncidentTodoListResponse>;
    /**
     * Search for incidents matching a certain query.
     * @param param The request object
     */
    searchIncidents(param: IncidentsApiSearchIncidentsRequest, options?: Configuration): Promise<IncidentSearchResponse>;
    /**
     * Provide a paginated version of searchIncidents returning a generator with all the items.
     */
    searchIncidentsWithPagination(param: IncidentsApiSearchIncidentsRequest, options?: Configuration): AsyncGenerator<IncidentSearchResponseIncidentsData>;
    /**
     * Updates an incident. Provide only the attributes that should be updated as this request is a partial update.
     * @param param The request object
     */
    updateIncident(param: IncidentsApiUpdateIncidentRequest, options?: Configuration): Promise<IncidentResponse>;
    /**
     * The bulk update endpoint for creating, updating, and deleting attachments for a given incident.
     * @param param The request object
     */
    updateIncidentAttachments(param: IncidentsApiUpdateIncidentAttachmentsRequest, options?: Configuration): Promise<IncidentAttachmentUpdateResponse>;
    /**
     * Update an existing incident integration metadata.
     * @param param The request object
     */
    updateIncidentIntegration(param: IncidentsApiUpdateIncidentIntegrationRequest, options?: Configuration): Promise<IncidentIntegrationMetadataResponse>;
    /**
     * Update an incident todo.
     * @param param The request object
     */
    updateIncidentTodo(param: IncidentsApiUpdateIncidentTodoRequest, options?: Configuration): Promise<IncidentTodoResponse>;
}
