{"version":3,"sources":["jsdelivr-header.js","/npm/@vapi-ai/web@2.6.1/dist/api.js","/npm/@vapi-ai/web@2.6.1/dist/client.js","/npm/@vapi-ai/web@2.6.1/dist/daily-guards.js","/npm/@vapi-ai/web@2.6.1/dist/vapi.js"],"names":[],"mappings":"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","file":"/npm/@vapi-ai/web@2.6.1/dist/vapi.js/+esm","sourceRoot":"","sourcesContent":["/**\n * Bundled by jsDelivr using Rollup v4.62.2 and esbuild v0.28.1.\n * Original file: /npm/@vapi-ai/web@2.6.1/dist/vapi.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","\"use strict\";\n/* eslint-disable */\n/* tslint:disable */\n// @ts-nocheck\n/*\n * ---------------------------------------------------------------\n * ## THIS FILE WAS GENERATED VIA SWAGGER-TYPESCRIPT-API        ##\n * ##                                                           ##\n * ## AUTHOR: acacode                                           ##\n * ## SOURCE: https://github.com/acacode/swagger-typescript-api ##\n * ---------------------------------------------------------------\n */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Api = exports.HttpClient = exports.ContentType = void 0;\nvar ContentType;\n(function (ContentType) {\n    ContentType[\"Json\"] = \"application/json\";\n    ContentType[\"JsonApi\"] = \"application/vnd.api+json\";\n    ContentType[\"FormData\"] = \"multipart/form-data\";\n    ContentType[\"UrlEncoded\"] = \"application/x-www-form-urlencoded\";\n    ContentType[\"Text\"] = \"text/plain\";\n})(ContentType || (exports.ContentType = ContentType = {}));\nclass HttpClient {\n    baseUrl = \"https://api.vapi.ai\";\n    securityData = null;\n    securityWorker;\n    abortControllers = new Map();\n    customFetch = (...fetchParams) => fetch(...fetchParams);\n    baseApiParams = {\n        credentials: \"same-origin\",\n        headers: {},\n        redirect: \"follow\",\n        referrerPolicy: \"no-referrer\",\n    };\n    constructor(apiConfig = {}) {\n        Object.assign(this, apiConfig);\n    }\n    setSecurityData = (data) => {\n        this.securityData = data;\n    };\n    encodeQueryParam(key, value) {\n        const encodedKey = encodeURIComponent(key);\n        return `${encodedKey}=${encodeURIComponent(typeof value === \"number\" ? value : `${value}`)}`;\n    }\n    addQueryParam(query, key) {\n        return this.encodeQueryParam(key, query[key]);\n    }\n    addArrayQueryParam(query, key) {\n        const value = query[key];\n        return value.map((v) => this.encodeQueryParam(key, v)).join(\"&\");\n    }\n    toQueryString(rawQuery) {\n        const query = rawQuery || {};\n        const keys = Object.keys(query).filter((key) => \"undefined\" !== typeof query[key]);\n        return keys\n            .map((key) => Array.isArray(query[key])\n            ? this.addArrayQueryParam(query, key)\n            : this.addQueryParam(query, key))\n            .join(\"&\");\n    }\n    addQueryParams(rawQuery) {\n        const queryString = this.toQueryString(rawQuery);\n        return queryString ? `?${queryString}` : \"\";\n    }\n    contentFormatters = {\n        [ContentType.Json]: (input) => input !== null && (typeof input === \"object\" || typeof input === \"string\")\n            ? JSON.stringify(input)\n            : input,\n        [ContentType.JsonApi]: (input) => input !== null && (typeof input === \"object\" || typeof input === \"string\")\n            ? JSON.stringify(input)\n            : input,\n        [ContentType.Text]: (input) => input !== null && typeof input !== \"string\"\n            ? JSON.stringify(input)\n            : input,\n        [ContentType.FormData]: (input) => {\n            if (input instanceof FormData) {\n                return input;\n            }\n            return Object.keys(input || {}).reduce((formData, key) => {\n                const property = input[key];\n                formData.append(key, property instanceof Blob\n                    ? property\n                    : typeof property === \"object\" && property !== null\n                        ? JSON.stringify(property)\n                        : `${property}`);\n                return formData;\n            }, new FormData());\n        },\n        [ContentType.UrlEncoded]: (input) => this.toQueryString(input),\n    };\n    mergeRequestParams(params1, params2) {\n        return {\n            ...this.baseApiParams,\n            ...params1,\n            ...(params2 || {}),\n            headers: {\n                ...(this.baseApiParams.headers || {}),\n                ...(params1.headers || {}),\n                ...((params2 && params2.headers) || {}),\n            },\n        };\n    }\n    createAbortSignal = (cancelToken) => {\n        if (this.abortControllers.has(cancelToken)) {\n            const abortController = this.abortControllers.get(cancelToken);\n            if (abortController) {\n                return abortController.signal;\n            }\n            return void 0;\n        }\n        const abortController = new AbortController();\n        this.abortControllers.set(cancelToken, abortController);\n        return abortController.signal;\n    };\n    abortRequest = (cancelToken) => {\n        const abortController = this.abortControllers.get(cancelToken);\n        if (abortController) {\n            abortController.abort();\n            this.abortControllers.delete(cancelToken);\n        }\n    };\n    request = async ({ body, secure, path, type, query, format, baseUrl, cancelToken, ...params }) => {\n        const secureParams = ((typeof secure === \"boolean\" ? secure : this.baseApiParams.secure) &&\n            this.securityWorker &&\n            (await this.securityWorker(this.securityData))) ||\n            {};\n        const requestParams = this.mergeRequestParams(params, secureParams);\n        const queryString = query && this.toQueryString(query);\n        const payloadFormatter = this.contentFormatters[type || ContentType.Json];\n        const responseFormat = format || requestParams.format;\n        return this.customFetch(`${baseUrl || this.baseUrl || \"\"}${path}${queryString ? `?${queryString}` : \"\"}`, {\n            ...requestParams,\n            headers: {\n                ...(requestParams.headers || {}),\n                ...(type && type !== ContentType.FormData\n                    ? { \"Content-Type\": type }\n                    : {}),\n            },\n            signal: (cancelToken\n                ? this.createAbortSignal(cancelToken)\n                : requestParams.signal) || null,\n            body: typeof body === \"undefined\" || body === null\n                ? null\n                : payloadFormatter(body),\n        }).then(async (response) => {\n            const r = response;\n            r.data = null;\n            r.error = null;\n            const responseToParse = responseFormat ? response.clone() : response;\n            const data = !responseFormat\n                ? r\n                : await responseToParse[responseFormat]()\n                    .then((data) => {\n                    if (r.ok) {\n                        r.data = data;\n                    }\n                    else {\n                        r.error = data;\n                    }\n                    return r;\n                })\n                    .catch((e) => {\n                    r.error = e;\n                    return r;\n                });\n            if (cancelToken) {\n                this.abortControllers.delete(cancelToken);\n            }\n            if (!response.ok)\n                throw data;\n            return data;\n        });\n    };\n}\nexports.HttpClient = HttpClient;\n/**\n * @title Vapi API\n * @version 1.0\n * @baseUrl https://api.vapi.ai\n * @contact\n *\n * Voice AI for developers.\n */\nclass Api extends HttpClient {\n    assistant = {\n        /**\n         * No description\n         *\n         * @tags Assistants\n         * @name AssistantControllerCreate\n         * @summary Create Assistant\n         * @request POST:/assistant\n         * @secure\n         */\n        assistantControllerCreate: (data, params = {}) => this.request({\n            path: `/assistant`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Assistants\n         * @name AssistantControllerFindAll\n         * @summary List Assistants\n         * @request GET:/assistant\n         * @secure\n         */\n        assistantControllerFindAll: (query, params = {}) => this.request({\n            path: `/assistant`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Assistants\n         * @name AssistantControllerFindOne\n         * @summary Get Assistant\n         * @request GET:/assistant/{id}\n         * @secure\n         */\n        assistantControllerFindOne: (id, params = {}) => this.request({\n            path: `/assistant/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Assistants\n         * @name AssistantControllerUpdate\n         * @summary Update Assistant\n         * @request PATCH:/assistant/{id}\n         * @secure\n         */\n        assistantControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/assistant/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Assistants\n         * @name AssistantControllerReplace\n         * @summary Replace Assistant\n         * @request PUT:/assistant/{id}\n         * @secure\n         */\n        assistantControllerReplace: (id, data, params = {}) => this.request({\n            path: `/assistant/${id}`,\n            method: \"PUT\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Assistants\n         * @name AssistantControllerRemove\n         * @summary Delete Assistant\n         * @request DELETE:/assistant/{id}\n         * @secure\n         */\n        assistantControllerRemove: (id, params = {}) => this.request({\n            path: `/assistant/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Assistants\n         * @name AssistantControllerFindVersions\n         * @summary List Assistant Versions\n         * @request GET:/assistant/{id}/version\n         * @secure\n         */\n        assistantControllerFindVersions: (id, query, params = {}) => this.request({\n            path: `/assistant/${id}/version`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    v2 = {\n        /**\n         * No description\n         *\n         * @tags Assistants\n         * @name AssistantControllerFindAllPaginated\n         * @summary List Assistants with pagination\n         * @request GET:/v2/assistant\n         * @secure\n         */\n        assistantControllerFindAllPaginated: (query, params = {}) => this.request({\n            path: `/v2/assistant`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Calls\n         * @name CallControllerCallsExport\n         * @summary Export Calls to CSV\n         * @request GET:/v2/call/export\n         * @secure\n         */\n        callControllerCallsExport: (query, params = {}) => this.request({\n            path: `/v2/call/export`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Calls\n         * @name CallControllerFindAllPaginated\n         * @summary List Calls\n         * @request GET:/v2/call\n         * @secure\n         */\n        callControllerFindAllPaginated: (query, params = {}) => this.request({\n            path: `/v2/call`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Calls\n         * @name CallControllerFindAllMetadataPaginated\n         * @summary List Call Metadata\n         * @request GET:/v2/call/metadata\n         * @secure\n         */\n        callControllerFindAllMetadataPaginated: (query, params = {}) => this.request({\n            path: `/v2/call/metadata`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Phone Numbers\n         * @name PhoneNumberControllerFindAllPaginated\n         * @summary List Phone Numbers\n         * @request GET:/v2/phone-number\n         * @secure\n         */\n        phoneNumberControllerFindAllPaginated: (query, params = {}) => this.request({\n            path: `/v2/phone-number`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    squad = {\n        /**\n         * No description\n         *\n         * @tags Squads\n         * @name SquadControllerCreate\n         * @summary Create Squad\n         * @request POST:/squad\n         * @secure\n         */\n        squadControllerCreate: (data, params = {}) => this.request({\n            path: `/squad`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Squads\n         * @name SquadControllerFindAll\n         * @summary List Squads\n         * @request GET:/squad\n         * @secure\n         */\n        squadControllerFindAll: (query, params = {}) => this.request({\n            path: `/squad`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Squads\n         * @name SquadControllerFindOne\n         * @summary Get Squad\n         * @request GET:/squad/{id}\n         * @secure\n         */\n        squadControllerFindOne: (id, params = {}) => this.request({\n            path: `/squad/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Squads\n         * @name SquadControllerUpdate\n         * @summary Update Squad\n         * @request PATCH:/squad/{id}\n         * @secure\n         */\n        squadControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/squad/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Squads\n         * @name SquadControllerRemove\n         * @summary Delete Squad\n         * @request DELETE:/squad/{id}\n         * @secure\n         */\n        squadControllerRemove: (id, params = {}) => this.request({\n            path: `/squad/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    workflow = {\n        /**\n         * No description\n         *\n         * @tags Workflow\n         * @name WorkflowControllerFindAll\n         * @summary Get Workflows\n         * @request GET:/workflow\n         * @secure\n         */\n        workflowControllerFindAll: (params = {}) => this.request({\n            path: `/workflow`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Workflow\n         * @name WorkflowControllerCreate\n         * @summary Create Workflow\n         * @request POST:/workflow\n         * @secure\n         */\n        workflowControllerCreate: (data, params = {}) => this.request({\n            path: `/workflow`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Workflow\n         * @name WorkflowControllerFindOne\n         * @summary Get Workflow\n         * @request GET:/workflow/{id}\n         * @secure\n         */\n        workflowControllerFindOne: (id, params = {}) => this.request({\n            path: `/workflow/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Workflow\n         * @name WorkflowControllerDelete\n         * @summary Delete Workflow\n         * @request DELETE:/workflow/{id}\n         * @secure\n         */\n        workflowControllerDelete: (id, params = {}) => this.request({\n            path: `/workflow/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Workflow\n         * @name WorkflowControllerUpdate\n         * @summary Update Workflow\n         * @request PATCH:/workflow/{id}\n         * @secure\n         */\n        workflowControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/workflow/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    call = {\n        /**\n         * No description\n         *\n         * @tags Calls\n         * @name CallControllerCreate\n         * @summary Create Call\n         * @request POST:/call\n         * @secure\n         */\n        callControllerCreate: (data, params = {}) => this.request({\n            path: `/call`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Calls\n         * @name CallControllerFindAll\n         * @summary List Calls\n         * @request GET:/call\n         * @secure\n         */\n        callControllerFindAll: (query, params = {}) => this.request({\n            path: `/call`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Calls\n         * @name CallControllerFindOne\n         * @summary Get Call\n         * @request GET:/call/{id}\n         * @secure\n         */\n        callControllerFindOne: (id, params = {}) => this.request({\n            path: `/call/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Calls\n         * @name CallControllerUpdate\n         * @summary Update Call\n         * @request PATCH:/call/{id}\n         * @secure\n         */\n        callControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/call/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Calls\n         * @name CallControllerDeleteCallData\n         * @summary Delete Call Data\n         * @request DELETE:/call/{id}\n         * @secure\n         */\n        callControllerDeleteCallData: (id, data, params = {}) => this.request({\n            path: `/call/${id}`,\n            method: \"DELETE\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Calls\n         * @name CallControllerCreatePhoneCall\n         * @summary Create Phone Call\n         * @request POST:/call/phone\n         * @deprecated\n         * @secure\n         */\n        callControllerCreatePhoneCall: (data, params = {}) => this.request({\n            path: `/call/phone`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Calls\n         * @name CallControllerCreateWebCall\n         * @summary Create Web Call\n         * @request POST:/call/web\n         * @secure\n         */\n        callControllerCreateWebCall: (data, params = {}) => this.request({\n            path: `/call/web`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    chat = {\n        /**\n         * No description\n         *\n         * @tags Chats\n         * @name ChatControllerListChats\n         * @summary List Chats\n         * @request GET:/chat\n         * @secure\n         */\n        chatControllerListChats: (query, params = {}) => this.request({\n            path: `/chat`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * @description Creates a new chat with optional SMS delivery via transport field. Requires at least one of: assistantId/assistant, sessionId, or previousChatId. Note: sessionId and previousChatId are mutually exclusive. Transport field enables SMS delivery with two modes: (1) New conversation - provide transport.phoneNumberId and transport.customer to create a new session, (2) Existing conversation - provide sessionId to use existing session data. Cannot specify both sessionId and transport fields together. The transport.useLLMGeneratedMessageForOutbound flag controls whether input is processed by LLM (true, default) or forwarded directly as SMS (false).\n         *\n         * @tags Chats\n         * @name ChatControllerCreateChat\n         * @summary Create Chat\n         * @request POST:/chat\n         * @secure\n         */\n        chatControllerCreateChat: (data, params = {}) => this.request({\n            path: `/chat`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Chats\n         * @name ChatControllerGetChat\n         * @summary Get Chat\n         * @request GET:/chat/{id}\n         * @secure\n         */\n        chatControllerGetChat: (id, params = {}) => this.request({\n            path: `/chat/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Chats\n         * @name ChatControllerDeleteChat\n         * @summary Delete Chat\n         * @request DELETE:/chat/{id}\n         * @secure\n         */\n        chatControllerDeleteChat: (id, params = {}) => this.request({\n            path: `/chat/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Chats\n         * @name ChatControllerCreateOpenAiChat\n         * @summary Create Chat (OpenAI Compatible)\n         * @request POST:/chat/responses\n         * @secure\n         */\n        chatControllerCreateOpenAiChat: (data, params = {}) => this.request({\n            path: `/chat/responses`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Chats\n         * @name ChatControllerCreateWebChat\n         * @summary Create WebChat\n         * @request POST:/chat/web\n         * @secure\n         */\n        chatControllerCreateWebChat: (data, params = {}) => this.request({\n            path: `/chat/web`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Chats\n         * @name ChatControllerCreateOpenAiWebChat\n         * @summary Create WebChat (OpenAI Compatible)\n         * @request POST:/chat/web/responses\n         * @secure\n         */\n        chatControllerCreateOpenAiWebChat: (data, params = {}) => this.request({\n            path: `/chat/web/responses`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    campaign = {\n        /**\n         * No description\n         *\n         * @tags Campaigns\n         * @name CampaignControllerCreate\n         * @summary Create Campaign\n         * @request POST:/campaign\n         * @secure\n         */\n        campaignControllerCreate: (data, params = {}) => this.request({\n            path: `/campaign`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Campaigns\n         * @name CampaignControllerFindAll\n         * @summary List Campaigns\n         * @request GET:/campaign\n         * @secure\n         */\n        campaignControllerFindAll: (query, params = {}) => this.request({\n            path: `/campaign`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Campaigns\n         * @name CampaignControllerFindOne\n         * @summary Get Campaign\n         * @request GET:/campaign/{id}\n         * @secure\n         */\n        campaignControllerFindOne: (id, params = {}) => this.request({\n            path: `/campaign/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Campaigns\n         * @name CampaignControllerUpdate\n         * @summary Update Campaign\n         * @request PATCH:/campaign/{id}\n         * @secure\n         */\n        campaignControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/campaign/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Campaigns\n         * @name CampaignControllerRemove\n         * @summary Delete Campaign\n         * @request DELETE:/campaign/{id}\n         * @secure\n         */\n        campaignControllerRemove: (id, params = {}) => this.request({\n            path: `/campaign/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    session = {\n        /**\n         * No description\n         *\n         * @tags Sessions\n         * @name SessionControllerCreate\n         * @summary Create Session\n         * @request POST:/session\n         * @secure\n         */\n        sessionControllerCreate: (data, params = {}) => this.request({\n            path: `/session`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Sessions\n         * @name SessionControllerFindAllPaginated\n         * @summary List Sessions\n         * @request GET:/session\n         * @secure\n         */\n        sessionControllerFindAllPaginated: (query, params = {}) => this.request({\n            path: `/session`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Sessions\n         * @name SessionControllerFindOne\n         * @summary Get Session\n         * @request GET:/session/{id}\n         * @secure\n         */\n        sessionControllerFindOne: (id, params = {}) => this.request({\n            path: `/session/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Sessions\n         * @name SessionControllerUpdate\n         * @summary Update Session\n         * @request PATCH:/session/{id}\n         * @secure\n         */\n        sessionControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/session/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Sessions\n         * @name SessionControllerRemove\n         * @summary Delete Session\n         * @request DELETE:/session/{id}\n         * @secure\n         */\n        sessionControllerRemove: (id, params = {}) => this.request({\n            path: `/session/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    phoneNumber = {\n        /**\n         * @description Use POST /phone-number instead.\n         *\n         * @tags Phone Numbers\n         * @name PhoneNumberControllerImportTwilio\n         * @summary Import Twilio Number\n         * @request POST:/phone-number/import/twilio\n         * @deprecated\n         * @secure\n         */\n        phoneNumberControllerImportTwilio: (data, params = {}) => this.request({\n            path: `/phone-number/import/twilio`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * @description Use POST /phone-number instead.\n         *\n         * @tags Phone Numbers\n         * @name PhoneNumberControllerImportVonage\n         * @summary Import Vonage Number\n         * @request POST:/phone-number/import/vonage\n         * @deprecated\n         * @secure\n         */\n        phoneNumberControllerImportVonage: (data, params = {}) => this.request({\n            path: `/phone-number/import/vonage`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Phone Numbers\n         * @name PhoneNumberControllerCreate\n         * @summary Create Phone Number\n         * @request POST:/phone-number\n         * @secure\n         */\n        phoneNumberControllerCreate: (data, params = {}) => this.request({\n            path: `/phone-number`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Phone Numbers\n         * @name PhoneNumberControllerFindAll\n         * @summary List Phone Numbers\n         * @request GET:/phone-number\n         * @secure\n         */\n        phoneNumberControllerFindAll: (query, params = {}) => this.request({\n            path: `/phone-number`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Phone Numbers\n         * @name PhoneNumberControllerFindOne\n         * @summary Get Phone Number\n         * @request GET:/phone-number/{id}\n         * @secure\n         */\n        phoneNumberControllerFindOne: (id, params = {}) => this.request({\n            path: `/phone-number/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Phone Numbers\n         * @name PhoneNumberControllerUpdate\n         * @summary Update Phone Number\n         * @request PATCH:/phone-number/{id}\n         * @secure\n         */\n        phoneNumberControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/phone-number/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Phone Numbers\n         * @name PhoneNumberControllerRemove\n         * @summary Delete Phone Number\n         * @request DELETE:/phone-number/{id}\n         * @secure\n         */\n        phoneNumberControllerRemove: (id, params = {}) => this.request({\n            path: `/phone-number/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    tool = {\n        /**\n         * No description\n         *\n         * @tags Tools\n         * @name ToolControllerCreate\n         * @summary Create Tool\n         * @request POST:/tool\n         * @secure\n         */\n        toolControllerCreate: (data, params = {}) => this.request({\n            path: `/tool`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Tools\n         * @name ToolControllerFindAll\n         * @summary List Tools\n         * @request GET:/tool\n         * @secure\n         */\n        toolControllerFindAll: (query, params = {}) => this.request({\n            path: `/tool`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Tools\n         * @name ToolControllerFindOne\n         * @summary Get Tool\n         * @request GET:/tool/{id}\n         * @secure\n         */\n        toolControllerFindOne: (id, params = {}) => this.request({\n            path: `/tool/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Tools\n         * @name ToolControllerUpdate\n         * @summary Update Tool\n         * @request PATCH:/tool/{id}\n         * @secure\n         */\n        toolControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/tool/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Tools\n         * @name ToolControllerRemove\n         * @summary Delete Tool\n         * @request DELETE:/tool/{id}\n         * @secure\n         */\n        toolControllerRemove: (id, params = {}) => this.request({\n            path: `/tool/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    file = {\n        /**\n         * @description Use POST /file instead.\n         *\n         * @tags Files\n         * @name FileControllerCreateDeprecated\n         * @summary Upload File\n         * @request POST:/file/upload\n         * @deprecated\n         * @secure\n         */\n        fileControllerCreateDeprecated: (data, params = {}) => this.request({\n            path: `/file/upload`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.FormData,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Files\n         * @name FileControllerCreate\n         * @summary Upload File\n         * @request POST:/file\n         * @secure\n         */\n        fileControllerCreate: (data, params = {}) => this.request({\n            path: `/file`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.FormData,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Files\n         * @name FileControllerFindAll\n         * @summary List Files\n         * @request GET:/file\n         * @secure\n         */\n        fileControllerFindAll: (params = {}) => this.request({\n            path: `/file`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Files\n         * @name FileControllerFindOne\n         * @summary Get File\n         * @request GET:/file/{id}\n         * @secure\n         */\n        fileControllerFindOne: (id, params = {}) => this.request({\n            path: `/file/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Files\n         * @name FileControllerUpdate\n         * @summary Update File\n         * @request PATCH:/file/{id}\n         * @secure\n         */\n        fileControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/file/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Files\n         * @name FileControllerRemove\n         * @summary Delete File\n         * @request DELETE:/file/{id}\n         * @secure\n         */\n        fileControllerRemove: (id, params = {}) => this.request({\n            path: `/file/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    knowledgeBase = {\n        /**\n         * No description\n         *\n         * @tags Knowledge Base\n         * @name KnowledgeBaseControllerCreate\n         * @summary Create Knowledge Base\n         * @request POST:/knowledge-base\n         * @secure\n         */\n        knowledgeBaseControllerCreate: (data, params = {}) => this.request({\n            path: `/knowledge-base`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Knowledge Base\n         * @name KnowledgeBaseControllerFindAll\n         * @summary List Knowledge Bases\n         * @request GET:/knowledge-base\n         * @secure\n         */\n        knowledgeBaseControllerFindAll: (query, params = {}) => this.request({\n            path: `/knowledge-base`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Knowledge Base\n         * @name KnowledgeBaseControllerFindOne\n         * @summary Get Knowledge Base\n         * @request GET:/knowledge-base/{id}\n         * @secure\n         */\n        knowledgeBaseControllerFindOne: (id, params = {}) => this.request({\n            path: `/knowledge-base/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Knowledge Base\n         * @name KnowledgeBaseControllerUpdate\n         * @summary Update Knowledge Base\n         * @request PATCH:/knowledge-base/{id}\n         * @secure\n         */\n        knowledgeBaseControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/knowledge-base/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Knowledge Base\n         * @name KnowledgeBaseControllerRemove\n         * @summary Delete Knowledge Base\n         * @request DELETE:/knowledge-base/{id}\n         * @secure\n         */\n        knowledgeBaseControllerRemove: (id, params = {}) => this.request({\n            path: `/knowledge-base/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    structuredOutput = {\n        /**\n         * No description\n         *\n         * @tags Structured Outputs\n         * @name StructuredOutputControllerFindAll\n         * @summary List Structured Outputs\n         * @request GET:/structured-output\n         * @secure\n         */\n        structuredOutputControllerFindAll: (query, params = {}) => this.request({\n            path: `/structured-output`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Structured Outputs\n         * @name StructuredOutputControllerCreate\n         * @summary Create Structured Output\n         * @request POST:/structured-output\n         * @secure\n         */\n        structuredOutputControllerCreate: (data, params = {}) => this.request({\n            path: `/structured-output`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Structured Outputs\n         * @name StructuredOutputControllerFindOne\n         * @summary Get Structured Output\n         * @request GET:/structured-output/{id}\n         * @secure\n         */\n        structuredOutputControllerFindOne: (id, params = {}) => this.request({\n            path: `/structured-output/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Structured Outputs\n         * @name StructuredOutputControllerUpdate\n         * @summary Update Structured Output\n         * @request PATCH:/structured-output/{id}\n         * @secure\n         */\n        structuredOutputControllerUpdate: (id, query, data, params = {}) => this.request({\n            path: `/structured-output/${id}`,\n            method: \"PATCH\",\n            query: query,\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Structured Outputs\n         * @name StructuredOutputControllerRemove\n         * @summary Delete Structured Output\n         * @request DELETE:/structured-output/{id}\n         * @secure\n         */\n        structuredOutputControllerRemove: (id, params = {}) => this.request({\n            path: `/structured-output/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Structured Outputs\n         * @name StructuredOutputControllerRun\n         * @summary Run Structured Output\n         * @request POST:/structured-output/run\n         * @secure\n         */\n        structuredOutputControllerRun: (data, params = {}) => this.request({\n            path: `/structured-output/run`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    testSuite = {\n        /**\n         * No description\n         *\n         * @tags Test Suites\n         * @name TestSuiteControllerFindAllPaginated\n         * @summary List Test Suites\n         * @request GET:/test-suite\n         * @secure\n         */\n        testSuiteControllerFindAllPaginated: (query, params = {}) => this.request({\n            path: `/test-suite`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suites\n         * @name TestSuiteControllerCreate\n         * @summary Create Test Suite\n         * @request POST:/test-suite\n         * @secure\n         */\n        testSuiteControllerCreate: (data, params = {}) => this.request({\n            path: `/test-suite`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suites\n         * @name TestSuiteControllerFindOne\n         * @summary Get Test Suite\n         * @request GET:/test-suite/{id}\n         * @secure\n         */\n        testSuiteControllerFindOne: (id, params = {}) => this.request({\n            path: `/test-suite/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suites\n         * @name TestSuiteControllerUpdate\n         * @summary Update Test Suite\n         * @request PATCH:/test-suite/{id}\n         * @secure\n         */\n        testSuiteControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/test-suite/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suites\n         * @name TestSuiteControllerRemove\n         * @summary Delete Test Suite\n         * @request DELETE:/test-suite/{id}\n         * @secure\n         */\n        testSuiteControllerRemove: (id, params = {}) => this.request({\n            path: `/test-suite/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suite Tests\n         * @name TestSuiteTestControllerFindAllPaginated\n         * @summary List Tests\n         * @request GET:/test-suite/{testSuiteId}/test\n         * @secure\n         */\n        testSuiteTestControllerFindAllPaginated: (testSuiteId, query, params = {}) => this.request({\n            path: `/test-suite/${testSuiteId}/test`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suite Tests\n         * @name TestSuiteTestControllerCreate\n         * @summary Create Test\n         * @request POST:/test-suite/{testSuiteId}/test\n         * @secure\n         */\n        testSuiteTestControllerCreate: (testSuiteId, data, params = {}) => this.request({\n            path: `/test-suite/${testSuiteId}/test`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suite Tests\n         * @name TestSuiteTestControllerFindOne\n         * @summary Get Test\n         * @request GET:/test-suite/{testSuiteId}/test/{id}\n         * @secure\n         */\n        testSuiteTestControllerFindOne: (testSuiteId, id, params = {}) => this.request({\n            path: `/test-suite/${testSuiteId}/test/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suite Tests\n         * @name TestSuiteTestControllerUpdate\n         * @summary Update Test\n         * @request PATCH:/test-suite/{testSuiteId}/test/{id}\n         * @secure\n         */\n        testSuiteTestControllerUpdate: (testSuiteId, id, data, params = {}) => this.request({\n            path: `/test-suite/${testSuiteId}/test/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suite Tests\n         * @name TestSuiteTestControllerRemove\n         * @summary Delete Test\n         * @request DELETE:/test-suite/{testSuiteId}/test/{id}\n         * @secure\n         */\n        testSuiteTestControllerRemove: (testSuiteId, id, params = {}) => this.request({\n            path: `/test-suite/${testSuiteId}/test/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suite Runs\n         * @name TestSuiteRunControllerFindAllPaginated\n         * @summary List Test Suite Runs\n         * @request GET:/test-suite/{testSuiteId}/run\n         * @secure\n         */\n        testSuiteRunControllerFindAllPaginated: (testSuiteId, query, params = {}) => this.request({\n            path: `/test-suite/${testSuiteId}/run`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suite Runs\n         * @name TestSuiteRunControllerCreate\n         * @summary Create Test Suite Run\n         * @request POST:/test-suite/{testSuiteId}/run\n         * @secure\n         */\n        testSuiteRunControllerCreate: (testSuiteId, data, params = {}) => this.request({\n            path: `/test-suite/${testSuiteId}/run`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suite Runs\n         * @name TestSuiteRunControllerFindOne\n         * @summary Get Test Suite Run\n         * @request GET:/test-suite/{testSuiteId}/run/{id}\n         * @secure\n         */\n        testSuiteRunControllerFindOne: (testSuiteId, id, params = {}) => this.request({\n            path: `/test-suite/${testSuiteId}/run/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suite Runs\n         * @name TestSuiteRunControllerUpdate\n         * @summary Update Test Suite Run\n         * @request PATCH:/test-suite/{testSuiteId}/run/{id}\n         * @secure\n         */\n        testSuiteRunControllerUpdate: (testSuiteId, id, data, params = {}) => this.request({\n            path: `/test-suite/${testSuiteId}/run/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Test Suite Runs\n         * @name TestSuiteRunControllerRemove\n         * @summary Delete Test Suite Run\n         * @request DELETE:/test-suite/{testSuiteId}/run/{id}\n         * @secure\n         */\n        testSuiteRunControllerRemove: (testSuiteId, id, params = {}) => this.request({\n            path: `/test-suite/${testSuiteId}/run/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    reporting = {\n        /**\n         * No description\n         *\n         * @tags Insight\n         * @name InsightControllerCreate\n         * @summary Create Insight\n         * @request POST:/reporting/insight\n         * @secure\n         */\n        insightControllerCreate: (data, params = {}) => this.request({\n            path: `/reporting/insight`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Insight\n         * @name InsightControllerFindAll\n         * @summary Get Insights\n         * @request GET:/reporting/insight\n         * @secure\n         */\n        insightControllerFindAll: (query, params = {}) => this.request({\n            path: `/reporting/insight`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Insight\n         * @name InsightControllerUpdate\n         * @summary Update Insight\n         * @request PATCH:/reporting/insight/{id}\n         * @secure\n         */\n        insightControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/reporting/insight/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Insight\n         * @name InsightControllerFindOne\n         * @summary Get Insight\n         * @request GET:/reporting/insight/{id}\n         * @secure\n         */\n        insightControllerFindOne: (id, params = {}) => this.request({\n            path: `/reporting/insight/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Insight\n         * @name InsightControllerRemove\n         * @summary Delete Insight\n         * @request DELETE:/reporting/insight/{id}\n         * @secure\n         */\n        insightControllerRemove: (id, params = {}) => this.request({\n            path: `/reporting/insight/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Insight\n         * @name InsightControllerRun\n         * @summary Run Insight\n         * @request POST:/reporting/insight/{id}/run\n         * @secure\n         */\n        insightControllerRun: (id, data, params = {}) => this.request({\n            path: `/reporting/insight/${id}/run`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Insight\n         * @name InsightControllerPreview\n         * @summary Preview Insight\n         * @request POST:/reporting/insight/preview\n         * @secure\n         */\n        insightControllerPreview: (data, params = {}) => this.request({\n            path: `/reporting/insight/preview`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    eval = {\n        /**\n         * No description\n         *\n         * @tags Eval\n         * @name EvalControllerCreate\n         * @summary Create Eval\n         * @request POST:/eval\n         * @secure\n         */\n        evalControllerCreate: (data, params = {}) => this.request({\n            path: `/eval`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Eval\n         * @name EvalControllerGetPaginated\n         * @summary List Evals\n         * @request GET:/eval\n         * @secure\n         */\n        evalControllerGetPaginated: (query, params = {}) => this.request({\n            path: `/eval`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Eval\n         * @name EvalControllerUpdate\n         * @summary Update Eval\n         * @request PATCH:/eval/{id}\n         * @secure\n         */\n        evalControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/eval/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Eval\n         * @name EvalControllerRemove\n         * @summary Delete Eval\n         * @request DELETE:/eval/{id}\n         * @secure\n         */\n        evalControllerRemove: (id, params = {}) => this.request({\n            path: `/eval/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Eval\n         * @name EvalControllerGet\n         * @summary Get Eval\n         * @request GET:/eval/{id}\n         * @secure\n         */\n        evalControllerGet: (id, params = {}) => this.request({\n            path: `/eval/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Eval\n         * @name EvalControllerRemoveRun\n         * @summary Delete Eval Run\n         * @request DELETE:/eval/run/{id}\n         * @secure\n         */\n        evalControllerRemoveRun: (id, params = {}) => this.request({\n            path: `/eval/run/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Eval\n         * @name EvalControllerGetRun\n         * @summary Get Eval Run\n         * @request GET:/eval/run/{id}\n         * @secure\n         */\n        evalControllerGetRun: (id, params = {}) => this.request({\n            path: `/eval/run/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Eval\n         * @name EvalControllerRun\n         * @summary Create Eval Run\n         * @request POST:/eval/run\n         * @secure\n         */\n        evalControllerRun: (data, params = {}) => this.request({\n            path: `/eval/run`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Eval\n         * @name EvalControllerGetRunsPaginated\n         * @summary List Eval Runs\n         * @request GET:/eval/run\n         * @secure\n         */\n        evalControllerGetRunsPaginated: (query, params = {}) => this.request({\n            path: `/eval/run`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    observability = {\n        /**\n         * No description\n         *\n         * @tags Observability/Scorecard\n         * @name ScorecardControllerGet\n         * @summary Get Scorecard\n         * @request GET:/observability/scorecard/{id}\n         * @secure\n         */\n        scorecardControllerGet: (id, params = {}) => this.request({\n            path: `/observability/scorecard/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Observability/Scorecard\n         * @name ScorecardControllerUpdate\n         * @summary Update Scorecard\n         * @request PATCH:/observability/scorecard/{id}\n         * @secure\n         */\n        scorecardControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/observability/scorecard/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Observability/Scorecard\n         * @name ScorecardControllerRemove\n         * @summary Delete Scorecard\n         * @request DELETE:/observability/scorecard/{id}\n         * @secure\n         */\n        scorecardControllerRemove: (id, params = {}) => this.request({\n            path: `/observability/scorecard/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Observability/Scorecard\n         * @name ScorecardControllerGetPaginated\n         * @summary List Scorecards\n         * @request GET:/observability/scorecard\n         * @secure\n         */\n        scorecardControllerGetPaginated: (query, params = {}) => this.request({\n            path: `/observability/scorecard`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Observability/Scorecard\n         * @name ScorecardControllerCreate\n         * @summary Create Scorecard\n         * @request POST:/observability/scorecard\n         * @secure\n         */\n        scorecardControllerCreate: (data, params = {}) => this.request({\n            path: `/observability/scorecard`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    org = {\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerCreate\n         * @summary Create Org\n         * @request POST:/org\n         * @secure\n         */\n        orgControllerCreate: (data, params = {}) => this.request({\n            path: `/org`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerFindAll\n         * @summary List Orgs\n         * @request GET:/org\n         * @secure\n         */\n        orgControllerFindAll: (params = {}) => this.request({\n            path: `/org`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerFeatureFlagEnabled\n         * @summary Check if Feature Flag is enabled\n         * @request GET:/org/feature-flag\n         * @secure\n         */\n        orgControllerFeatureFlagEnabled: (query, params = {}) => this.request({\n            path: `/org/feature-flag`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerFindOne\n         * @summary Get Org\n         * @request GET:/org/{id}\n         * @secure\n         */\n        orgControllerFindOne: (id, params = {}) => this.request({\n            path: `/org/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerUpdate\n         * @summary Update Org\n         * @request PATCH:/org/{id}\n         * @secure\n         */\n        orgControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/org/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerDeleteOrg\n         * @summary Delete Org\n         * @request DELETE:/org/{id}\n         * @secure\n         */\n        orgControllerDeleteOrg: (id, params = {}) => this.request({\n            path: `/org/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerFindAllUsers\n         * @summary List Users\n         * @request GET:/org/{id}/user\n         * @secure\n         */\n        orgControllerFindAllUsers: (id, params = {}) => this.request({\n            path: `/org/${id}/user`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerOrgLeave\n         * @summary Leave Org\n         * @request DELETE:/org/{id}/leave\n         * @secure\n         */\n        orgControllerOrgLeave: (id, params = {}) => this.request({\n            path: `/org/${id}/leave`,\n            method: \"DELETE\",\n            secure: true,\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerOrgRemoveUser\n         * @summary Remove Org Member\n         * @request DELETE:/org/{id}/member/{memberId}/leave\n         * @secure\n         */\n        orgControllerOrgRemoveUser: (id, memberId, params = {}) => this.request({\n            path: `/org/${id}/member/${memberId}/leave`,\n            method: \"DELETE\",\n            secure: true,\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerUsersInvite\n         * @summary Invite User\n         * @request POST:/org/{id}/invite\n         * @secure\n         */\n        orgControllerUsersInvite: (id, data, params = {}) => this.request({\n            path: `/org/${id}/invite`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerUserUpdate\n         * @summary Update User Role\n         * @request PATCH:/org/{id}/role\n         * @secure\n         */\n        orgControllerUserUpdate: (id, data, params = {}) => this.request({\n            path: `/org/${id}/role`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Orgs\n         * @name OrgControllerOrgToken\n         * @summary Generate User Org JWT\n         * @request GET:/org/{id}/auth\n         * @secure\n         */\n        orgControllerOrgToken: (id, params = {}) => this.request({\n            path: `/org/${id}/auth`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    token = {\n        /**\n         * No description\n         *\n         * @tags Tokens\n         * @name TokenControllerCreate\n         * @summary Create Token\n         * @request POST:/token\n         * @secure\n         */\n        tokenControllerCreate: (data, params = {}) => this.request({\n            path: `/token`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Tokens\n         * @name TokenControllerFindAll\n         * @summary List Tokens\n         * @request GET:/token\n         * @secure\n         */\n        tokenControllerFindAll: (query, params = {}) => this.request({\n            path: `/token`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Tokens\n         * @name TokenControllerFindOne\n         * @summary Get Token\n         * @request GET:/token/{id}\n         * @secure\n         */\n        tokenControllerFindOne: (id, params = {}) => this.request({\n            path: `/token/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Tokens\n         * @name TokenControllerUpdate\n         * @summary Update Token\n         * @request PATCH:/token/{id}\n         * @secure\n         */\n        tokenControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/token/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Tokens\n         * @name TokenControllerRemove\n         * @summary Delete Token\n         * @request DELETE:/token/{id}\n         * @secure\n         */\n        tokenControllerRemove: (id, params = {}) => this.request({\n            path: `/token/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    credential = {\n        /**\n         * No description\n         *\n         * @tags Credentials\n         * @name CredentialControllerCreate\n         * @summary Create Credential\n         * @request POST:/credential\n         * @secure\n         */\n        credentialControllerCreate: (data, params = {}) => this.request({\n            path: `/credential`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Credentials\n         * @name CredentialControllerFindAll\n         * @summary List Credentials\n         * @request GET:/credential\n         * @secure\n         */\n        credentialControllerFindAll: (query, params = {}) => this.request({\n            path: `/credential`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Credentials\n         * @name CredentialControllerFindOne\n         * @summary Get Credential\n         * @request GET:/credential/{id}\n         * @secure\n         */\n        credentialControllerFindOne: (id, params = {}) => this.request({\n            path: `/credential/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Credentials\n         * @name CredentialControllerUpdate\n         * @summary Update Credential\n         * @request PATCH:/credential/{id}\n         * @secure\n         */\n        credentialControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/credential/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Credentials\n         * @name CredentialControllerRemove\n         * @summary Delete Credential\n         * @request DELETE:/credential/{id}\n         * @secure\n         */\n        credentialControllerRemove: (id, params = {}) => this.request({\n            path: `/credential/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    template = {\n        /**\n         * No description\n         *\n         * @tags Templates\n         * @name TemplateControllerCreate\n         * @summary Create Template\n         * @request POST:/template\n         * @secure\n         */\n        templateControllerCreate: (data, params = {}) => this.request({\n            path: `/template`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Templates\n         * @name TemplateControllerFindAll\n         * @summary List Templates\n         * @request GET:/template\n         * @secure\n         */\n        templateControllerFindAll: (query, params = {}) => this.request({\n            path: `/template`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Templates\n         * @name TemplateControllerFindAllPinned\n         * @summary List Templates\n         * @request GET:/template/pinned\n         * @secure\n         */\n        templateControllerFindAllPinned: (params = {}) => this.request({\n            path: `/template/pinned`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Templates\n         * @name TemplateControllerFindOne\n         * @summary Get Template\n         * @request GET:/template/{id}\n         * @secure\n         */\n        templateControllerFindOne: (id, params = {}) => this.request({\n            path: `/template/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Templates\n         * @name TemplateControllerUpdate\n         * @summary Update Template\n         * @request PATCH:/template/{id}\n         * @secure\n         */\n        templateControllerUpdate: (id, data, params = {}) => this.request({\n            path: `/template/${id}`,\n            method: \"PATCH\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Templates\n         * @name TemplateControllerRemove\n         * @summary Delete Template\n         * @request DELETE:/template/{id}\n         * @secure\n         */\n        templateControllerRemove: (id, params = {}) => this.request({\n            path: `/template/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    voiceLibrary = {\n        /**\n         * No description\n         *\n         * @tags Voice Library\n         * @name VoiceLibraryControllerVoiceGetByProvider\n         * @summary Get voices in Voice Library by Provider\n         * @request GET:/voice-library/{provider}\n         * @secure\n         */\n        voiceLibraryControllerVoiceGetByProvider: (provider, query, params = {}) => this.request({\n            path: `/voice-library/${provider}`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Voice Library\n         * @name VoiceLibraryControllerVoiceGetAccentsByProvider\n         * @summary Get accents in Voice Library by Provider\n         * @request GET:/voice-library/{provider}/accents\n         * @secure\n         */\n        voiceLibraryControllerVoiceGetAccentsByProvider: (provider, params = {}) => this.request({\n            path: `/voice-library/${provider}/accents`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Voice Library\n         * @name VoiceLibraryControllerVoiceLibrarySyncByProvider\n         * @summary Sync Private voices in Voice Library by Provider\n         * @request POST:/voice-library/sync/{provider}\n         * @secure\n         */\n        voiceLibraryControllerVoiceLibrarySyncByProvider: (provider, params = {}) => this.request({\n            path: `/voice-library/sync/${provider}`,\n            method: \"POST\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Voice Library\n         * @name VoiceLibraryControllerVoiceLibrarySyncDefaultVoices\n         * @summary Sync Default voices in Voice Library by Providers\n         * @request POST:/voice-library/sync\n         * @secure\n         */\n        voiceLibraryControllerVoiceLibrarySyncDefaultVoices: (data, params = {}) => this.request({\n            path: `/voice-library/sync`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Voice Library\n         * @name VoiceLibraryControllerVoiceLibraryCreateSesameVoice\n         * @summary Create a new voice in the Voice Library using Sesame\n         * @request POST:/voice-library/create-sesame-voice\n         * @secure\n         */\n        voiceLibraryControllerVoiceLibraryCreateSesameVoice: (data, params = {}) => this.request({\n            path: `/voice-library/create-sesame-voice`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            ...params,\n        }),\n    };\n    provider = {\n        /**\n         * No description\n         *\n         * @tags Provider Resources\n         * @name ProviderResourceControllerCreateProviderResource\n         * @summary Create Provider Resource\n         * @request POST:/provider/{provider}/{resourceName}\n         * @secure\n         */\n        providerResourceControllerCreateProviderResource: (provider, resourceName, params = {}) => this.request({\n            path: `/provider/${provider}/${resourceName}`,\n            method: \"POST\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Provider Resources\n         * @name ProviderResourceControllerGetProviderResourcesPaginated\n         * @summary List Provider Resources\n         * @request GET:/provider/{provider}/{resourceName}\n         * @secure\n         */\n        providerResourceControllerGetProviderResourcesPaginated: (provider, resourceName, query, params = {}) => this.request({\n            path: `/provider/${provider}/${resourceName}`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Provider Resources\n         * @name ProviderResourceControllerGetProviderResource\n         * @summary Get Provider Resource\n         * @request GET:/provider/{provider}/{resourceName}/{id}\n         * @secure\n         */\n        providerResourceControllerGetProviderResource: (provider, resourceName, id, params = {}) => this.request({\n            path: `/provider/${provider}/${resourceName}/${id}`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Provider Resources\n         * @name ProviderResourceControllerDeleteProviderResource\n         * @summary Delete Provider Resource\n         * @request DELETE:/provider/{provider}/{resourceName}/{id}\n         * @secure\n         */\n        providerResourceControllerDeleteProviderResource: (provider, resourceName, id, params = {}) => this.request({\n            path: `/provider/${provider}/${resourceName}/${id}`,\n            method: \"DELETE\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Provider Resources\n         * @name ProviderResourceControllerUpdateProviderResource\n         * @summary Update Provider Resource\n         * @request PATCH:/provider/{provider}/{resourceName}/{id}\n         * @secure\n         */\n        providerResourceControllerUpdateProviderResource: (provider, resourceName, id, params = {}) => this.request({\n            path: `/provider/${provider}/${resourceName}/${id}`,\n            method: \"PATCH\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Providers\n         * @name ProviderControllerGetWorkflows\n         * @request GET:/{provider}/workflows\n         * @secure\n         */\n        providerControllerGetWorkflows: (provider, query, params = {}) => this.request({\n            path: `/${provider}/workflows`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Providers\n         * @name ProviderControllerGetWorkflowTriggerHook\n         * @request GET:/{provider}/workflows/{workflowId}/hooks\n         * @secure\n         */\n        providerControllerGetWorkflowTriggerHook: (provider, workflowId, params = {}) => this.request({\n            path: `/${provider}/workflows/${workflowId}/hooks`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Providers\n         * @name ProviderControllerGetLocations\n         * @request GET:/{provider}/locations\n         * @secure\n         */\n        providerControllerGetLocations: (provider, params = {}) => this.request({\n            path: `/${provider}/locations`,\n            method: \"GET\",\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Providers\n         * @name VoiceProviderControllerSearchVoices\n         * @summary Search Voice from Provider Voice Library.\n         * @request GET:/{provider}/voices/search\n         * @deprecated\n         * @secure\n         */\n        voiceProviderControllerSearchVoices: (provider, query, params = {}) => this.request({\n            path: `/${provider}/voices/search`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Providers\n         * @name VoiceProviderControllerSearchVoice\n         * @summary Search Voice from Provider Voice Library.\n         * @request GET:/{provider}/voice/search\n         * @secure\n         */\n        voiceProviderControllerSearchVoice: (provider, query, params = {}) => this.request({\n            path: `/${provider}/voice/search`,\n            method: \"GET\",\n            query: query,\n            secure: true,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Providers\n         * @name VoiceProviderControllerAddVoices\n         * @summary Add Shared Voice to your Provider Account.\n         * @request POST:/{provider}/voices/add\n         * @deprecated\n         * @secure\n         */\n        voiceProviderControllerAddVoices: (provider, data, params = {}) => this.request({\n            path: `/${provider}/voices/add`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n        /**\n         * No description\n         *\n         * @tags Providers\n         * @name VoiceProviderControllerAddVoice\n         * @summary Add Shared Voice to your Provider Account.\n         * @request POST:/{provider}/voice/add\n         * @secure\n         */\n        voiceProviderControllerAddVoice: (provider, data, params = {}) => this.request({\n            path: `/${provider}/voice/add`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n    };\n    v11Labs = {\n        /**\n         * No description\n         *\n         * @tags Providers\n         * @name VoiceProviderControllerCloneVoices\n         * @summary Clone a voice to the provider account and add to Vapi Voice Library.\n         * @request POST:/11labs/voice/clone\n         * @secure\n         */\n        voiceProviderControllerCloneVoices: (data, params = {}) => this.request({\n            path: `/11labs/voice/clone`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.FormData,\n            ...params,\n        }),\n    };\n    analytics = {\n        /**\n         * No description\n         *\n         * @tags Analytics\n         * @name AnalyticsControllerQuery\n         * @summary Create Analytics Queries\n         * @request POST:/analytics\n         * @secure\n         */\n        analyticsControllerQuery: (data, params = {}) => this.request({\n            path: `/analytics`,\n            method: \"POST\",\n            body: data,\n            secure: true,\n            type: ContentType.Json,\n            format: \"json\",\n            ...params,\n        }),\n    };\n}\nexports.Api = Api;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.client = void 0;\nconst api_1 = require(\"./api\");\nconst api = new api_1.Api({\n    baseUrl: \"https://api.vapi.ai\",\n    baseApiParams: {\n        secure: true,\n    },\n    securityWorker: async (securityData) => {\n        if (securityData) {\n            return {\n                headers: {\n                    Authorization: `Bearer ${securityData}`,\n                },\n            };\n        }\n    },\n});\nexports.client = api;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createSafeDailyConfig = createSafeDailyConfig;\nexports.safeSetLocalAudio = safeSetLocalAudio;\nexports.safeSetInputDevicesAsync = safeSetInputDevicesAsync;\nexports.createSafeDailyFactoryOptions = createSafeDailyFactoryOptions;\nfunction createSafeDailyConfig(config) {\n    if (!config)\n        return {};\n    const { alwaysIncludeMicInPermissionPrompt, ...rest } = config;\n    // Force true or remove the property entirely. This can cause Chrome 140+ issues\n    if (alwaysIncludeMicInPermissionPrompt === false) {\n        console.warn('[Vapi] alwaysIncludeMicInPermissionPrompt:false detected. ' +\n            'This can cause Chrome 140+ issues. Removing the property.');\n        return rest;\n    }\n    return config;\n}\nfunction safeSetLocalAudio(call, enabled) {\n    if (!call) {\n        throw new Error('Call object is not available.');\n    }\n    // Never use forceDiscardTrack. This can cause Chrome 140+ issues\n    call.setLocalAudio(enabled);\n}\nasync function safeSetInputDevicesAsync(call, options) {\n    if (!call) {\n        throw new Error('Call object is not available.');\n    }\n    // Validate audioSource\n    if ('audioSource' in options && options.audioSource === false) {\n        console.warn('[Vapi] setInputDevicesAsync with audioSource:false detected. ' +\n            'This can cause Chrome 140+ issues. Using default device instead.');\n        const { audioSource, ...safeOptions } = options;\n        await call.setInputDevicesAsync(safeOptions);\n        return;\n    }\n    await call.setInputDevicesAsync(options);\n}\nfunction createSafeDailyFactoryOptions(options) {\n    if (!options)\n        return {};\n    // Ensure audioSource is never false\n    if (options.audioSource === false) {\n        console.warn('[Vapi] audioSource:false detected in factory options. ' +\n            'This can cause Chrome 140+ issues. Defaulting to true.');\n        return { ...options, audioSource: true };\n    }\n    return options;\n}\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n    return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst daily_js_1 = __importDefault(require(\"@daily-co/daily-js\"));\nconst events_1 = __importDefault(require(\"events\"));\nconst client_1 = require(\"./client\");\nconst daily_guards_1 = require(\"./daily-guards\");\n/**\n * Extracts error details into a plain object that serializes properly to JSON.\n * Error objects don't serialize well because their properties (message, stack, name)\n * are not enumerable and get lost when using JSON.stringify().\n */\nfunction serializeError(error) {\n    if (error === null || error === undefined) {\n        return { message: 'Unknown error (null or undefined)' };\n    }\n    if (error instanceof Error) {\n        const serialized = {\n            message: error.message,\n            name: error.name,\n            stack: error.stack,\n        };\n        // Include any additional properties that might be on the error\n        const errorAsAny = error;\n        if (errorAsAny.code !== undefined) {\n            serialized.code = errorAsAny.code;\n        }\n        if (errorAsAny.cause !== undefined) {\n            serialized.cause = String(errorAsAny.cause);\n        }\n        if (errorAsAny.reason !== undefined) {\n            serialized.reason = errorAsAny.reason;\n        }\n        if (errorAsAny.details !== undefined) {\n            serialized.details = errorAsAny.details;\n        }\n        // Daily.co specific error properties\n        if (errorAsAny.errorMsg !== undefined) {\n            serialized.errorMsg = errorAsAny.errorMsg;\n        }\n        if (errorAsAny.error !== undefined && typeof errorAsAny.error === 'string') {\n            serialized.errorDetail = errorAsAny.error;\n        }\n        return serialized;\n    }\n    if (typeof error === 'string') {\n        return { message: error };\n    }\n    if (typeof error === 'object') {\n        // It's already a plain object, but let's ensure message exists\n        const errorObj = error;\n        return {\n            message: errorObj.message || errorObj.error || JSON.stringify(error),\n            ...errorObj\n        };\n    }\n    return { message: String(error) };\n}\nasync function startAudioPlayer(player, track) {\n    player.muted = false;\n    player.autoplay = true;\n    if (track != null) {\n        player.srcObject = new MediaStream([track]);\n        await player.play();\n    }\n}\nasync function buildAudioPlayer(track, participantId) {\n    const player = document.createElement('audio');\n    player.dataset.participantId = participantId;\n    document.body.appendChild(player);\n    await startAudioPlayer(player, track);\n    return player;\n}\nfunction destroyAudioPlayer(participantId) {\n    const player = document.querySelector(`audio[data-participant-id=\"${participantId}\"]`);\n    player?.remove();\n}\nfunction subscribeToTracks(e, call, isVideoRecordingEnabled, isVideoEnabled) {\n    if (e.participant.local)\n        return;\n    call.updateParticipant(e.participant.session_id, {\n        setSubscribedTracks: {\n            audio: true,\n            video: isVideoRecordingEnabled || isVideoEnabled,\n        },\n    });\n}\nclass VapiEventEmitter extends events_1.default {\n    on(event, listener) {\n        super.on(event, listener);\n        return this;\n    }\n    once(event, listener) {\n        super.once(event, listener);\n        return this;\n    }\n    emit(event, ...args) {\n        return super.emit(event, ...args);\n    }\n    removeListener(event, listener) {\n        super.removeListener(event, listener);\n        return this;\n    }\n    removeAllListeners(event) {\n        super.removeAllListeners(event);\n        return this;\n    }\n}\nclass Vapi extends VapiEventEmitter {\n    started = false;\n    call = null;\n    speakingTimeout = null;\n    dailyCallConfig = {};\n    dailyCallObject = {};\n    hasEmittedCallEndedStatus = false;\n    constructor(apiToken, apiBaseUrl, dailyCallConfig, dailyCallObject) {\n        super();\n        client_1.client.baseUrl = apiBaseUrl ?? 'https://api.vapi.ai';\n        client_1.client.setSecurityData(apiToken);\n        this.dailyCallConfig = (0, daily_guards_1.createSafeDailyConfig)(dailyCallConfig);\n        this.dailyCallObject = (0, daily_guards_1.createSafeDailyFactoryOptions)(dailyCallObject);\n    }\n    async cleanup() {\n        this.started = false;\n        this.hasEmittedCallEndedStatus = false;\n        if (this.call) {\n            await this.call.destroy();\n            this.call = null;\n        }\n        this.speakingTimeout = null;\n    }\n    isMobileDevice() {\n        if (typeof navigator === 'undefined') {\n            return false;\n        }\n        const userAgent = navigator.userAgent;\n        return /android|iphone|ipad|ipod|iemobile|blackberry|bada/i.test(userAgent.toLowerCase());\n    }\n    async sleep(ms) {\n        return new Promise((resolve) => setTimeout(resolve, ms));\n    }\n    async start(assistant, assistantOverrides, squad, workflow, workflowOverrides, options) {\n        const startTime = Date.now();\n        // Input validation with detailed error messages\n        if (!assistant && !squad && !workflow) {\n            const error = new Error('Assistant or Squad or Workflow must be provided.');\n            this.emit('error', {\n                type: 'validation-error',\n                stage: 'input-validation',\n                error: serializeError(error),\n                timestamp: new Date().toISOString()\n            });\n            throw error;\n        }\n        if (this.started) {\n            this.emit('call-start-progress', {\n                stage: 'validation',\n                status: 'failed',\n                timestamp: new Date().toISOString(),\n                metadata: { reason: 'already-started' }\n            });\n            return null;\n        }\n        this.emit('call-start-progress', {\n            stage: 'initialization',\n            status: 'started',\n            timestamp: new Date().toISOString(),\n            metadata: {\n                hasAssistant: !!assistant,\n                hasSquad: !!squad,\n                hasWorkflow: !!workflow\n            }\n        });\n        this.started = true;\n        try {\n            // Stage 1: Create web call\n            this.emit('call-start-progress', {\n                stage: 'web-call-creation',\n                status: 'started',\n                timestamp: new Date().toISOString()\n            });\n            const webCallStartTime = Date.now();\n            const webCall = (await client_1.client.call.callControllerCreateWebCall({\n                assistant: typeof assistant === 'string' ? undefined : assistant,\n                assistantId: typeof assistant === 'string' ? assistant : undefined,\n                assistantOverrides,\n                squad: typeof squad === 'string' ? undefined : squad,\n                squadId: typeof squad === 'string' ? squad : undefined,\n                workflow: typeof workflow === 'string' ? undefined : workflow,\n                workflowId: typeof workflow === 'string' ? workflow : undefined,\n                workflowOverrides,\n                roomDeleteOnUserLeaveEnabled: options?.roomDeleteOnUserLeaveEnabled,\n            })).data;\n            const webCallDuration = Date.now() - webCallStartTime;\n            this.emit('call-start-progress', {\n                stage: 'web-call-creation',\n                status: 'completed',\n                duration: webCallDuration,\n                timestamp: new Date().toISOString(),\n                metadata: {\n                    callId: webCall?.id || 'unknown',\n                    videoRecordingEnabled: webCall?.artifactPlan?.videoRecordingEnabled ?? false,\n                    voiceProvider: webCall?.assistant?.voice?.provider || 'unknown'\n                }\n            });\n            if (this.call) {\n                this.emit('call-start-progress', {\n                    stage: 'daily-call-object-creation',\n                    status: 'started',\n                    timestamp: new Date().toISOString(),\n                    metadata: { action: 'cleanup-existing' }\n                });\n                await this.cleanup();\n            }\n            const isVideoRecordingEnabled = webCall?.artifactPlan?.videoRecordingEnabled ?? false;\n            const isVideoEnabled = webCall?.assistant?.voice?.provider === 'tavus';\n            // Stage 2: Create Daily call object\n            this.emit('call-start-progress', {\n                stage: 'daily-call-object-creation',\n                status: 'started',\n                timestamp: new Date().toISOString(),\n                metadata: {\n                    audioSource: this.dailyCallObject.audioSource ?? true,\n                    videoSource: this.dailyCallObject.videoSource ?? isVideoRecordingEnabled,\n                    isVideoRecordingEnabled,\n                    isVideoEnabled\n                }\n            });\n            const dailyCallStartTime = Date.now();\n            try {\n                this.call = daily_js_1.default.createCallObject({\n                    audioSource: this.dailyCallObject.audioSource ?? true,\n                    videoSource: this.dailyCallObject.videoSource ?? isVideoRecordingEnabled,\n                    dailyConfig: this.dailyCallConfig,\n                });\n                const dailyCallDuration = Date.now() - dailyCallStartTime;\n                this.emit('call-start-progress', {\n                    stage: 'daily-call-object-creation',\n                    status: 'completed',\n                    duration: dailyCallDuration,\n                    timestamp: new Date().toISOString()\n                });\n            }\n            catch (error) {\n                const dailyCallDuration = Date.now() - dailyCallStartTime;\n                const serializedError = serializeError(error);\n                this.emit('call-start-progress', {\n                    stage: 'daily-call-object-creation',\n                    status: 'failed',\n                    duration: dailyCallDuration,\n                    timestamp: new Date().toISOString(),\n                    metadata: { error: serializedError.message }\n                });\n                this.emit('error', {\n                    type: 'daily-call-object-creation-error',\n                    stage: 'daily-call-object-creation',\n                    error: serializedError,\n                    timestamp: new Date().toISOString()\n                });\n                throw error;\n            }\n            this.call.iframe()?.style.setProperty('display', 'none');\n            this.call.on('left-meeting', () => {\n                this.emit('call-end');\n                if (!this.hasEmittedCallEndedStatus) {\n                    this.emit('message', {\n                        type: 'status-update',\n                        status: 'ended',\n                        'endedReason': 'customer-ended-call',\n                    });\n                    this.hasEmittedCallEndedStatus = true;\n                }\n                if (isVideoRecordingEnabled) {\n                    this.call?.stopRecording();\n                }\n                this.cleanup().catch(console.error);\n            });\n            this.call.on('error', (error) => {\n                this.emit('error', {\n                    type: 'daily-error',\n                    error: serializeError(error),\n                    timestamp: new Date().toISOString()\n                });\n                if (isVideoRecordingEnabled) {\n                    this.call?.stopRecording();\n                }\n            });\n            this.call.on('camera-error', (error) => {\n                this.emit('camera-error', {\n                    type: 'camera-error',\n                    error: serializeError(error),\n                    timestamp: new Date().toISOString()\n                });\n            });\n            this.call.on('network-quality-change', (event) => {\n                this.emit('network-quality-change', event);\n            });\n            this.call.on('network-connection', (event) => {\n                this.emit('network-connection', event);\n            });\n            this.call.on('recording-started', (event) => {\n                if (event)\n                    this.emit('recording-started', event);\n            });\n            this.call.on('recording-stopped', (event) => {\n                if (event)\n                    this.emit('recording-stopped', event);\n            });\n            this.call.on('recording-stats', (event) => {\n                if (event)\n                    this.emit('recording-stats', event);\n            });\n            this.call.on('recording-error', (event) => {\n                if (event)\n                    this.emit('recording-error', event);\n            });\n            this.call.on('recording-upload-completed', (event) => {\n                if (event)\n                    this.emit('recording-upload-completed', event);\n            });\n            this.call.on('track-started', async (e) => {\n                if (!e || !e.participant) {\n                    return;\n                }\n                if (e.participant?.local) {\n                    return;\n                }\n                if (e.participant?.user_name !== 'Vapi Speaker') {\n                    return;\n                }\n                if (e.track.kind === 'video') {\n                    this.emit('video', e.track);\n                }\n                if (e.track.kind === 'audio') {\n                    await buildAudioPlayer(e.track, e.participant.session_id);\n                }\n                this.call?.sendAppMessage('playable');\n            });\n            this.call.on('participant-joined', (e) => {\n                if (!e || !this.call)\n                    return;\n                subscribeToTracks(e, this.call, isVideoRecordingEnabled, isVideoEnabled);\n            });\n            this.call.on('participant-updated', (e) => {\n                if (!e) {\n                    return;\n                }\n                this.emit('daily-participant-updated', e.participant);\n            });\n            this.call.on('participant-left', (e) => {\n                if (!e) {\n                    return;\n                }\n                destroyAudioPlayer(e.participant.session_id);\n            });\n            // Stage 3: Mobile device handling and permissions\n            const isMobile = this.isMobileDevice();\n            this.emit('call-start-progress', {\n                stage: 'mobile-permissions',\n                status: 'started',\n                timestamp: new Date().toISOString(),\n                metadata: { isMobile }\n            });\n            if (isMobile) {\n                const mobileWaitStartTime = Date.now();\n                await this.sleep(1000);\n                const mobileWaitDuration = Date.now() - mobileWaitStartTime;\n                this.emit('call-start-progress', {\n                    stage: 'mobile-permissions',\n                    status: 'completed',\n                    duration: mobileWaitDuration,\n                    timestamp: new Date().toISOString(),\n                    metadata: { action: 'permissions-wait' }\n                });\n            }\n            else {\n                this.emit('call-start-progress', {\n                    stage: 'mobile-permissions',\n                    status: 'completed',\n                    timestamp: new Date().toISOString(),\n                    metadata: { action: 'skipped-not-mobile' }\n                });\n            }\n            // Stage 4: Join the call\n            this.emit('call-start-progress', {\n                stage: 'daily-call-join',\n                status: 'started',\n                timestamp: new Date().toISOString()\n            });\n            const joinStartTime = Date.now();\n            try {\n                await this.call.join({\n                    // @ts-expect-error This exists\n                    url: webCall.webCallUrl,\n                    subscribeToTracksAutomatically: false,\n                });\n                const joinDuration = Date.now() - joinStartTime;\n                this.emit('call-start-progress', {\n                    stage: 'daily-call-join',\n                    status: 'completed',\n                    duration: joinDuration,\n                    timestamp: new Date().toISOString()\n                });\n            }\n            catch (error) {\n                const joinDuration = Date.now() - joinStartTime;\n                const serializedError = serializeError(error);\n                this.emit('call-start-progress', {\n                    stage: 'daily-call-join',\n                    status: 'failed',\n                    duration: joinDuration,\n                    timestamp: new Date().toISOString(),\n                    metadata: { error: serializedError.message }\n                });\n                this.emit('error', {\n                    type: 'daily-call-join-error',\n                    stage: 'daily-call-join',\n                    error: serializedError,\n                    duration: joinDuration,\n                    timestamp: new Date().toISOString()\n                });\n                throw error;\n            }\n            // Stage 5: Video recording setup (if enabled)\n            if (isVideoRecordingEnabled) {\n                this.emit('call-start-progress', {\n                    stage: 'video-recording-setup',\n                    status: 'started',\n                    timestamp: new Date().toISOString()\n                });\n                const recordingRequestedTime = new Date().getTime();\n                const recordingStartTime = Date.now();\n                try {\n                    this.call.startRecording({\n                        width: 1280,\n                        height: 720,\n                        backgroundColor: '#FF1F2D3D',\n                        layout: {\n                            preset: 'default',\n                        },\n                    });\n                    const recordingSetupDuration = Date.now() - recordingStartTime;\n                    this.emit('call-start-progress', {\n                        stage: 'video-recording-setup',\n                        status: 'completed',\n                        duration: recordingSetupDuration,\n                        timestamp: new Date().toISOString()\n                    });\n                    this.call.on('recording-started', () => {\n                        const totalRecordingDelay = (new Date().getTime() - recordingRequestedTime) / 1000;\n                        this.emit('call-start-progress', {\n                            stage: 'video-recording-started',\n                            status: 'completed',\n                            timestamp: new Date().toISOString(),\n                            metadata: { delaySeconds: totalRecordingDelay }\n                        });\n                        this.send({\n                            type: 'control',\n                            control: 'say-first-message',\n                            videoRecordingStartDelaySeconds: totalRecordingDelay,\n                        });\n                    });\n                }\n                catch (error) {\n                    const recordingSetupDuration = Date.now() - recordingStartTime;\n                    const serializedError = serializeError(error);\n                    this.emit('call-start-progress', {\n                        stage: 'video-recording-setup',\n                        status: 'failed',\n                        duration: recordingSetupDuration,\n                        timestamp: new Date().toISOString(),\n                        metadata: { error: serializedError.message }\n                    });\n                    this.emit('error', {\n                        type: 'video-recording-setup-error',\n                        stage: 'video-recording-setup',\n                        error: serializedError,\n                        timestamp: new Date().toISOString()\n                    });\n                    // Don't throw here, video recording is optional\n                }\n            }\n            else {\n                this.emit('call-start-progress', {\n                    stage: 'video-recording-setup',\n                    status: 'completed',\n                    timestamp: new Date().toISOString(),\n                    metadata: { action: 'skipped-not-enabled' }\n                });\n            }\n            // Stage 6: Audio level observer setup\n            this.emit('call-start-progress', {\n                stage: 'audio-observer-setup',\n                status: 'started',\n                timestamp: new Date().toISOString()\n            });\n            const audioObserverStartTime = Date.now();\n            try {\n                this.call.startRemoteParticipantsAudioLevelObserver(100);\n                this.call.startLocalAudioLevelObserver(100);\n                const audioObserverDuration = Date.now() - audioObserverStartTime;\n                this.emit('call-start-progress', {\n                    stage: 'audio-observer-setup',\n                    status: 'completed',\n                    duration: audioObserverDuration,\n                    timestamp: new Date().toISOString()\n                });\n            }\n            catch (error) {\n                const audioObserverDuration = Date.now() - audioObserverStartTime;\n                const serializedError = serializeError(error);\n                this.emit('call-start-progress', {\n                    stage: 'audio-observer-setup',\n                    status: 'failed',\n                    duration: audioObserverDuration,\n                    timestamp: new Date().toISOString(),\n                    metadata: { error: serializedError.message }\n                });\n                this.emit('error', {\n                    type: 'audio-observer-setup-error',\n                    stage: 'audio-observer-setup',\n                    error: serializedError,\n                    timestamp: new Date().toISOString()\n                });\n                // Don't throw here, this is non-critical\n            }\n            this.call.on('remote-participants-audio-level', (e) => {\n                if (e)\n                    this.handleRemoteParticipantsAudioLevel(e);\n            });\n            this.call.on('local-audio-level', (e) => {\n                if (e)\n                    this.handleLocalAudioLevel(e);\n            });\n            this.call.on('app-message', (e) => this.onAppMessage(e));\n            this.call.on('nonfatal-error', (e) => {\n                // https://docs.daily.co/reference/daily-js/events/meeting-events#type-audio-processor-error\n                if (e?.type === 'local-audio-level-observer-error') {\n                    this.emit('local-audio-level-observer-error', serializeError(e));\n                }\n                if (e?.type === 'audio-processor-error') {\n                    this.call\n                        ?.updateInputSettings({\n                        audio: {\n                            processor: {\n                                type: 'none',\n                            },\n                        },\n                    })\n                        .then(() => {\n                        (0, daily_guards_1.safeSetLocalAudio)(this.call, true);\n                    });\n                }\n            });\n            // Stage 7: Audio processing setup\n            this.emit('call-start-progress', {\n                stage: 'audio-processing-setup',\n                status: 'started',\n                timestamp: new Date().toISOString()\n            });\n            const audioProcessingStartTime = Date.now();\n            try {\n                this.call.updateInputSettings({\n                    audio: {\n                        processor: {\n                            type: 'noise-cancellation',\n                        },\n                    },\n                });\n                const audioProcessingDuration = Date.now() - audioProcessingStartTime;\n                this.emit('call-start-progress', {\n                    stage: 'audio-processing-setup',\n                    status: 'completed',\n                    duration: audioProcessingDuration,\n                    timestamp: new Date().toISOString()\n                });\n            }\n            catch (error) {\n                const audioProcessingDuration = Date.now() - audioProcessingStartTime;\n                const serializedError = serializeError(error);\n                this.emit('call-start-progress', {\n                    stage: 'audio-processing-setup',\n                    status: 'failed',\n                    duration: audioProcessingDuration,\n                    timestamp: new Date().toISOString(),\n                    metadata: { error: serializedError.message }\n                });\n                this.emit('error', {\n                    type: 'audio-processing-setup-error',\n                    stage: 'audio-processing-setup',\n                    error: serializedError,\n                    timestamp: new Date().toISOString()\n                });\n                // Don't throw here, this is non-critical\n            }\n            const totalDuration = Date.now() - startTime;\n            this.emit('call-start-success', {\n                totalDuration,\n                callId: webCall?.id || 'unknown',\n                timestamp: new Date().toISOString()\n            });\n            return webCall;\n        }\n        catch (e) {\n            const totalDuration = Date.now() - startTime;\n            const serializedError = serializeError(e);\n            this.emit('call-start-failed', {\n                stage: 'unknown',\n                totalDuration,\n                error: serializedError.message,\n                errorStack: serializedError.stack || 'No stack trace available',\n                timestamp: new Date().toISOString(),\n                context: {\n                    hasAssistant: !!assistant,\n                    hasSquad: !!squad,\n                    hasWorkflow: !!workflow,\n                    isMobile: this.isMobileDevice()\n                }\n            });\n            // Also emit the generic error event for backward compatibility\n            this.emit('error', {\n                type: 'start-method-error',\n                stage: 'unknown',\n                error: serializedError,\n                totalDuration,\n                timestamp: new Date().toISOString(),\n                context: {\n                    hasAssistant: !!assistant,\n                    hasSquad: !!squad,\n                    hasWorkflow: !!workflow,\n                    isMobile: this.isMobileDevice()\n                }\n            });\n            await this.cleanup();\n            return null;\n        }\n    }\n    onAppMessage(e) {\n        if (!e) {\n            return;\n        }\n        try {\n            if (e.data === 'listening') {\n                return this.emit('call-start');\n            }\n            else {\n                try {\n                    const parsedMessage = JSON.parse(e.data);\n                    this.emit('message', parsedMessage);\n                    if (parsedMessage && 'type' in parsedMessage && 'status' in parsedMessage && parsedMessage.type === 'status-update' && parsedMessage.status === 'ended') {\n                        this.hasEmittedCallEndedStatus = true;\n                    }\n                }\n                catch (parseError) {\n                    console.log('Error parsing message data: ', parseError);\n                }\n            }\n        }\n        catch (e) {\n            console.error(e);\n        }\n    }\n    handleRemoteParticipantsAudioLevel(e) {\n        const speechLevel = Object.values(e.participantsAudioLevel).reduce((a, b) => a + b, 0);\n        this.emit('volume-level', Math.min(1, speechLevel / 0.15));\n        const isSpeaking = speechLevel > 0.01;\n        if (!isSpeaking) {\n            return;\n        }\n        if (this.speakingTimeout) {\n            clearTimeout(this.speakingTimeout);\n            this.speakingTimeout = null;\n        }\n        else {\n            this.emit('speech-start');\n        }\n        this.speakingTimeout = setTimeout(() => {\n            this.emit('speech-end');\n            this.speakingTimeout = null;\n        }, 1000);\n    }\n    handleLocalAudioLevel(e) {\n        this.emit('local-volume-level', e.audioLevel);\n    }\n    /**\n     * Stops the call by destroying the Daily call object.\n     *\n     * If `roomDeleteOnUserLeaveEnabled` is set to `false`, the Vapi call will be kept alive, allowing reconnections to the same call using the `reconnect` method.\n     * If `roomDeleteOnUserLeaveEnabled` is set to `true`, the Vapi call will also be destroyed, preventing any reconnections.\n     */\n    async stop() {\n        this.started = false;\n        if (this.call) {\n            await this.call.destroy();\n            this.call = null;\n        }\n        this.speakingTimeout = null;\n    }\n    /**\n     * Sends a Live Call Control message to the Vapi server.\n     *\n     * Docs: https://docs.vapi.ai/calls/call-features\n     */\n    send(message) {\n        this.call?.sendAppMessage(JSON.stringify(message));\n    }\n    setMuted(mute) {\n        (0, daily_guards_1.safeSetLocalAudio)(this.call, !mute);\n    }\n    isMuted() {\n        if (!this.call) {\n            return false;\n        }\n        return this.call.localAudio() === false;\n    }\n    say(message, endCallAfterSpoken, interruptionsEnabled, interruptAssistantEnabled) {\n        this.send({\n            type: 'say',\n            message,\n            endCallAfterSpoken,\n            interruptionsEnabled: interruptionsEnabled ?? false,\n            interruptAssistantEnabled: interruptAssistantEnabled ?? false,\n        });\n    }\n    /**\n     * Ends the call immediately by sending a `end-call` message using Live Call Control, and destroys the Daily call object.\n     *\n     * This method always ends the call, regardless of the `roomDeleteOnUserLeaveEnabled` option.\n     */\n    end() {\n        this.send({\n            type: 'end-call',\n        });\n        this.stop();\n    }\n    setInputDevicesAsync(options) {\n        return (0, daily_guards_1.safeSetInputDevicesAsync)(this.call, options);\n    }\n    async increaseMicLevel(gain) {\n        if (!this.call) {\n            throw new Error('Call object is not available.');\n        }\n        try {\n            const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n            const audioContext = new AudioContext();\n            const source = audioContext.createMediaStreamSource(stream);\n            const gainNode = audioContext.createGain();\n            gainNode.gain.value = gain;\n            source.connect(gainNode);\n            const destination = audioContext.createMediaStreamDestination();\n            gainNode.connect(destination);\n            const [boostedTrack] = destination.stream.getAudioTracks();\n            await (0, daily_guards_1.safeSetInputDevicesAsync)(this.call, { audioSource: boostedTrack });\n        }\n        catch (error) {\n            console.error(\"Error adjusting microphone level:\", error);\n        }\n    }\n    setOutputDeviceAsync(options) {\n        this.call?.setOutputDeviceAsync(options);\n    }\n    getDailyCallObject() {\n        return this.call;\n    }\n    /**\n     * Returns the most recent local (microphone) audio level, a number between 0 and 1.\n     *\n     * Useful for detecting when the local participant's microphone is not picking up any\n     * audio (e.g. wrong input device selected, OS-level input volume at 0, or muted\n     * hardware) so you can surface a \"we can't hear you\" style warning in your UI.\n     *\n     * Returns 0 when there is no active call.\n     */\n    getLocalAudioLevel() {\n        if (!this.call) {\n            return 0;\n        }\n        return this.call.getLocalAudioLevel();\n    }\n    /**\n     * Starts (or restarts) the local audio level observer. The observer is started\n     * automatically when a call begins, but this can be used to change the sampling\n     * interval or restart it if it was stopped.\n     *\n     * While running, the Vapi instance emits 'local-volume-level' events with the local\n     * microphone audio level (0 to 1).\n     *\n     * @param interval How often, in milliseconds, to emit audio level events. Defaults to Daily's default.\n     */\n    async startLocalAudioLevelObserver(interval) {\n        if (!this.call) {\n            throw new Error('Call object is not available.');\n        }\n        await this.call.startLocalAudioLevelObserver(interval);\n    }\n    /**\n     * Stops the local audio level observer. After calling this, 'local-volume-level'\n     * events will no longer be emitted until the observer is started again.\n     */\n    stopLocalAudioLevelObserver() {\n        this.call?.stopLocalAudioLevelObserver();\n    }\n    /**\n     * Returns whether the local audio level observer is currently running.\n     */\n    isLocalAudioLevelObserverRunning() {\n        if (!this.call) {\n            return false;\n        }\n        return this.call.isLocalAudioLevelObserverRunning();\n    }\n    startScreenSharing(displayMediaOptions, screenVideoSendSettings) {\n        this.call?.startScreenShare({\n            displayMediaOptions,\n            screenVideoSendSettings,\n        });\n    }\n    stopScreenSharing() {\n        this.call?.stopScreenShare();\n    }\n    /**\n     * Reconnects to an active call.\n     *\n     *\n     * @param webCall\n     */\n    async reconnect(webCall) {\n        const startTime = Date.now();\n        if (this.started) {\n            throw new Error('Cannot reconnect while a call is already in progress. Call stop() first.');\n        }\n        if (!webCall.webCallUrl) {\n            throw new Error('webCallUrl is required for reconnection.');\n        }\n        this.emit('call-start-progress', {\n            stage: 'reconnect-initialization',\n            status: 'started',\n            timestamp: new Date().toISOString(),\n            metadata: {\n                callId: webCall.id || 'unknown',\n                hasVideoRecording: !!webCall?.artifactPlan?.videoRecordingEnabled,\n                voiceProvider: webCall?.assistant?.voice?.provider || 'unknown'\n            }\n        });\n        this.started = true;\n        try {\n            // Clean up any existing call object\n            if (this.call) {\n                this.emit('call-start-progress', {\n                    stage: 'cleanup-existing-call',\n                    status: 'started',\n                    timestamp: new Date().toISOString()\n                });\n                await this.cleanup();\n                this.emit('call-start-progress', {\n                    stage: 'cleanup-existing-call',\n                    status: 'completed',\n                    timestamp: new Date().toISOString()\n                });\n            }\n            const isVideoRecordingEnabled = webCall?.artifactPlan?.videoRecordingEnabled ?? false;\n            const isVideoEnabled = webCall?.assistant?.voice?.provider === 'tavus';\n            // Stage 1: Create Daily call object\n            this.emit('call-start-progress', {\n                stage: 'daily-call-object-creation',\n                status: 'started',\n                timestamp: new Date().toISOString(),\n                metadata: {\n                    audioSource: this.dailyCallObject.audioSource ?? true,\n                    videoSource: this.dailyCallObject.videoSource ?? isVideoRecordingEnabled,\n                    isVideoRecordingEnabled,\n                    isVideoEnabled\n                }\n            });\n            const dailyCallStartTime = Date.now();\n            this.call = daily_js_1.default.createCallObject({\n                audioSource: this.dailyCallObject.audioSource ?? true,\n                videoSource: this.dailyCallObject.videoSource ?? isVideoRecordingEnabled,\n                dailyConfig: this.dailyCallConfig,\n            });\n            const dailyCallDuration = Date.now() - dailyCallStartTime;\n            this.emit('call-start-progress', {\n                stage: 'daily-call-object-creation',\n                status: 'completed',\n                duration: dailyCallDuration,\n                timestamp: new Date().toISOString()\n            });\n            this.call.iframe()?.style.setProperty('display', 'none');\n            // Set up event listeners\n            this.call.on('left-meeting', () => {\n                this.emit('call-end');\n                if (!this.hasEmittedCallEndedStatus) {\n                    this.emit('message', {\n                        type: 'status-update',\n                        status: 'ended',\n                        'endedReason': 'customer-ended-call',\n                    });\n                    this.hasEmittedCallEndedStatus = true;\n                }\n                if (isVideoRecordingEnabled) {\n                    this.call?.stopRecording();\n                }\n                this.cleanup().catch(console.error);\n            });\n            this.call.on('error', (error) => {\n                this.emit('error', {\n                    type: 'daily-error',\n                    error: serializeError(error),\n                    timestamp: new Date().toISOString()\n                });\n                if (isVideoRecordingEnabled) {\n                    this.call?.stopRecording();\n                }\n            });\n            this.call.on('camera-error', (error) => {\n                this.emit('camera-error', {\n                    type: 'camera-error',\n                    error: serializeError(error),\n                    timestamp: new Date().toISOString()\n                });\n            });\n            this.call.on('network-quality-change', (event) => {\n                this.emit('network-quality-change', event);\n            });\n            this.call.on('network-connection', (event) => {\n                this.emit('network-connection', event);\n            });\n            this.call.on('recording-started', (event) => {\n                if (event)\n                    this.emit('recording-started', event);\n            });\n            this.call.on('recording-stopped', (event) => {\n                if (event)\n                    this.emit('recording-stopped', event);\n            });\n            this.call.on('recording-stats', (event) => {\n                if (event)\n                    this.emit('recording-stats', event);\n            });\n            this.call.on('recording-error', (event) => {\n                if (event)\n                    this.emit('recording-error', event);\n            });\n            this.call.on('recording-upload-completed', (event) => {\n                if (event)\n                    this.emit('recording-upload-completed', event);\n            });\n            this.call.on('track-started', async (e) => {\n                if (!e || !e.participant) {\n                    return;\n                }\n                if (e.participant?.local) {\n                    return;\n                }\n                if (e.participant?.user_name !== 'Vapi Speaker') {\n                    return;\n                }\n                if (e.track.kind === 'video') {\n                    this.emit('video', e.track);\n                }\n                if (e.track.kind === 'audio') {\n                    await buildAudioPlayer(e.track, e.participant.session_id);\n                }\n                this.call?.sendAppMessage('playable');\n            });\n            this.call.on('participant-joined', (e) => {\n                if (!e || !this.call)\n                    return;\n                subscribeToTracks(e, this.call, isVideoRecordingEnabled, isVideoEnabled);\n            });\n            this.call.on('participant-updated', (e) => {\n                if (!e) {\n                    return;\n                }\n                this.emit('daily-participant-updated', e.participant);\n            });\n            this.call.on('participant-left', (e) => {\n                if (!e) {\n                    return;\n                }\n                destroyAudioPlayer(e.participant.session_id);\n            });\n            this.call.on('remote-participants-audio-level', (e) => {\n                if (e)\n                    this.handleRemoteParticipantsAudioLevel(e);\n            });\n            this.call.on('local-audio-level', (e) => {\n                if (e)\n                    this.handleLocalAudioLevel(e);\n            });\n            this.call.on('app-message', (e) => this.onAppMessage(e));\n            this.call.on('nonfatal-error', (e) => {\n                // https://docs.daily.co/reference/daily-js/events/meeting-events#type-audio-processor-error\n                if (e?.type === 'local-audio-level-observer-error') {\n                    this.emit('local-audio-level-observer-error', serializeError(e));\n                }\n                if (e?.type === 'audio-processor-error') {\n                    this.call\n                        ?.updateInputSettings({\n                        audio: {\n                            processor: {\n                                type: 'none',\n                            },\n                        },\n                    })\n                        .then(() => {\n                        (0, daily_guards_1.safeSetLocalAudio)(this.call, true);\n                    });\n                }\n            });\n            // Stage 2: Mobile device handling and permissions\n            const isMobile = this.isMobileDevice();\n            this.emit('call-start-progress', {\n                stage: 'mobile-permissions',\n                status: 'started',\n                timestamp: new Date().toISOString(),\n                metadata: { isMobile }\n            });\n            if (isMobile) {\n                const mobileWaitStartTime = Date.now();\n                await this.sleep(1000);\n                const mobileWaitDuration = Date.now() - mobileWaitStartTime;\n                this.emit('call-start-progress', {\n                    stage: 'mobile-permissions',\n                    status: 'completed',\n                    duration: mobileWaitDuration,\n                    timestamp: new Date().toISOString(),\n                    metadata: { action: 'permissions-wait' }\n                });\n            }\n            else {\n                this.emit('call-start-progress', {\n                    stage: 'mobile-permissions',\n                    status: 'completed',\n                    timestamp: new Date().toISOString(),\n                    metadata: { action: 'skipped-not-mobile' }\n                });\n            }\n            // Stage 3: Join the call\n            this.emit('call-start-progress', {\n                stage: 'daily-call-join',\n                status: 'started',\n                timestamp: new Date().toISOString()\n            });\n            const joinStartTime = Date.now();\n            await this.call.join({\n                url: webCall.webCallUrl,\n                subscribeToTracksAutomatically: false,\n            });\n            const joinDuration = Date.now() - joinStartTime;\n            this.emit('call-start-progress', {\n                stage: 'daily-call-join',\n                status: 'completed',\n                duration: joinDuration,\n                timestamp: new Date().toISOString()\n            });\n            // Stage 4: Video recording setup (if enabled)\n            if (isVideoRecordingEnabled) {\n                this.emit('call-start-progress', {\n                    stage: 'video-recording-setup',\n                    status: 'started',\n                    timestamp: new Date().toISOString()\n                });\n                const recordingStartTime = Date.now();\n                const recordingRequestedTime = new Date().getTime();\n                try {\n                    this.call.startRecording({\n                        width: 1280,\n                        height: 720,\n                        backgroundColor: '#FF1F2D3D',\n                        layout: {\n                            preset: 'default',\n                        },\n                    });\n                    const recordingSetupDuration = Date.now() - recordingStartTime;\n                    this.emit('call-start-progress', {\n                        stage: 'video-recording-setup',\n                        status: 'completed',\n                        duration: recordingSetupDuration,\n                        timestamp: new Date().toISOString()\n                    });\n                    this.call.on('recording-started', () => {\n                        const totalRecordingDelay = (new Date().getTime() - recordingRequestedTime) / 1000;\n                        this.emit('call-start-progress', {\n                            stage: 'video-recording-started',\n                            status: 'completed',\n                            timestamp: new Date().toISOString(),\n                            metadata: { delaySeconds: totalRecordingDelay }\n                        });\n                        this.send({\n                            type: 'control',\n                            control: 'say-first-message',\n                            videoRecordingStartDelaySeconds: totalRecordingDelay,\n                        });\n                    });\n                }\n                catch (error) {\n                    const recordingSetupDuration = Date.now() - recordingStartTime;\n                    const serializedError = serializeError(error);\n                    this.emit('call-start-progress', {\n                        stage: 'video-recording-setup',\n                        status: 'failed',\n                        duration: recordingSetupDuration,\n                        timestamp: new Date().toISOString(),\n                        metadata: { error: serializedError.message }\n                    });\n                    // Don't throw here, video recording is optional\n                }\n            }\n            else {\n                this.emit('call-start-progress', {\n                    stage: 'video-recording-setup',\n                    status: 'completed',\n                    timestamp: new Date().toISOString(),\n                    metadata: { action: 'skipped-not-enabled' }\n                });\n            }\n            // Stage 5: Audio level observer setup\n            this.emit('call-start-progress', {\n                stage: 'audio-observer-setup',\n                status: 'started',\n                timestamp: new Date().toISOString()\n            });\n            const audioObserverStartTime = Date.now();\n            try {\n                this.call.startRemoteParticipantsAudioLevelObserver(100);\n                this.call.startLocalAudioLevelObserver(100);\n                const audioObserverDuration = Date.now() - audioObserverStartTime;\n                this.emit('call-start-progress', {\n                    stage: 'audio-observer-setup',\n                    status: 'completed',\n                    duration: audioObserverDuration,\n                    timestamp: new Date().toISOString()\n                });\n            }\n            catch (error) {\n                const audioObserverDuration = Date.now() - audioObserverStartTime;\n                const serializedError = serializeError(error);\n                this.emit('call-start-progress', {\n                    stage: 'audio-observer-setup',\n                    status: 'failed',\n                    duration: audioObserverDuration,\n                    timestamp: new Date().toISOString(),\n                    metadata: { error: serializedError.message }\n                });\n                // Don't throw here, this is non-critical\n            }\n            // Stage 6: Audio processing setup\n            this.emit('call-start-progress', {\n                stage: 'audio-processing-setup',\n                status: 'started',\n                timestamp: new Date().toISOString()\n            });\n            const audioProcessingStartTime = Date.now();\n            try {\n                this.call.updateInputSettings({\n                    audio: {\n                        processor: {\n                            type: 'noise-cancellation',\n                        },\n                    },\n                });\n                const audioProcessingDuration = Date.now() - audioProcessingStartTime;\n                this.emit('call-start-progress', {\n                    stage: 'audio-processing-setup',\n                    status: 'completed',\n                    duration: audioProcessingDuration,\n                    timestamp: new Date().toISOString()\n                });\n            }\n            catch (error) {\n                const audioProcessingDuration = Date.now() - audioProcessingStartTime;\n                const serializedError = serializeError(error);\n                this.emit('call-start-progress', {\n                    stage: 'audio-processing-setup',\n                    status: 'failed',\n                    duration: audioProcessingDuration,\n                    timestamp: new Date().toISOString(),\n                    metadata: { error: serializedError.message }\n                });\n                // Don't throw here, this is non-critical\n            }\n            const totalDuration = Date.now() - startTime;\n            this.emit('call-start-success', {\n                totalDuration,\n                callId: webCall?.id || 'unknown',\n                timestamp: new Date().toISOString()\n            });\n            this.emit('call-start');\n        }\n        catch (e) {\n            const totalDuration = Date.now() - startTime;\n            const serializedError = serializeError(e);\n            this.emit('call-start-failed', {\n                stage: 'reconnect',\n                totalDuration,\n                error: serializedError.message,\n                errorStack: serializedError.stack || 'No stack trace available',\n                timestamp: new Date().toISOString(),\n                context: {\n                    isReconnect: true,\n                    callId: webCall?.id || 'unknown',\n                    hasVideoRecording: !!webCall?.artifactPlan?.videoRecordingEnabled,\n                    voiceProvider: webCall?.assistant?.voice?.provider || 'unknown',\n                    isMobile: this.isMobileDevice()\n                }\n            });\n            // Also emit the generic error event for backward compatibility\n            this.emit('error', {\n                type: 'reconnect-error',\n                error: serializedError,\n                totalDuration,\n                timestamp: new Date().toISOString(),\n                context: {\n                    isReconnect: true,\n                    callId: webCall?.id || 'unknown',\n                    hasVideoRecording: !!webCall?.artifactPlan?.videoRecordingEnabled,\n                    voiceProvider: webCall?.assistant?.voice?.provider || 'unknown',\n                    isMobile: this.isMobileDevice()\n                }\n            });\n            await this.cleanup();\n            throw e;\n        }\n    }\n    /**\n     * Runs all network connectivity tests for pre-call diagnostics.\n     * Creates a temporary Daily call object for testing purposes.\n     *\n     * Tests performed:\n     * 1. Network connectivity (TURN server) - Tests if traffic can be relayed through TURN servers\n     * 2. Websocket connectivity - Tests if websocket connections can be established\n     * 3. Call quality - Tests overall call quality metrics (if available in SDK version)\n     *\n     * @returns {Promise<Record<string, any>>} Test results object with status for each test\n     *\n     * @example\n     * // Run pre-call network diagnostics\n     * const results = await Vapi.runNetworkTestsStandalone();\n     * if (results.networkConnectivity?.result === 'failed') {\n     *   console.warn('Network issues detected - calls may not work properly');\n     * }\n     *\n     * @static\n     */\n    static async runNetworkTestsStandalone() {\n        console.log('Starting standalone network connectivity tests...');\n        const results = {};\n        let tempCall = null;\n        try {\n            // Create a temporary call object for testing\n            console.log('Creating temporary call object for testing...');\n            tempCall = daily_js_1.default.createCallObject({\n                audioSource: true,\n                videoSource: true,\n            });\n            // Test 1: Network Connectivity (TURN server test)\n            console.log('\\n1. Testing network connectivity (TURN server)...');\n            let videoTrack = null;\n            try {\n                // Create a dummy video track for the test\n                const stream = await navigator.mediaDevices.getUserMedia({ video: true });\n                videoTrack = stream.getVideoTracks()[0];\n                const networkTest = await tempCall.testNetworkConnectivity(videoTrack);\n                results.networkConnectivity = networkTest;\n                console.log('Network connectivity test result:', networkTest);\n            }\n            catch (error) {\n                results.networkConnectivity = { result: 'error', error: error?.toString() };\n                console.error('Network connectivity test error:', error);\n            }\n            finally {\n                // Clean up the video track\n                if (videoTrack) {\n                    videoTrack.stop();\n                }\n            }\n            // Test 2: Websocket Connectivity\n            console.log('\\n2. Testing websocket connectivity...');\n            try {\n                const websocketTest = await tempCall.testWebsocketConnectivity();\n                results.websocketConnectivity = websocketTest;\n                console.log('Websocket connectivity test result:', websocketTest);\n            }\n            catch (error) {\n                results.websocketConnectivity = { result: 'error', error: error?.toString() };\n                console.error('Websocket connectivity test error:', error);\n            }\n            // Test 3: Call Quality (if available)\n            console.log('\\n3. Testing call quality...');\n            try {\n                // Check if the method exists\n                if (typeof tempCall.testCallQuality === 'function') {\n                    // Call quality test requires startCamera to initialize call state\n                    try {\n                        // Use startCamera to initialize the call state without needing a room\n                        console.log('Initializing call state with startCamera...');\n                        await tempCall.startCamera();\n                        // Now run the call quality test\n                        const callQualityTest = await tempCall.testCallQuality();\n                        results.callQuality = callQualityTest;\n                        console.log('Call quality test result:', callQualityTest);\n                        // Camera will be cleaned up when we destroy the call object\n                    }\n                    catch (startCameraError) {\n                        // If startCamera fails, it might be due to permissions or other issues\n                        console.error('Failed to start camera for call quality test:', startCameraError);\n                        results.callQuality = {\n                            result: 'error',\n                            error: startCameraError?.toString(),\n                            message: 'Failed to initialize camera for call quality test. Check camera permissions.'\n                        };\n                    }\n                }\n                else {\n                    results.callQuality = { result: 'not-available', message: 'testCallQuality method not available' };\n                    console.log('Call quality test not available in current Daily.co version');\n                }\n            }\n            catch (error) {\n                results.callQuality = { result: 'error', error: error?.toString() };\n                console.error('Call quality test error:', error);\n            }\n        }\n        catch (error) {\n            console.error('Failed to create temporary call object:', error);\n            results.error = error?.toString();\n        }\n        finally {\n            // Clean up the temporary call object\n            if (tempCall) {\n                try {\n                    console.log('Cleaning up temporary call object...');\n                    await tempCall.destroy();\n                }\n                catch (error) {\n                    console.error('Error destroying temporary call object:', error);\n                }\n            }\n        }\n        // Summary\n        console.log('\\n=== Network Test Summary ===');\n        console.log('Results:', JSON.stringify(results, null, 2));\n        return results;\n    }\n}\nexports.default = Vapi;\n"]}