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 { RumRateLimitConfigResponse } from "../models/RumRateLimitConfigResponse";
import { RumRateLimitConfigUpdateRequest } from "../models/RumRateLimitConfigUpdateRequest";
import { RumRateLimitScopeType } from "../models/RumRateLimitScopeType";
export declare class RumRateLimitApiRequestFactory extends BaseAPIRequestFactory {
    deleteRumRateLimitConfig(scopeType: RumRateLimitScopeType, scopeId: string, _options?: Configuration): Promise<RequestContext>;
    getRumRateLimitConfig(scopeType: RumRateLimitScopeType, scopeId: string, _options?: Configuration): Promise<RequestContext>;
    updateRumRateLimitConfig(scopeType: RumRateLimitScopeType, scopeId: string, body: RumRateLimitConfigUpdateRequest, _options?: Configuration): Promise<RequestContext>;
}
export declare class RumRateLimitApiResponseProcessor {
    /**
     * 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 deleteRumRateLimitConfig
     * @throws ApiException if the response code was not in [200, 299]
     */
    deleteRumRateLimitConfig(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 getRumRateLimitConfig
     * @throws ApiException if the response code was not in [200, 299]
     */
    getRumRateLimitConfig(response: ResponseContext): Promise<RumRateLimitConfigResponse>;
    /**
     * 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 updateRumRateLimitConfig
     * @throws ApiException if the response code was not in [200, 299]
     */
    updateRumRateLimitConfig(response: ResponseContext): Promise<RumRateLimitConfigResponse>;
}
export interface RumRateLimitApiDeleteRumRateLimitConfigRequest {
    /**
     * The type of scope the rate limit configuration applies to.
     * @type RumRateLimitScopeType
     */
    scopeType: RumRateLimitScopeType;
    /**
     * The identifier of the scope the rate limit configuration applies to.
     * For the `application` scope, this is the RUM application ID.
     * @type string
     */
    scopeId: string;
}
export interface RumRateLimitApiGetRumRateLimitConfigRequest {
    /**
     * The type of scope the rate limit configuration applies to.
     * @type RumRateLimitScopeType
     */
    scopeType: RumRateLimitScopeType;
    /**
     * The identifier of the scope the rate limit configuration applies to.
     * For the `application` scope, this is the RUM application ID.
     * @type string
     */
    scopeId: string;
}
export interface RumRateLimitApiUpdateRumRateLimitConfigRequest {
    /**
     * The type of scope the rate limit configuration applies to.
     * @type RumRateLimitScopeType
     */
    scopeType: RumRateLimitScopeType;
    /**
     * The identifier of the scope the rate limit configuration applies to.
     * For the `application` scope, this is the RUM application ID.
     * @type string
     */
    scopeId: string;
    /**
     * The definition of the RUM rate limit configuration to create or update.
     * @type RumRateLimitConfigUpdateRequest
     */
    body: RumRateLimitConfigUpdateRequest;
}
export declare class RumRateLimitApi {
    private requestFactory;
    private responseProcessor;
    private configuration;
    constructor(configuration: Configuration, requestFactory?: RumRateLimitApiRequestFactory, responseProcessor?: RumRateLimitApiResponseProcessor);
    /**
     * Delete the RUM rate limit configuration for a given scope.
     * @param param The request object
     */
    deleteRumRateLimitConfig(param: RumRateLimitApiDeleteRumRateLimitConfigRequest, options?: Configuration): Promise<void>;
    /**
     * Get the RUM rate limit configuration for a given scope.
     * @param param The request object
     */
    getRumRateLimitConfig(param: RumRateLimitApiGetRumRateLimitConfigRequest, options?: Configuration): Promise<RumRateLimitConfigResponse>;
    /**
     * Create or update the RUM rate limit configuration for a given scope.
     * Returns the rate limit configuration object when the request is successful.
     * @param param The request object
     */
    updateRumRateLimitConfig(param: RumRateLimitApiUpdateRumRateLimitConfigRequest, options?: Configuration): Promise<RumRateLimitConfigResponse>;
}
