import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient.js";
import { type NormalizedClientOptionsWithAuth } from "../../../../BaseClient.js";
import * as core from "../../../../core/index.js";
import * as Management from "../../../index.js";
import { OrganizationsClient } from "../resources/organizations/client/Client.js";
export declare namespace ClientGrantsClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class ClientGrantsClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<ClientGrantsClient.Options>;
    protected _organizations: OrganizationsClient | undefined;
    constructor(options: ClientGrantsClient.Options);
    get organizations(): OrganizationsClient;
    /**
     * Retrieve a list of <a href="https://auth0.com/docs/get-started/applications/application-access-to-apis-client-grants">client grants</a>, including the scopes associated with the application/API pair.
     *
     * @param {Management.ListClientGrantsRequestParameters} request
     * @param {ClientGrantsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Management.UnauthorizedError}
     * @throws {@link Management.ForbiddenError}
     * @throws {@link Management.TooManyRequestsError}
     *
     * @example
     *     await client.clientGrants.list({
     *         from: "from",
     *         take: 1,
     *         audience: "audience",
     *         client_id: "client_id",
     *         allow_any_organization: true,
     *         subject_type: "client",
     *         default_for: "third_party_clients"
     *     })
     */
    list(request?: Management.ListClientGrantsRequestParameters, requestOptions?: ClientGrantsClient.RequestOptions): Promise<core.Page<Management.ClientGrantResponseContent, Management.ListClientGrantPaginatedResponseContent>>;
    /**
     * Create a client grant for a machine-to-machine login flow. To learn more, read <a href="https://www.auth0.com/docs/get-started/authentication-and-authorization-flow/client-credentials-flow">Client Credential Flow</a>.
     *
     * @param {Management.CreateClientGrantRequestContent} request
     * @param {ClientGrantsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Management.BadRequestError}
     * @throws {@link Management.UnauthorizedError}
     * @throws {@link Management.ForbiddenError}
     * @throws {@link Management.NotFoundError}
     * @throws {@link Management.ConflictError}
     * @throws {@link Management.TooManyRequestsError}
     *
     * @example
     *     await client.clientGrants.create({
     *         audience: "audience"
     *     })
     */
    create(request: Management.CreateClientGrantRequestContent, requestOptions?: ClientGrantsClient.RequestOptions): core.HttpResponsePromise<Management.CreateClientGrantResponseContent>;
    private __create;
    /**
     * Retrieve a single <a href="https://auth0.com/docs/get-started/applications/application-access-to-apis-client-grants">client grant</a>, including the
     * scopes associated with the application/API pair.
     *
     * @param {string} id - The ID of the client grant to retrieve.
     * @param {ClientGrantsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Management.UnauthorizedError}
     * @throws {@link Management.ForbiddenError}
     * @throws {@link Management.NotFoundError}
     * @throws {@link Management.TooManyRequestsError}
     *
     * @example
     *     await client.clientGrants.get("id")
     */
    get(id: string, requestOptions?: ClientGrantsClient.RequestOptions): core.HttpResponsePromise<Management.GetClientGrantResponseContent>;
    private __get;
    /**
     * Delete the <a href="https://www.auth0.com/docs/get-started/authentication-and-authorization-flow/client-credentials-flow">Client Credential Flow</a> from your machine-to-machine application.
     *
     * @param {string} id - ID of the client grant to delete.
     * @param {ClientGrantsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Management.BadRequestError}
     * @throws {@link Management.UnauthorizedError}
     * @throws {@link Management.ForbiddenError}
     * @throws {@link Management.TooManyRequestsError}
     *
     * @example
     *     await client.clientGrants.delete("id")
     */
    delete(id: string, requestOptions?: ClientGrantsClient.RequestOptions): core.HttpResponsePromise<void>;
    private __delete;
    /**
     * Update a client grant.
     *
     * @param {string} id - ID of the client grant to update.
     * @param {Management.UpdateClientGrantRequestContent} request
     * @param {ClientGrantsClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Management.BadRequestError}
     * @throws {@link Management.UnauthorizedError}
     * @throws {@link Management.ForbiddenError}
     * @throws {@link Management.NotFoundError}
     * @throws {@link Management.TooManyRequestsError}
     *
     * @example
     *     await client.clientGrants.update("id")
     */
    update(id: string, request?: Management.UpdateClientGrantRequestContent, requestOptions?: ClientGrantsClient.RequestOptions): core.HttpResponsePromise<Management.UpdateClientGrantResponseContent>;
    private __update;
}
