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 { CreateDeploymentGateParams } from "../models/CreateDeploymentGateParams";
import { CreateDeploymentRuleParams } from "../models/CreateDeploymentRuleParams";
import { DeploymentGateResponse } from "../models/DeploymentGateResponse";
import { DeploymentGateRulesResponse } from "../models/DeploymentGateRulesResponse";
import { DeploymentGatesEvaluationRequest } from "../models/DeploymentGatesEvaluationRequest";
import { DeploymentGatesEvaluationResponse } from "../models/DeploymentGatesEvaluationResponse";
import { DeploymentGatesEvaluationResultResponse } from "../models/DeploymentGatesEvaluationResultResponse";
import { DeploymentGatesListResponse } from "../models/DeploymentGatesListResponse";
import { DeploymentRuleResponse } from "../models/DeploymentRuleResponse";
import { UpdateDeploymentGateParams } from "../models/UpdateDeploymentGateParams";
import { UpdateDeploymentRuleParams } from "../models/UpdateDeploymentRuleParams";
export declare class DeploymentGatesApiRequestFactory extends BaseAPIRequestFactory {
    createDeploymentGate(body: CreateDeploymentGateParams, _options?: Configuration): Promise<RequestContext>;
    createDeploymentRule(gateId: string, body: CreateDeploymentRuleParams, _options?: Configuration): Promise<RequestContext>;
    deleteDeploymentGate(id: string, _options?: Configuration): Promise<RequestContext>;
    deleteDeploymentRule(gateId: string, id: string, _options?: Configuration): Promise<RequestContext>;
    getDeploymentGate(id: string, _options?: Configuration): Promise<RequestContext>;
    getDeploymentGateRules(gateId: string, _options?: Configuration): Promise<RequestContext>;
    getDeploymentGatesEvaluationResult(id: string, _options?: Configuration): Promise<RequestContext>;
    getDeploymentRule(gateId: string, id: string, _options?: Configuration): Promise<RequestContext>;
    listDeploymentGates(pageCursor?: string, pageSize?: number, _options?: Configuration): Promise<RequestContext>;
    triggerDeploymentGatesEvaluation(body: DeploymentGatesEvaluationRequest, _options?: Configuration): Promise<RequestContext>;
    updateDeploymentGate(id: string, body: UpdateDeploymentGateParams, _options?: Configuration): Promise<RequestContext>;
    updateDeploymentRule(gateId: string, id: string, body: UpdateDeploymentRuleParams, _options?: Configuration): Promise<RequestContext>;
}
export declare class DeploymentGatesApiResponseProcessor {
    /**
     * 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 createDeploymentGate
     * @throws ApiException if the response code was not in [200, 299]
     */
    createDeploymentGate(response: ResponseContext): Promise<DeploymentGateResponse>;
    /**
     * 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 createDeploymentRule
     * @throws ApiException if the response code was not in [200, 299]
     */
    createDeploymentRule(response: ResponseContext): Promise<DeploymentRuleResponse>;
    /**
     * 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 deleteDeploymentGate
     * @throws ApiException if the response code was not in [200, 299]
     */
    deleteDeploymentGate(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 deleteDeploymentRule
     * @throws ApiException if the response code was not in [200, 299]
     */
    deleteDeploymentRule(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 getDeploymentGate
     * @throws ApiException if the response code was not in [200, 299]
     */
    getDeploymentGate(response: ResponseContext): Promise<DeploymentGateResponse>;
    /**
     * 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 getDeploymentGateRules
     * @throws ApiException if the response code was not in [200, 299]
     */
    getDeploymentGateRules(response: ResponseContext): Promise<DeploymentGateRulesResponse>;
    /**
     * 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 getDeploymentGatesEvaluationResult
     * @throws ApiException if the response code was not in [200, 299]
     */
    getDeploymentGatesEvaluationResult(response: ResponseContext): Promise<DeploymentGatesEvaluationResultResponse>;
    /**
     * 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 getDeploymentRule
     * @throws ApiException if the response code was not in [200, 299]
     */
    getDeploymentRule(response: ResponseContext): Promise<DeploymentRuleResponse>;
    /**
     * 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 listDeploymentGates
     * @throws ApiException if the response code was not in [200, 299]
     */
    listDeploymentGates(response: ResponseContext): Promise<DeploymentGatesListResponse>;
    /**
     * 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 triggerDeploymentGatesEvaluation
     * @throws ApiException if the response code was not in [200, 299]
     */
    triggerDeploymentGatesEvaluation(response: ResponseContext): Promise<DeploymentGatesEvaluationResponse>;
    /**
     * 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 updateDeploymentGate
     * @throws ApiException if the response code was not in [200, 299]
     */
    updateDeploymentGate(response: ResponseContext): Promise<DeploymentGateResponse>;
    /**
     * 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 updateDeploymentRule
     * @throws ApiException if the response code was not in [200, 299]
     */
    updateDeploymentRule(response: ResponseContext): Promise<DeploymentRuleResponse>;
}
export interface DeploymentGatesApiCreateDeploymentGateRequest {
    /**
     * @type CreateDeploymentGateParams
     */
    body: CreateDeploymentGateParams;
}
export interface DeploymentGatesApiCreateDeploymentRuleRequest {
    /**
     * The ID of the deployment gate.
     * @type string
     */
    gateId: string;
    /**
     * @type CreateDeploymentRuleParams
     */
    body: CreateDeploymentRuleParams;
}
export interface DeploymentGatesApiDeleteDeploymentGateRequest {
    /**
     * The ID of the deployment gate.
     * @type string
     */
    id: string;
}
export interface DeploymentGatesApiDeleteDeploymentRuleRequest {
    /**
     * The ID of the deployment gate.
     * @type string
     */
    gateId: string;
    /**
     * The ID of the deployment rule.
     * @type string
     */
    id: string;
}
export interface DeploymentGatesApiGetDeploymentGateRequest {
    /**
     * The ID of the deployment gate.
     * @type string
     */
    id: string;
}
export interface DeploymentGatesApiGetDeploymentGateRulesRequest {
    /**
     * The ID of the deployment gate.
     * @type string
     */
    gateId: string;
}
export interface DeploymentGatesApiGetDeploymentGatesEvaluationResultRequest {
    /**
     * The evaluation ID returned by the trigger endpoint.
     * @type string
     */
    id: string;
}
export interface DeploymentGatesApiGetDeploymentRuleRequest {
    /**
     * The ID of the deployment gate.
     * @type string
     */
    gateId: string;
    /**
     * The ID of the deployment rule.
     * @type string
     */
    id: string;
}
export interface DeploymentGatesApiListDeploymentGatesRequest {
    /**
     * Cursor for pagination. Use the `meta.page.next_cursor` value from the previous response.
     * @type string
     */
    pageCursor?: string;
    /**
     * Number of results per page. Defaults to 50. Must be between 1 and 1000.
     * @type number
     */
    pageSize?: number;
}
export interface DeploymentGatesApiTriggerDeploymentGatesEvaluationRequest {
    /**
     * @type DeploymentGatesEvaluationRequest
     */
    body: DeploymentGatesEvaluationRequest;
}
export interface DeploymentGatesApiUpdateDeploymentGateRequest {
    /**
     * The ID of the deployment gate.
     * @type string
     */
    id: string;
    /**
     * @type UpdateDeploymentGateParams
     */
    body: UpdateDeploymentGateParams;
}
export interface DeploymentGatesApiUpdateDeploymentRuleRequest {
    /**
     * The ID of the deployment gate.
     * @type string
     */
    gateId: string;
    /**
     * The ID of the deployment rule.
     * @type string
     */
    id: string;
    /**
     * @type UpdateDeploymentRuleParams
     */
    body: UpdateDeploymentRuleParams;
}
export declare class DeploymentGatesApi {
    private requestFactory;
    private responseProcessor;
    private configuration;
    constructor(configuration: Configuration, requestFactory?: DeploymentGatesApiRequestFactory, responseProcessor?: DeploymentGatesApiResponseProcessor);
    /**
     * Endpoint to create a deployment gate.
     * @param param The request object
     */
    createDeploymentGate(param: DeploymentGatesApiCreateDeploymentGateRequest, options?: Configuration): Promise<DeploymentGateResponse>;
    /**
     * Endpoint to create a deployment rule. A gate for the rule must already exist.
     * @param param The request object
     */
    createDeploymentRule(param: DeploymentGatesApiCreateDeploymentRuleRequest, options?: Configuration): Promise<DeploymentRuleResponse>;
    /**
     * Endpoint to delete a deployment gate. Rules associated with the gate are also deleted.
     * @param param The request object
     */
    deleteDeploymentGate(param: DeploymentGatesApiDeleteDeploymentGateRequest, options?: Configuration): Promise<void>;
    /**
     * Endpoint to delete a deployment rule.
     * @param param The request object
     */
    deleteDeploymentRule(param: DeploymentGatesApiDeleteDeploymentRuleRequest, options?: Configuration): Promise<void>;
    /**
     * Endpoint to get a deployment gate.
     * @param param The request object
     */
    getDeploymentGate(param: DeploymentGatesApiGetDeploymentGateRequest, options?: Configuration): Promise<DeploymentGateResponse>;
    /**
     * Endpoint to get rules for a deployment gate.
     * @param param The request object
     */
    getDeploymentGateRules(param: DeploymentGatesApiGetDeploymentGateRulesRequest, options?: Configuration): Promise<DeploymentGateRulesResponse>;
    /**
     * Retrieves the result of a deployment gate evaluation by its evaluation ID.
     * If the evaluation is still in progress, `data.attributes.gate_status` will be `in_progress`;
     * continue polling until it returns `pass` or `fail`.
     * Polling every 10-20 seconds is recommended.
     * The endpoint may return a 404 if called too soon after triggering; retry after a few seconds.
     * @param param The request object
     */
    getDeploymentGatesEvaluationResult(param: DeploymentGatesApiGetDeploymentGatesEvaluationResultRequest, options?: Configuration): Promise<DeploymentGatesEvaluationResultResponse>;
    /**
     * Endpoint to get a deployment rule.
     * @param param The request object
     */
    getDeploymentRule(param: DeploymentGatesApiGetDeploymentRuleRequest, options?: Configuration): Promise<DeploymentRuleResponse>;
    /**
     * Returns a paginated list of all deployment gates for the organization.
     * Use `page[cursor]` and `page[size]` query parameters to paginate through results.
     * @param param The request object
     */
    listDeploymentGates(param?: DeploymentGatesApiListDeploymentGatesRequest, options?: Configuration): Promise<DeploymentGatesListResponse>;
    /**
     * Triggers an asynchronous deployment gate evaluation for the given service and environment.
     * Returns an evaluation ID that can be used to poll for the result via the
     * `GET /api/v2/deployments/gates/evaluation/{id}` endpoint.
     *
     * When the `configuration` attribute is provided, rules are evaluated inline from that configuration
     * and no pre-configured gate is required. When `configuration` is omitted, rules are resolved from the
     * gate pre-configured for the given service and environment through the Datadog UI, API, or Terraform.
     * @param param The request object
     */
    triggerDeploymentGatesEvaluation(param: DeploymentGatesApiTriggerDeploymentGatesEvaluationRequest, options?: Configuration): Promise<DeploymentGatesEvaluationResponse>;
    /**
     * Endpoint to update a deployment gate.
     * @param param The request object
     */
    updateDeploymentGate(param: DeploymentGatesApiUpdateDeploymentGateRequest, options?: Configuration): Promise<DeploymentGateResponse>;
    /**
     * Endpoint to update a deployment rule.
     * @param param The request object
     */
    updateDeploymentRule(param: DeploymentGatesApiUpdateDeploymentRuleRequest, options?: Configuration): Promise<DeploymentRuleResponse>;
}
