import { type Agent } from "./_shims/index.js";
import * as Core from "./core.js";
import * as Errors from "./error.js";
import * as Uploads from "./uploads.js";
import * as API from "./resources/index.js";
import { Agent as AgentAPIAgent, AgentCreateParams, AgentGetVersionsResponse, AgentListParams, AgentListResponse, AgentResponse, AgentRetrieveParams, AgentUpdateParams } from "./resources/agent.js";
import { BatchCall, BatchCallCreateBatchCallParams, BatchCallResponse } from "./resources/batch-call.js";
import { Call, CallCreatePhoneCallParams, CallCreateWebCallParams, CallListParams, CallListResponse, CallRegisterPhoneCallParams, CallResponse, CallUpdateParams, PhoneCallResponse, WebCallResponse } from "./resources/call.js";
import { Chat, ChatCreateChatCompletionParams, ChatCreateChatCompletionResponse, ChatCreateParams, ChatListResponse, ChatResponse } from "./resources/chat.js";
import { Concurrency, ConcurrencyRetrieveResponse } from "./resources/concurrency.js";
import { ConversationFlow, ConversationFlowCreateParams, ConversationFlowListParams, ConversationFlowListResponse, ConversationFlowResponse, ConversationFlowRetrieveParams, ConversationFlowUpdateParams } from "./resources/conversation-flow.js";
import { KnowledgeBase, KnowledgeBaseAddSourcesParams, KnowledgeBaseCreateParams, KnowledgeBaseListResponse, KnowledgeBaseResponse } from "./resources/knowledge-base.js";
import { Llm, LlmCreateParams, LlmListParams, LlmListResponse, LlmResponse, LlmRetrieveParams, LlmUpdateParams } from "./resources/llm.js";
import { PhoneNumber, PhoneNumberCreateParams, PhoneNumberImportParams, PhoneNumberListResponse, PhoneNumberResponse, PhoneNumberUpdateParams } from "./resources/phone-number.js";
import { Voice, VoiceListResponse, VoiceResponse } from "./resources/voice.js";
export interface ClientOptions {
    apiKey: string;
    /**
     * Override the default base URL for the API, e.g., "https://api.example.com/v2/"
     *
     * Defaults to process.env['RETELL_BASE_URL'].
     */
    baseURL?: string | null | undefined;
    /**
     * The maximum amount of time (in milliseconds) that the client should wait for a response
     * from the server before timing out a single request.
     *
     * Note that request timeouts are retried by default, so in a worst-case scenario you may wait
     * much longer than this timeout before the promise succeeds or fails.
     *
     * @unit milliseconds
     */
    timeout?: number | undefined;
    /**
     * An HTTP agent used to manage HTTP(S) connections.
     *
     * If not provided, an agent will be constructed by default in the Node.js environment,
     * otherwise no agent is used.
     */
    httpAgent?: Agent | undefined;
    /**
     * Specify a custom `fetch` function implementation.
     *
     * If not provided, we use `node-fetch` on Node.js and otherwise expect that `fetch` is
     * defined globally.
     */
    fetch?: Core.Fetch | undefined;
    /**
     * The maximum number of times that the client will retry a request in case of a
     * temporary failure, like a network error or a 5XX error from the server.
     *
     * @default 2
     */
    maxRetries?: number | undefined;
    /**
     * Default headers to include with every request to the API.
     *
     * These can be removed in individual requests by explicitly setting the
     * header to `undefined` or `null` in request options.
     */
    defaultHeaders?: Core.Headers | undefined;
    /**
     * Default query parameters to include with every request to the API.
     *
     * These can be removed in individual requests by explicitly setting the
     * param to `undefined` in request options.
     */
    defaultQuery?: Core.DefaultQuery | undefined;
}
/**
 * API Client for interfacing with the Retell API.
 */
