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 { ReportScheduleCreateRequest } from "../models/ReportScheduleCreateRequest";
import { ReportScheduleListResponse } from "../models/ReportScheduleListResponse";
import { ReportSchedulePatchRequest } from "../models/ReportSchedulePatchRequest";
import { ReportScheduleResourceType } from "../models/ReportScheduleResourceType";
import { ReportScheduleResponse } from "../models/ReportScheduleResponse";
import { ReportScheduleToggleRequest } from "../models/ReportScheduleToggleRequest";
export declare class ReportSchedulesApiRequestFactory extends BaseAPIRequestFactory {
    createReportSchedule(body: ReportScheduleCreateRequest, _options?: Configuration): Promise<RequestContext>;
    deleteReportSchedule(scheduleUuid: string, _options?: Configuration): Promise<RequestContext>;
    getReportSchedule(scheduleUuid: string, _options?: Configuration): Promise<RequestContext>;
    getReportSchedulesForResource(resourceType: ReportScheduleResourceType, resourceId: string, _options?: Configuration): Promise<RequestContext>;
    listReportSchedules(pageLimit?: number, pageOffset?: number, filterTitle?: string, filterAuthorUuid?: string, filterRecipients?: string, _options?: Configuration): Promise<RequestContext>;
    patchReportSchedule(scheduleUuid: string, body: ReportSchedulePatchRequest, _options?: Configuration): Promise<RequestContext>;
    toggleReportSchedule(scheduleUuid: string, body: ReportScheduleToggleRequest, _options?: Configuration): Promise<RequestContext>;
}
export declare class ReportSchedulesApiResponseProcessor {
    /**
     * 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 createReportSchedule
     * @throws ApiException if the response code was not in [200, 299]
     */
    createReportSchedule(response: ResponseContext): Promise<ReportScheduleResponse>;
    /**
     * 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 deleteReportSchedule
     * @throws ApiException if the response code was not in [200, 299]
     */
    deleteReportSchedule(response: ResponseContext): Promise<ReportScheduleResponse>;
    /**
     * 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 getReportSchedule
     * @throws ApiException if the response code was not in [200, 299]
     */
    getReportSchedule(response: ResponseContext): Promise<ReportScheduleResponse>;
    /**
     * 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 getReportSchedulesForResource
     * @throws ApiException if the response code was not in [200, 299]
     */
    getReportSchedulesForResource(response: ResponseContext): Promise<ReportScheduleListResponse>;
    /**
     * 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 listReportSchedules
     * @throws ApiException if the response code was not in [200, 299]
     */
    listReportSchedules(response: ResponseContext): Promise<ReportScheduleListResponse>;
    /**
     * 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 patchReportSchedule
     * @throws ApiException if the response code was not in [200, 299]
     */
    patchReportSchedule(response: ResponseContext): Promise<ReportScheduleResponse>;
    /**
     * 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 toggleReportSchedule
     * @throws ApiException if the response code was not in [200, 299]
     */
    toggleReportSchedule(response: ResponseContext): Promise<ReportScheduleResponse>;
}
export interface ReportSchedulesApiCreateReportScheduleRequest {
    /**
     * @type ReportScheduleCreateRequest
     */
    body: ReportScheduleCreateRequest;
}
export interface ReportSchedulesApiDeleteReportScheduleRequest {
    /**
     * The unique identifier of the report schedule to delete.
     * @type string
     */
    scheduleUuid: string;
}
export interface ReportSchedulesApiGetReportScheduleRequest {
    /**
     * The unique identifier of the report schedule to fetch.
     * @type string
     */
    scheduleUuid: string;
}
export interface ReportSchedulesApiGetReportSchedulesForResourceRequest {
    /**
     * The type of resource to fetch report schedules for.
     * @type ReportScheduleResourceType
     */
    resourceType: ReportScheduleResourceType;
    /**
     * The identifier of the resource to fetch report schedules for.
     * @type string
     */
    resourceId: string;
}
export interface ReportSchedulesApiListReportSchedulesRequest {
    /**
     * The maximum number of schedules to return. The maximum value is 50.
     * @type number
     */
    pageLimit?: number;
    /**
     * The offset from which to start returning schedules.
     * @type number
     */
    pageOffset?: number;
    /**
     * Filter schedules by report title.
     * @type string
     */
    filterTitle?: string;
    /**
     * Filter schedules by author UUID.
     * @type string
     */
    filterAuthorUuid?: string;
    /**
     * Filter schedules by a comma-separated list of recipients.
     * @type string
     */
    filterRecipients?: string;
}
export interface ReportSchedulesApiPatchReportScheduleRequest {
    /**
     * The unique identifier of the report schedule to update.
     * @type string
     */
    scheduleUuid: string;
    /**
     * @type ReportSchedulePatchRequest
     */
    body: ReportSchedulePatchRequest;
}
export interface ReportSchedulesApiToggleReportScheduleRequest {
    /**
     * The unique identifier of the report schedule to toggle.
     * @type string
     */
    scheduleUuid: string;
    /**
     * @type ReportScheduleToggleRequest
     */
    body: ReportScheduleToggleRequest;
}
export declare class ReportSchedulesApi {
    private requestFactory;
    private responseProcessor;
    private configuration;
    constructor(configuration: Configuration, requestFactory?: ReportSchedulesApiRequestFactory, responseProcessor?: ReportSchedulesApiResponseProcessor);
    /**
     * Create a new scheduled report. A schedule renders a dashboard or integration dashboard
     * on a recurring cadence and delivers it to the configured recipients over email, Slack,
     * or Microsoft Teams.
     * Requires the `generate_dashboard_reports` permission.
     * @param param The request object
     */
    createReportSchedule(param: ReportSchedulesApiCreateReportScheduleRequest, options?: Configuration): Promise<ReportScheduleResponse>;
    /**
     * Delete a report schedule by its unique identifier. The response returns the deleted schedule.
     * Requires a reporting write permission appropriate to the targeted resource type and schedule ownership.
     * @param param The request object
     */
    deleteReportSchedule(param: ReportSchedulesApiDeleteReportScheduleRequest, options?: Configuration): Promise<ReportScheduleResponse>;
    /**
     * Get a report schedule by its unique identifier.
     * Requires a reporting read permission appropriate to the targeted resource type.
     * @param param The request object
     */
    getReportSchedule(param: ReportSchedulesApiGetReportScheduleRequest, options?: Configuration): Promise<ReportScheduleResponse>;
    /**
     * Get all report schedules that target a dashboard or integration dashboard resource.
     * Requires a reporting read permission appropriate to the targeted resource type.
     * @param param The request object
     */
    getReportSchedulesForResource(param: ReportSchedulesApiGetReportSchedulesForResourceRequest, options?: Configuration): Promise<ReportScheduleListResponse>;
    /**
     * List dashboard and integration dashboard report schedules for the organization.
     * The response is paginated and can be filtered by title, author UUID, or recipients.
     * Requires the `generate_dashboard_reports` permission.
     * @param param The request object
     */
    listReportSchedules(param?: ReportSchedulesApiListReportSchedulesRequest, options?: Configuration): Promise<ReportScheduleListResponse>;
    /**
     * Update an existing scheduled report by its identifier. The editable attributes
     * are replaced with the supplied values; the targeted resource (`resource_id` and
     * `resource_type`) cannot be changed after creation.
     * Requires the `generate_dashboard_reports` permission and schedule ownership.
     * @param param The request object
     */
    patchReportSchedule(param: ReportSchedulesApiPatchReportScheduleRequest, options?: Configuration): Promise<ReportScheduleResponse>;
    /**
     * Activate or pause a report schedule by setting its status to `active` or `inactive`.
     * Requires a reporting write permission appropriate to the targeted resource type and schedule ownership.
     * @param param The request object
     */
    toggleReportSchedule(param: ReportSchedulesApiToggleReportScheduleRequest, options?: Configuration): Promise<ReportScheduleResponse>;
}
