import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient.js";
import { type NormalizedClientOptionsWithAuth } from "../../../../BaseClient.js";
import * as core from "../../../../core/index.js";
import * as Phonic from "../../../index.js";
export declare namespace ExtractionSchemasClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
export declare class ExtractionSchemasClient {
    protected readonly _options: NormalizedClientOptionsWithAuth<ExtractionSchemasClient.Options>;
    constructor(options?: ExtractionSchemasClient.Options);
    /**
     * Returns all extraction schemas in a project.
     *
     * @param {Phonic.ExtractionSchemasListRequest} request
     * @param {ExtractionSchemasClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Phonic.NotFoundError}
     *
     * @example
     *     await client.extractionSchemas.list({
     *         project: "main"
     *     })
     */
    list(request?: Phonic.ExtractionSchemasListRequest, requestOptions?: ExtractionSchemasClient.RequestOptions): core.HttpResponsePromise<Phonic.ExtractionSchemasListResponse>;
    private __list;
    /**
     * Creates a new extraction schema in a project.
     *
     * @param {Phonic.CreateExtractionSchemaRequest} request
     * @param {ExtractionSchemasClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Phonic.BadRequestError}
     * @throws {@link Phonic.NotFoundError}
     * @throws {@link Phonic.ConflictError}
     *
     * @example
     *     await client.extractionSchemas.create({
     *         project: "main",
     *         name: "Appointment details",
     *         prompt: "Dates should be in `9 Apr 2025` format. Prices should be in $150.00 format.",
     *         fields: [{
     *                 name: "Date",
     *                 type: "string",
     *                 description: "The date of the appointment"
     *             }, {
     *                 name: "Copay",
     *                 type: "string",
     *                 description: "Amount of money the patient pays for the appointment"
     *             }, {
     *                 name: "Confirmed as booked",
     *                 type: "bool",
     *                 description: "Is the appointment confirmed as booked?"
     *             }]
     *     })
     */
    create(request: Phonic.CreateExtractionSchemaRequest, requestOptions?: ExtractionSchemasClient.RequestOptions): core.HttpResponsePromise<Phonic.ExtractionSchemasCreateResponse>;
    private __create;
    /**
     * Returns an extraction schema by name or ID.
     *
     * @param {string} nameOrId - The name or the ID of the extraction schema to get.
     * @param {Phonic.ExtractionSchemasGetRequest} request
     * @param {ExtractionSchemasClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Phonic.NotFoundError}
     *
     * @example
     *     await client.extractionSchemas.get("nameOrId", {
     *         project: "main"
     *     })
     */
    get(nameOrId: string, request?: Phonic.ExtractionSchemasGetRequest, requestOptions?: ExtractionSchemasClient.RequestOptions): core.HttpResponsePromise<Phonic.ExtractionSchemasGetResponse>;
    private __get;
    /**
     * Deletes an extraction schema by name or ID.
     *
     * @param {string} nameOrId - The name or the ID of the extraction schema to delete.
     * @param {Phonic.ExtractionSchemasDeleteRequest} request
     * @param {ExtractionSchemasClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Phonic.NotFoundError}
     *
     * @example
     *     await client.extractionSchemas.delete("nameOrId", {
     *         project: "main"
     *     })
     */
    delete(nameOrId: string, request?: Phonic.ExtractionSchemasDeleteRequest, requestOptions?: ExtractionSchemasClient.RequestOptions): core.HttpResponsePromise<Phonic.ExtractionSchemasDeleteResponse>;
    private __delete;
    /**
     * Updates an extraction schema by name or ID.
     *
     * @param {string} nameOrId - The name or the ID of the extraction schema to update.
     * @param {Phonic.UpdateExtractionSchemaRequest} request
     * @param {ExtractionSchemasClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link Phonic.BadRequestError}
     * @throws {@link Phonic.NotFoundError}
     * @throws {@link Phonic.ConflictError}
     *
     * @example
     *     await client.extractionSchemas.update("nameOrId", {
     *         project: "main",
     *         name: "Updated appointment details",
     *         prompt: "Updated extraction instructions. Dates should be in `9 Apr 2025` format.",
     *         fields: [{
     *                 name: "Date",
     *                 type: "string",
     *                 description: "The date of the appointment"
     *             }, {
     *                 name: "Time",
     *                 type: "string",
     *                 description: "The time of the appointment"
     *             }]
     *     })
     */
    update(nameOrId: string, request?: Phonic.UpdateExtractionSchemaRequest, requestOptions?: ExtractionSchemasClient.RequestOptions): core.HttpResponsePromise<Phonic.ExtractionSchemasUpdateResponse>;
    private __update;
}