export declare class Retell extends Core.APIClient {
    #private;
    apiKey: string;
    private _options;
    /**
     * API Client for interfacing with the Retell API.
     *
     * @param {string} opts.apiKey
     * @param {string} [opts.baseURL=process.env['RETELL_BASE_URL'] ?? https://api.retellai.com] - Override the default base URL for the API.
     * @param {number} [opts.timeout=1 minute] - The maximum amount of time (in milliseconds) the client will wait for a response before timing out.
     * @param {number} [opts.httpAgent] - An HTTP agent used to manage HTTP(s) connections.
     * @param {Core.Fetch} [opts.fetch] - Specify a custom `fetch` function implementation.
     * @param {number} [opts.maxRetries=2] - The maximum number of times the client will retry a request.
     * @param {Core.Headers} opts.defaultHeaders - Default headers to include with every request to the API.
     * @param {Core.DefaultQuery} opts.defaultQuery - Default query parameters to include with every request to the API.
     */
    constructor({ baseURL, apiKey, ...opts }: ClientOptions);
    call: API.Call;
    chat: API.Chat;
    phoneNumber: API.PhoneNumber;
    agent: API.Agent;
    llm: API.Llm;
    conversationFlow: API.ConversationFlow;
    knowledgeBase: API.KnowledgeBase;
    voice: API.Voice;
    concurrency: API.Concurrency;
    batchCall: API.BatchCall;
    protected defaultQuery(): Core.DefaultQuery | undefined;
    protected defaultHeaders(opts: Core.FinalRequestOptions): Core.Headers;
    protected authHeaders(opts: Core.FinalRequestOptions): Core.Headers;
    static Retell: typeof Retell;
    static DEFAULT_TIMEOUT: number;
    static RetellError: typeof Errors.RetellError;
    static APIError: typeof Errors.APIError;
    static APIConnectionError: typeof Errors.APIConnectionError;
    static APIConnectionTimeoutError: typeof Errors.APIConnectionTimeoutError;
    static APIUserAbortError: typeof Errors.APIUserAbortError;
    static NotFoundError: typeof Errors.NotFoundError;
    static ConflictError: typeof Errors.ConflictError;
    static RateLimitError: typeof Errors.RateLimitError;
    static BadRequestError: typeof Errors.BadRequestError;
    static AuthenticationError: typeof Errors.AuthenticationError;
    static InternalServerError: typeof Errors.InternalServerError;
    static PermissionDeniedError: typeof Errors.PermissionDeniedError;
    static UnprocessableEntityError: typeof Errors.UnprocessableEntityError;
    static toFile: typeof Uploads.toFile;
    static fileFromPath: typeof Uploads.fileFromPath;
    static verify: (body: string, apiKey: string, signature: string) => boolean;
    static sign: (body: string, apiKey: string) => string;
}
export declare namespace Retell {
    export type RequestOptions = Core.RequestOptions;
    export { Call as Call, type CallResponse as CallResponse, type PhoneCallResponse as PhoneCallResponse, type WebCallResponse as WebCallResponse, type CallListResponse as CallListResponse, type CallUpdateParams as CallUpdateParams, type CallListParams as CallListParams, type CallCreatePhoneCallParams as CallCreatePhoneCallParams, type CallCreateWebCallParams as CallCreateWebCallParams, type CallRegisterPhoneCallParams as CallRegisterPhoneCallParams, };
    export { Chat as Chat, type ChatResponse as ChatResponse, type ChatListResponse as ChatListResponse, type ChatCreateChatCompletionResponse as ChatCreateChatCompletionResponse, type ChatCreateParams as ChatCreateParams, type ChatCreateChatCompletionParams as ChatCreateChatCompletionParams, };
    export { PhoneNumber as PhoneNumber, type PhoneNumberResponse as PhoneNumberResponse, type PhoneNumberListResponse as PhoneNumberListResponse, type PhoneNumberCreateParams as PhoneNumberCreateParams, type PhoneNumberUpdateParams as PhoneNumberUpdateParams, type PhoneNumberImportParams as PhoneNumberImportParams, };
    export { AgentAPIAgent as Agent, type AgentResponse as AgentResponse, type AgentListResponse as AgentListResponse, type AgentGetVersionsResponse as AgentGetVersionsResponse, type AgentCreateParams as AgentCreateParams, type AgentRetrieveParams as AgentRetrieveParams, type AgentUpdateParams as AgentUpdateParams, type AgentListParams as AgentListParams, };
    export { Llm as Llm, type LlmResponse as LlmResponse, type LlmListResponse as LlmListResponse, type LlmCreateParams as LlmCreateParams, type LlmRetrieveParams as LlmRetrieveParams, type LlmUpdateParams as LlmUpdateParams, type LlmListParams as LlmListParams, };
    export { ConversationFlow as ConversationFlow, type ConversationFlowResponse as ConversationFlowResponse, type ConversationFlowListResponse as ConversationFlowListResponse, type ConversationFlowCreateParams as ConversationFlowCreateParams, type ConversationFlowRetrieveParams as ConversationFlowRetrieveParams, type ConversationFlowUpdateParams as ConversationFlowUpdateParams, type ConversationFlowListParams as ConversationFlowListParams, };
    export { KnowledgeBase as KnowledgeBase, type KnowledgeBaseResponse as KnowledgeBaseResponse, type KnowledgeBaseListResponse as KnowledgeBaseListResponse, type KnowledgeBaseCreateParams as KnowledgeBaseCreateParams, type KnowledgeBaseAddSourcesParams as KnowledgeBaseAddSourcesParams, };
    export { Voice as Voice, type VoiceResponse as VoiceResponse, type VoiceListResponse as VoiceListResponse };
    export { Concurrency as Concurrency, type ConcurrencyRetrieveResponse as ConcurrencyRetrieveResponse };
    export { BatchCall as BatchCall, type BatchCallResponse as BatchCallResponse, type BatchCallCreateBatchCallParams as BatchCallCreateBatchCallParams, };
}
export { toFile, fileFromPath } from "./uploads.js";
export { RetellError, APIError, APIConnectionError, APIConnectionTimeoutError, APIUserAbortError, NotFoundError, ConflictError, RateLimitError, BadRequestError, AuthenticationError, InternalServerError, PermissionDeniedError, UnprocessableEntityError, } from "./error.js";
export default Retell;
//# sourceMappingURL=index.d.ts.map