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 { OAuth2WellKnownSitesResponse } from "../models/OAuth2WellKnownSitesResponse";
import { OAuthClientRegistrationRequest } from "../models/OAuthClientRegistrationRequest";
import { OAuthClientRegistrationResponse } from "../models/OAuthClientRegistrationResponse";
import { OAuthScopesRestrictionResponse } from "../models/OAuthScopesRestrictionResponse";
import { UpsertOAuthScopesRestrictionRequest } from "../models/UpsertOAuthScopesRestrictionRequest";
export declare class OAuth2ClientPublicApiRequestFactory extends BaseAPIRequestFactory {
    deleteScopesRestriction(clientUuid: string, _options?: Configuration): Promise<RequestContext>;
    getOAuth2WellKnownSites(_options?: Configuration): Promise<RequestContext>;
    getScopesRestriction(clientUuid: string, _options?: Configuration): Promise<RequestContext>;
    registerOAuthClient(body: OAuthClientRegistrationRequest, _options?: Configuration): Promise<RequestContext>;
    upsertScopesRestriction(clientUuid: string, body: UpsertOAuthScopesRestrictionRequest, _options?: Configuration): Promise<RequestContext>;
}
export declare class OAuth2ClientPublicApiResponseProcessor {
    /**
     * 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 deleteScopesRestriction
     * @throws ApiException if the response code was not in [200, 299]
     */
    deleteScopesRestriction(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 getOAuth2WellKnownSites
     * @throws ApiException if the response code was not in [200, 299]
     */
    getOAuth2WellKnownSites(response: ResponseContext): Promise<OAuth2WellKnownSitesResponse>;
    /**
     * 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 getScopesRestriction
     * @throws ApiException if the response code was not in [200, 299]
     */
    getScopesRestriction(response: ResponseContext): Promise<OAuthScopesRestrictionResponse>;
    /**
     * 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 registerOAuthClient
     * @throws ApiException if the response code was not in [200, 299]
     */
    registerOAuthClient(response: ResponseContext): Promise<OAuthClientRegistrationResponse>;
    /**
     * 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 upsertScopesRestriction
     * @throws ApiException if the response code was not in [200, 299]
     */
    upsertScopesRestriction(response: ResponseContext): Promise<OAuthScopesRestrictionResponse>;
}
export interface OAuth2ClientPublicApiDeleteScopesRestrictionRequest {
    /**
     * UUID of the OAuth2 client.
     * @type string
     */
    clientUuid: string;
}
export interface OAuth2ClientPublicApiGetScopesRestrictionRequest {
    /**
     * UUID of the OAuth2 client.
     * @type string
     */
    clientUuid: string;
}
export interface OAuth2ClientPublicApiRegisterOAuthClientRequest {
    /**
     * @type OAuthClientRegistrationRequest
     */
    body: OAuthClientRegistrationRequest;
}
export interface OAuth2ClientPublicApiUpsertScopesRestrictionRequest {
    /**
     * UUID of the OAuth2 client.
     * @type string
     */
    clientUuid: string;
    /**
     * @type UpsertOAuthScopesRestrictionRequest
     */
    body: UpsertOAuthScopesRestrictionRequest;
}
export declare class OAuth2ClientPublicApi {
    private requestFactory;
    private responseProcessor;
    private configuration;
    constructor(configuration: Configuration, requestFactory?: OAuth2ClientPublicApiRequestFactory, responseProcessor?: OAuth2ClientPublicApiResponseProcessor);
    /**
     * Delete the scopes restriction configured for the OAuth2 client.
     * @param param The request object
     */
    deleteScopesRestriction(param: OAuth2ClientPublicApiDeleteScopesRestrictionRequest, options?: Configuration): Promise<void>;
    /**
     * Retrieve the list of public OAuth2 sites available for the current environment. This endpoint is used for OAuth2 discovery and returns sites where users can authenticate.
     * @param param The request object
     */
    getOAuth2WellKnownSites(options?: Configuration): Promise<OAuth2WellKnownSitesResponse>;
    /**
     * Get the scopes restriction configured for the OAuth2 client.
     * @param param The request object
     */
    getScopesRestriction(param: OAuth2ClientPublicApiGetScopesRestrictionRequest, options?: Configuration): Promise<OAuthScopesRestrictionResponse>;
    /**
     * Register an OAuth2 client using the Dynamic Client Registration protocol defined in RFC 7591.
     * @param param The request object
     */
    registerOAuthClient(param: OAuth2ClientPublicApiRegisterOAuthClientRequest, options?: Configuration): Promise<OAuthClientRegistrationResponse>;
    /**
     * Create or update the scopes restriction configured for the OAuth2 client.
     * @param param The request object
     */
    upsertScopesRestriction(param: OAuth2ClientPublicApiUpsertScopesRestrictionRequest, options?: Configuration): Promise<OAuthScopesRestrictionResponse>;
}
