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 { FlakyTest } from "../models/FlakyTest";
import { FlakyTestsSearchRequest } from "../models/FlakyTestsSearchRequest";
import { FlakyTestsSearchResponse } from "../models/FlakyTestsSearchResponse";
import { TestOptimizationDeleteServiceSettingsRequest } from "../models/TestOptimizationDeleteServiceSettingsRequest";
import { TestOptimizationFlakyTestsManagementPoliciesGetRequest } from "../models/TestOptimizationFlakyTestsManagementPoliciesGetRequest";
import { TestOptimizationFlakyTestsManagementPoliciesResponse } from "../models/TestOptimizationFlakyTestsManagementPoliciesResponse";
import { TestOptimizationFlakyTestsManagementPoliciesUpdateRequest } from "../models/TestOptimizationFlakyTestsManagementPoliciesUpdateRequest";
import { TestOptimizationGetServiceSettingsRequest } from "../models/TestOptimizationGetServiceSettingsRequest";
import { TestOptimizationServiceSettingsResponse } from "../models/TestOptimizationServiceSettingsResponse";
import { TestOptimizationUpdateServiceSettingsRequest } from "../models/TestOptimizationUpdateServiceSettingsRequest";
import { UpdateFlakyTestsRequest } from "../models/UpdateFlakyTestsRequest";
import { UpdateFlakyTestsResponse } from "../models/UpdateFlakyTestsResponse";
export declare class TestOptimizationApiRequestFactory extends BaseAPIRequestFactory {
    deleteTestOptimizationServiceSettings(body: TestOptimizationDeleteServiceSettingsRequest, _options?: Configuration): Promise<RequestContext>;
    getFlakyTestsManagementPolicies(body: TestOptimizationFlakyTestsManagementPoliciesGetRequest, _options?: Configuration): Promise<RequestContext>;
    getTestOptimizationServiceSettings(body: TestOptimizationGetServiceSettingsRequest, _options?: Configuration): Promise<RequestContext>;
    searchFlakyTests(body?: FlakyTestsSearchRequest, _options?: Configuration): Promise<RequestContext>;
    updateFlakyTests(body: UpdateFlakyTestsRequest, _options?: Configuration): Promise<RequestContext>;
    updateFlakyTestsManagementPolicies(body: TestOptimizationFlakyTestsManagementPoliciesUpdateRequest, _options?: Configuration): Promise<RequestContext>;
    updateTestOptimizationServiceSettings(body: TestOptimizationUpdateServiceSettingsRequest, _options?: Configuration): Promise<RequestContext>;
}
export declare class TestOptimizationApiResponseProcessor {
    /**
     * 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 deleteTestOptimizationServiceSettings
     * @throws ApiException if the response code was not in [200, 299]
     */
    deleteTestOptimizationServiceSettings(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 getFlakyTestsManagementPolicies
     * @throws ApiException if the response code was not in [200, 299]
     */
    getFlakyTestsManagementPolicies(response: ResponseContext): Promise<TestOptimizationFlakyTestsManagementPoliciesResponse>;
    /**
     * 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 getTestOptimizationServiceSettings
     * @throws ApiException if the response code was not in [200, 299]
     */
    getTestOptimizationServiceSettings(response: ResponseContext): Promise<TestOptimizationServiceSettingsResponse>;
    /**
     * 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 searchFlakyTests
     * @throws ApiException if the response code was not in [200, 299]
     */
    searchFlakyTests(response: ResponseContext): Promise<FlakyTestsSearchResponse>;
    /**
     * 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 updateFlakyTests
     * @throws ApiException if the response code was not in [200, 299]
     */
    updateFlakyTests(response: ResponseContext): Promise<UpdateFlakyTestsResponse>;
    /**
     * 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 updateFlakyTestsManagementPolicies
     * @throws ApiException if the response code was not in [200, 299]
     */
    updateFlakyTestsManagementPolicies(response: ResponseContext): Promise<TestOptimizationFlakyTestsManagementPoliciesResponse>;
    /**
     * 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 updateTestOptimizationServiceSettings
     * @throws ApiException if the response code was not in [200, 299]
     */
    updateTestOptimizationServiceSettings(response: ResponseContext): Promise<TestOptimizationServiceSettingsResponse>;
}
export interface TestOptimizationApiDeleteTestOptimizationServiceSettingsRequest {
    /**
     * @type TestOptimizationDeleteServiceSettingsRequest
     */
    body: TestOptimizationDeleteServiceSettingsRequest;
}
export interface TestOptimizationApiGetFlakyTestsManagementPoliciesRequest {
    /**
     * @type TestOptimizationFlakyTestsManagementPoliciesGetRequest
     */
    body: TestOptimizationFlakyTestsManagementPoliciesGetRequest;
}
export interface TestOptimizationApiGetTestOptimizationServiceSettingsRequest {
    /**
     * @type TestOptimizationGetServiceSettingsRequest
     */
    body: TestOptimizationGetServiceSettingsRequest;
}
export interface TestOptimizationApiSearchFlakyTestsRequest {
    /**
     * @type FlakyTestsSearchRequest
     */
    body?: FlakyTestsSearchRequest;
}
export interface TestOptimizationApiUpdateFlakyTestsRequest {
    /**
     * @type UpdateFlakyTestsRequest
     */
    body: UpdateFlakyTestsRequest;
}
export interface TestOptimizationApiUpdateFlakyTestsManagementPoliciesRequest {
    /**
     * @type TestOptimizationFlakyTestsManagementPoliciesUpdateRequest
     */
    body: TestOptimizationFlakyTestsManagementPoliciesUpdateRequest;
}
export interface TestOptimizationApiUpdateTestOptimizationServiceSettingsRequest {
    /**
     * @type TestOptimizationUpdateServiceSettingsRequest
     */
    body: TestOptimizationUpdateServiceSettingsRequest;
}
export declare class TestOptimizationApi {
    private requestFactory;
    private responseProcessor;
    private configuration;
    constructor(configuration: Configuration, requestFactory?: TestOptimizationApiRequestFactory, responseProcessor?: TestOptimizationApiResponseProcessor);
    /**
     * Delete Test Optimization settings for a specific service identified by repository, service name, and environment.
     * @param param The request object
     */
    deleteTestOptimizationServiceSettings(param: TestOptimizationApiDeleteTestOptimizationServiceSettingsRequest, options?: Configuration): Promise<void>;
    /**
     * Retrieve Flaky Tests Management repository-level policies for the given repository.
     * @param param The request object
     */
    getFlakyTestsManagementPolicies(param: TestOptimizationApiGetFlakyTestsManagementPoliciesRequest, options?: Configuration): Promise<TestOptimizationFlakyTestsManagementPoliciesResponse>;
    /**
     * Retrieve Test Optimization settings for a specific service identified by repository, service name, and environment.
     * @param param The request object
     */
    getTestOptimizationServiceSettings(param: TestOptimizationApiGetTestOptimizationServiceSettingsRequest, options?: Configuration): Promise<TestOptimizationServiceSettingsResponse>;
    /**
     * List endpoint returning flaky tests from Flaky Test Management. Results are paginated.
     *
     * The response includes comprehensive test information including:
     * - Test identification and metadata (module, suite, name)
     * - Flaky state and categorization
     * - First and last flake occurrences (timestamp, branch, commit SHA)
     * - Test execution statistics from the last 7 days (failure rate)
     * - Pipeline impact metrics (failed pipelines count, total lost time)
     * - Complete status change history (optional, ordered from most recent to oldest)
     *
     * Set `include_history` to `true` in the request to receive the status change history for each test.
     * History is disabled by default for better performance.
     *
     * Results support filtering by various facets including service, environment, repository, branch, and test state.
     * @param param The request object
     */
    searchFlakyTests(param?: TestOptimizationApiSearchFlakyTestsRequest, options?: Configuration): Promise<FlakyTestsSearchResponse>;
    /**
     * Provide a paginated version of searchFlakyTests returning a generator with all the items.
     */
    searchFlakyTestsWithPagination(param?: TestOptimizationApiSearchFlakyTestsRequest, options?: Configuration): AsyncGenerator<FlakyTest>;
    /**
     * Update the state of multiple flaky tests in Flaky Test Management.
     * @param param The request object
     */
    updateFlakyTests(param: TestOptimizationApiUpdateFlakyTestsRequest, options?: Configuration): Promise<UpdateFlakyTestsResponse>;
    /**
     * Partially update Flaky Tests Management repository-level policies for the given repository.
     * Only provided policy blocks are updated; omitted blocks are left unchanged.
     * @param param The request object
     */
    updateFlakyTestsManagementPolicies(param: TestOptimizationApiUpdateFlakyTestsManagementPoliciesRequest, options?: Configuration): Promise<TestOptimizationFlakyTestsManagementPoliciesResponse>;
    /**
     * Partially update Test Optimization settings for a specific service identified by repository, service name, and environment.
     * Only provided fields are updated; setting a field to `null` is a no-op.
     * To reset a setting to inherit from the repository level, use the corresponding `<setting>_inherit` field.
     * The `pr_comments_enabled` field is ignored as it cannot be overridden at the service level.
     * @param param The request object
     */
    updateTestOptimizationServiceSettings(param: TestOptimizationApiUpdateTestOptimizationServiceSettingsRequest, options?: Configuration): Promise<TestOptimizationServiceSettingsResponse>;
}
