import type { BaseClientOptions, BaseRequestOptions } from "../../../../BaseClient";
import { type NormalizedClientOptions } from "../../../../BaseClient";
import * as core from "../../../../core";
import * as ElevenLabs from "../../../index";
import { IvcClient } from "../resources/ivc/client/Client";
import { PvcClient } from "../resources/pvc/client/Client";
import { SamplesClient } from "../resources/samples/client/Client";
import { SettingsClient } from "../resources/settings/client/Client";
export declare namespace VoicesClient {
    type Options = BaseClientOptions;
    interface RequestOptions extends BaseRequestOptions {
    }
}
/**
 * Access to voices created either by you or ElevenLabs.
 */
export declare class VoicesClient {
    protected readonly _options: NormalizedClientOptions<VoicesClient.Options>;
    protected _settings: SettingsClient | undefined;
    protected _ivc: IvcClient | undefined;
    protected _pvc: PvcClient | undefined;
    protected _samples: SamplesClient | undefined;
    constructor(options?: VoicesClient.Options);
    get settings(): SettingsClient;
    get ivc(): IvcClient;
    get pvc(): PvcClient;
    get samples(): SamplesClient;
    /**
     * Returns a list of all available voices for a user.
     *
     * @param {ElevenLabs.VoicesGetAllRequest} request
     * @param {VoicesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link ElevenLabs.UnprocessableEntityError}
     *
     * @example
     *     await client.voices.getAll({
     *         showLegacy: true
     *     })
     */
    getAll(request?: ElevenLabs.VoicesGetAllRequest, requestOptions?: VoicesClient.RequestOptions): core.HttpResponsePromise<ElevenLabs.GetVoicesResponse>;
    private __getAll;
    /**
     * Gets a list of all available voices for a user with search, filtering and pagination.
     *
     * @param {ElevenLabs.VoicesSearchRequest} request
     * @param {VoicesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link ElevenLabs.UnprocessableEntityError}
     *
     * @example
     *     await client.voices.search({
     *         nextPageToken: "next_page_token",
     *         pageSize: 1,
     *         search: "search",
     *         sort: "sort",
     *         sortDirection: "sort_direction",
     *         voiceType: "voice_type",
     *         category: "category",
     *         fineTuningState: "fine_tuning_state",
     *         collectionId: "collection_id",
     *         includeTotalCount: true
     *     })
     */
    search(request?: ElevenLabs.VoicesSearchRequest, requestOptions?: VoicesClient.RequestOptions): core.HttpResponsePromise<ElevenLabs.GetVoicesV2Response>;
    private __search;
    /**
     * Returns metadata about a specific voice.
     *
     * @param {string} voice_id - ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.
     * @param {ElevenLabs.VoicesGetRequest} request
     * @param {VoicesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link ElevenLabs.UnprocessableEntityError}
     *
     * @example
     *     await client.voices.get("21m00Tcm4TlvDq8ikWAM", {
     *         withSettings: true
     *     })
     */
    get(voice_id: string, request?: ElevenLabs.VoicesGetRequest, requestOptions?: VoicesClient.RequestOptions): core.HttpResponsePromise<ElevenLabs.Voice>;
    private __get;
    /**
     * Deletes a voice by its ID.
     *
     * @param {string} voice_id - ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.
     * @param {VoicesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link ElevenLabs.UnprocessableEntityError}
     *
     * @example
     *     await client.voices.delete("21m00Tcm4TlvDq8ikWAM")
     */
    delete(voice_id: string, requestOptions?: VoicesClient.RequestOptions): core.HttpResponsePromise<ElevenLabs.DeleteVoiceResponseModel>;
    private __delete;
    /**
     * Edit a voice created by you.
     *
     * @param {string} voice_id
     * @param {ElevenLabs.BodyEditVoiceV1VoicesVoiceIdEditPost} request
     * @param {VoicesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link ElevenLabs.UnprocessableEntityError}
     *
     * @example
     *     import { createReadStream } from "fs";
     *     await client.voices.update("21m00Tcm4TlvDq8ikWAM", {
     *         name: "name"
     *     })
     */
    update(voice_id: string, request: ElevenLabs.BodyEditVoiceV1VoicesVoiceIdEditPost, requestOptions?: VoicesClient.RequestOptions): core.HttpResponsePromise<ElevenLabs.EditVoiceResponseModel>;
    private __update;
    /**
     * Add a shared voice to your collection of Voices
     *
     * @param {string} public_user_id - Public user ID used to publicly identify ElevenLabs users.
     * @param {string} voice_id - ID of the voice to be used. You can use the [Get voices](/docs/api-reference/voices/search) endpoint list all the available voices.
     * @param {ElevenLabs.BodyAddSharedVoiceV1VoicesAddPublicUserIdVoiceIdPost} request
     * @param {VoicesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link ElevenLabs.UnprocessableEntityError}
     *
     * @example
     *     await client.voices.share("63e06b7e7cafdc46be4d2e0b3f045940231ae058d508589653d74d1265a574ca", "21m00Tcm4TlvDq8ikWAM", {
     *         newName: "John Smith"
     *     })
     */
    share(public_user_id: string, voice_id: string, request: ElevenLabs.BodyAddSharedVoiceV1VoicesAddPublicUserIdVoiceIdPost, requestOptions?: VoicesClient.RequestOptions): core.HttpResponsePromise<ElevenLabs.AddVoiceResponseModel>;
    private __share;
    /**
     * Retrieves a list of shared voices.
     *
     * @param {ElevenLabs.VoicesGetSharedRequest} request
     * @param {VoicesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link ElevenLabs.UnprocessableEntityError}
     *
     * @example
     *     await client.voices.getShared({
     *         pageSize: 1,
     *         category: "professional",
     *         gender: "gender",
     *         age: "age",
     *         accent: "accent",
     *         language: "language",
     *         locale: "locale",
     *         search: "search",
     *         featured: true,
     *         minNoticePeriodDays: 1,
     *         includeCustomRates: true,
     *         includeLiveModerated: true,
     *         readerAppEnabled: true,
     *         ownerId: "owner_id",
     *         sort: "sort",
     *         page: 1
     *     })
     */
    getShared(request?: ElevenLabs.VoicesGetSharedRequest, requestOptions?: VoicesClient.RequestOptions): core.HttpResponsePromise<ElevenLabs.GetLibraryVoicesResponse>;
    private __getShared;
    /**
     * Returns a list of shared voices similar to the provided audio sample. If neither similarity_threshold nor top_k is provided, we will apply default values.
     *
     * @param {ElevenLabs.BodyGetSimilarLibraryVoicesV1SimilarVoicesPost} request
     * @param {VoicesClient.RequestOptions} requestOptions - Request-specific configuration.
     *
     * @throws {@link ElevenLabs.UnprocessableEntityError}
     *
     * @example
     *     import { createReadStream } from "fs";
     *     await client.voices.findSimilarVoices({})
     */
    findSimilarVoices(request: ElevenLabs.BodyGetSimilarLibraryVoicesV1SimilarVoicesPost, requestOptions?: VoicesClient.RequestOptions): core.HttpResponsePromise<ElevenLabs.GetLibraryVoicesResponse>;
    private __findSimilarVoices;
}
