@gravity-rail/cli 0.5.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/account-verify-phone-4LRJZT5I.js +36 -0
- package/dist/account-verify-phone-4LRJZT5I.js.map +1 -0
- package/dist/chunk-3EO4COHB.js +14202 -0
- package/dist/chunk-3EO4COHB.js.map +1 -0
- package/dist/chunk-QVG4L6BE.js +2199 -0
- package/dist/chunk-QVG4L6BE.js.map +1 -0
- package/dist/concierge-ZOG7YFWQ.js +6 -0
- package/dist/concierge-ZOG7YFWQ.js.map +1 -0
- package/dist/gr.js +7183 -22914
- package/dist/gr.js.map +1 -1
- package/dist/lib.d.ts +52 -11
- package/dist/lib.js +599 -11
- package/dist/lib.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/cli-utils/ui.ts","../src/cli-utils/config.ts","../src/cli-utils/auth.ts","../src/cli-utils/agui.ts","../../../node_modules/libphonenumber-js/metadata.min.json.js","../../../node_modules/libphonenumber-js/min/exports/withMetadataArgument.js","../../../node_modules/libphonenumber-js/source/tools/semver-compare.js","../../../node_modules/libphonenumber-js/source/helpers/isObject.js","../../../node_modules/libphonenumber-js/source/metadata.js","../../../node_modules/libphonenumber-js/source/helpers/checkNumberLength.js","../../../node_modules/libphonenumber-js/source/isPossible.js","../../../node_modules/libphonenumber-js/source/helpers/matchesEntirely.js","../../../node_modules/libphonenumber-js/source/helpers/getNumberType.js","../../../node_modules/libphonenumber-js/source/isValid.js","../../../node_modules/libphonenumber-js/source/helpers/getPossibleCountriesForNumber.js","../../../node_modules/libphonenumber-js/source/constants.js","../../../node_modules/libphonenumber-js/source/helpers/stripIddPrefix.js","../../../node_modules/libphonenumber-js/source/helpers/extractNationalNumberFromPossiblyIncompleteNumber.js","../../../node_modules/libphonenumber-js/source/helpers/getCountryByNationalNumber.js","../../../node_modules/libphonenumber-js/source/helpers/getCountryByCallingCode.js","../../../node_modules/libphonenumber-js/source/helpers/extractNationalNumber.js","../../../node_modules/libphonenumber-js/source/helpers/extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js","../../../node_modules/libphonenumber-js/source/helpers/extractCountryCallingCode.js","../../../node_modules/libphonenumber-js/source/helpers/applyInternationalSeparatorStyle.js","../../../node_modules/libphonenumber-js/source/helpers/formatNationalNumberUsingFormat.js","../../../node_modules/libphonenumber-js/source/helpers/getIddPrefix.js","../../../node_modules/libphonenumber-js/source/helpers/extension/createExtensionPattern.js","../../../node_modules/libphonenumber-js/source/helpers/isViablePhoneNumber.js","../../../node_modules/libphonenumber-js/source/helpers/RFC3966.js","../../../node_modules/libphonenumber-js/source/format.js","../../../node_modules/libphonenumber-js/source/PhoneNumber.js","../../../node_modules/libphonenumber-js/source/ParseError.js","../../../node_modules/libphonenumber-js/source/helpers/extension/extractExtension.js","../../../node_modules/libphonenumber-js/source/helpers/parseDigits.js","../../../node_modules/libphonenumber-js/source/parseIncompletePhoneNumber.js","../../../node_modules/libphonenumber-js/source/helpers/extractPhoneContext.js","../../../node_modules/libphonenumber-js/source/helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js","../../../node_modules/libphonenumber-js/source/parse.js","../../../node_modules/libphonenumber-js/source/parsePhoneNumberWithError_.js","../../../node_modules/libphonenumber-js/source/normalizeArguments.js","../../../node_modules/libphonenumber-js/source/parsePhoneNumber_.js","../../../node_modules/libphonenumber-js/source/parsePhoneNumber.js","../../../node_modules/libphonenumber-js/min/exports/parsePhoneNumber.js","../../sdk/src/api/base.ts","../../sdk/src/api/abilities.ts","../../sdk/src/api/access-grants.ts","../../sdk/src/api/agent-tasks.ts","../../sdk/src/api/agents.ts","../../sdk/src/api/ai-models.ts","../../sdk/src/api/api-keys.ts","../../sdk/src/api/apps.ts","../../sdk/src/api/assignments.ts","../../sdk/src/api/voice.ts","../../sdk/src/api/auth.ts","../../sdk/src/api/builders.ts","../../sdk/src/api/calendars.ts","../../sdk/src/api/calls.ts","../../sdk/src/api/cel.ts","../../sdk/src/api/chats.ts","../../sdk/src/api/confluence.ts","../../sdk/src/api/custom-toolkits.ts","../../sdk/src/api/data-types.ts","../../sdk/src/api/discord-bots.ts","../../sdk/src/api/slack-apps.ts","../../sdk/src/api/events.ts","../../sdk/src/api/features.ts","../../sdk/src/api/fhir-connections.ts","../../sdk/src/api/healthie.ts","../../sdk/src/api/files.ts","../../sdk/src/api/inboxes.ts","../../sdk/src/api/inquiries.ts","../../sdk/src/api/app-connections.ts","../../sdk/src/api/mcp-servers.ts","../../sdk/src/api/members.ts","../../sdk/src/api/milestones.ts","../../sdk/src/api/monday.ts","../../sdk/src/api/notification-rules.ts","../../sdk/src/api/operator-groups.ts","../../sdk/src/api/org.ts","../../sdk/src/api/oauth.ts","../../sdk/src/api/phone-numbers.ts","../../sdk/src/api/pronunciations.ts","../../sdk/src/api/prompts.ts","../../sdk/src/api/personas.ts","../../sdk/src/api/qualifications.ts","../../sdk/src/api/reports.ts","../../sdk/src/api/salesforce.ts","../../sdk/src/api/connection-sync.ts","../../sdk/src/api/hubspot.ts","../../sdk/src/api/sites.ts","../../sdk/src/api/subscriptions.ts","../../sdk/src/api/support-requests.ts","../../sdk/src/api/customers.ts","../../sdk/src/api/resellers.ts","../../sdk/src/api/supervisors.ts","../../sdk/src/api/tasks.ts","../../sdk/src/api/templates.ts","../../sdk/src/api/toolkits.ts","../../sdk/src/api/journeys.ts","../../sdk/src/api/workflows.ts","../../sdk/src/api/workflow-notes.ts","../../sdk/src/types/event-types.ts","../../sdk/src/api/workspace-invitations.ts","../../sdk/src/api/workspaces.ts","../../sdk/src/api/teams-apps.ts","../../sdk/src/api/experiments.ts","../../sdk/src/client/api-modules.ts","../../sdk/src/client/bindings/access-grants.ts","../../sdk/src/client/bindings/agent-tasks.ts","../../sdk/src/client/bindings/agents.ts","../../sdk/src/client/bindings/tasks.ts","../../sdk/src/client/bindings/chats.ts","../../sdk/src/client/bindings/calls.ts","../../sdk/src/client/bindings/data-types.ts","../../sdk/src/client/bindings/members.ts","../../sdk/src/client/bindings/workspaces.ts","../../sdk/src/client/bindings/auth.ts","../../sdk/src/client/bindings/sites.ts","../../sdk/src/client/bindings/files.ts","../../sdk/src/client/bindings/events.ts","../../sdk/src/client/bindings/experiments.ts","../../sdk/src/client/bindings/workflows.ts","../../sdk/src/client/bindings/calendars.ts","../../sdk/src/client/bindings/communications.ts","../../sdk/src/client/bindings/toolkits.ts","../../sdk/src/client/bindings/billing.ts","../../sdk/src/client/bindings/apps.ts","../../sdk/src/client/bindings/integrations.ts","../../sdk/src/client/bindings/operator-groups.ts","../../sdk/src/client/bindings/org.ts","../../sdk/src/client/bindings/pronunciations.ts","../../sdk/src/client/bindings/journeys.ts","../../sdk/src/client/bindings/qualifications.ts","../../sdk/src/client/bindings/personas.ts","../../sdk/src/client/bindings/customers.ts","../../sdk/src/client/bindings/resellers.ts","../../sdk/src/client/bindings/prompts.ts","../../sdk/src/client/bindings/support-requests.ts","../../sdk/src/client/client.ts","../../sdk/src/constants/chat-types.ts","../../client/src/api/admin.ts","../../client/src/client/bindings/admin.ts","../../client/src/client/client.ts","../src/lib/pagination.ts","../src/lib/output.ts","../src/lib/org-auth.ts","../src/lib/context.ts","../src/lib/concierge-api.ts"],"names":["resolve","join","existsSync","readFileSync","a","b","split","pa","pb","i","na","Number","nb","isNaN","objectConstructor","constructor","object","undefined","V3","V4","DEFAULT_EXT_PREFIX","CALLING_CODE_REG_EXP","Metadata","metadata","_classCallCheck","validateMetadata","setVersion","call","_createClass","key","value","getCountries","Object","keys","countries","filter","_","getCountryMetadata","countryCode","nonGeographic","v1","v2","v3","nonGeographical","hasCountry","country","hasCallingCode","callingCode","getCountryCodesForCallingCode","countryCodes","countryCallingCodes","length","isNonGeographicCallingCode","selectNumberingPlan","test","Error","concat","numberingPlan","NumberingPlan","getNumberingPlanMetadata","getCountryCodeForCallingCode","countryCallingCode","IDDPrefix","defaultIDDPrefix","nationalNumberPattern","possibleLengths","formats","nationalPrefixForParsing","nationalPrefixTransformRule","leadingDigits","hasTypes","type","ext","country_phone_code_to_countries","country_calling_codes","chooseCountryByCountryCallingCode","hasSelectedNumberingPlan","globalMetadataObject","getDefaultCountryMetadataForRegion","_getFormats","_this","map","Format","nationalPrefix","_getNationalPrefixFormattingRule","nationalPrefixFormattingRule","_nationalPrefixForParsing","_getNationalPrefixIsOptionalWhenFormatting","nationalPrefixIsOptionalWhenFormattingInNationalFormat","types","getType","Type","format","_format","pattern","leadingDigitsPatterns","nationalPrefixIsMandatoryWhenFormattingInNationalFormat","usesNationalPrefix","FIRST_GROUP_ONLY_PREFIX_PATTERN","internationalFormat","isObject","typeOf","_typeof","getCountryCallingCode","isSupportedCountry","hasOwnProperty","version","v4","compare","nationalNumber","checkNumberLengthForType","type_info","possible_lengths","actual_length","minimum_length","indexOf","input","options","phone","isPossibleNumber","checkNumberLength","text","regularExpressionText","RegExp","NON_FIXED_LINE_PHONE_TYPES","matchesEntirely","isNumberTypeEqualTo","_iterator","_createForOfIteratorHelperLoose","_step","done","typeDefinition","getNumberType","_metadata","possibleCountries","couldNationalNumberBelongToCountry","MIN_LENGTH_FOR_NSN","MAX_LENGTH_FOR_NSN","MAX_LENGTH_COUNTRY_CODE","VALID_DIGITS","DASHES","SLASHES","DOTS","WHITESPACE","BRACKETS","TILDES","VALID_PUNCTUATION","PLUS_CHARS","CAPTURING_DIGIT_PATTERN","number","countryMetadata","IDDPrefixPattern","search","slice","match","matchedGroups","prefixPattern","prefixMatch","exec","carrierCode","capturedGroupsCount","hasCapturedGroups","replace","prefixBeforeNationalNumber","possiblePositionOfTheFirstCapturedGroup","possibleNationalPrefix","nationalPhoneNumber","_ref","getCountryByNationalNumber","_extractNationalNumbe","extractNationalNumberFromPossiblyIncompleteNumber","shouldHaveExtractedNationalPrefix","getCountryByCallingCode","isPossibleIncompleteNationalNumber","nationalNumberBefore","nationalNumberAfter","defaultCountry","defaultCallingCode","possibleShorterNumber","extractNationalNumber","possibleShorterNationalNumber","_extractNationalNumbe2","isNumberWithIddPrefix","numberWithoutIDD","stripIddPrefix","_extractCountryCallin","extractCountryCallingCodeFromInternationalNumberWithoutPlusSign","shorterNumber","countryCallingCodeSource","formattedNumber","trim","FIRST_GROUP_PATTERN","useInternationalFormat","withNationalPrefix","applyInternationalSeparatorStyle","SINGLE_IDD_PREFIX_REG_EXP","RFC3966_EXTN_PREFIX","getExtensionDigitsPattern","maxLength","purpose","extLimitAfterExplicitLabel","extLimitAfterLikelyLabel","extLimitAfterAmbiguousChar","extLimitWhenNotSure","possibleSeparatorsBetweenNumberAndExtLabel","possibleCharsAfterExtLabel","optionalExtnSuffix","explicitExtLabels","ambiguousExtLabels","ambiguousSeparator","possibleSeparatorsNumberExtLabelNoComma","autoDiallingAndExtLabelsFound","rfcExtn","explicitExtn","ambiguousExtn","americanStyleExtnWithSuffix","autoDiallingExtn","onlyCommasExtn","MIN_LENGTH_PHONE_NUMBER_PATTERN","VALID_PHONE_NUMBER","VALID_PHONE_NUMBER_START_REG_EXP","VALID_PHONE_NUMBER_WITH_EXTENSION","createExtensionPattern","VALID_PHONE_NUMBER_PATTERN","isViablePhoneNumberStart","formatRFC3966","DEFAULT_OPTIONS","formatExtension","extension","merge","formatNationalNumber","addExtension","fromCountry","formatIDD","formatAs","chooseFormatForNumber","formatNationalNumberUsingFormat","availableFormats","pickFirstMatchingElement","lastLeadingDigitsPattern","fromCountryCallingCode","iddPrefix","getIddPrefix","_len","arguments","objects","Array","_key","elements","testFunction","PhoneNumber","countryOrCountryCallingCode","TypeError","e164Number","E164_NUMBER_REGEXP","extractCountryCallingCode","_getCountryAndCountry","getCountryAndCountryCallingCode","getMetadata","setExt","getPossibleCountries","getPossibleCountriesForNumber","isPossible","isValid","isValidNumber","isNonGeographic","isEqual","phoneNumber","formatNumber","_objectSpread","formatNational","formatInternational","getURI","isCountryCode","metadataJson","ParseError","_Error","code","_callSuper","setPrototypeOf","prototype","name","_inherits","_wrapNativeSuper","EXTN_PATTERN","start","numberWithoutExtension","matches","DIGITS","parseDigit","character","string","result","parsePhoneNumberCharacter","prevParsedCharacters","eventListener","PLUS_SIGN","RFC3966_VISUAL_SEPARATOR_","RFC3966_PHONE_DIGIT_","RFC3966_GLOBAL_NUMBER_DIGITS_","RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_","ALPHANUM_","RFC3966_DOMAINLABEL_","VALID_ALPHA_","RFC3966_TOPLABEL_","RFC3966_DOMAINNAME_","RFC3966_DOMAINNAME_PATTERN_","RFC3966_PREFIX_","RFC3966_PHONE_CONTEXT_","RFC3966_ISDN_SUBADDRESS_","numberToExtractFrom","indexOfPhoneContext","phoneContextStart","phoneContextEnd","substring","isPhoneContextValid","phoneContext","numberToParse","extractFormattedPhoneNumber","extractPhoneContext","phoneNumberString","charAt","indexOfRfc3966Prefix","indexOfNationalNumber","indexOfIsdn","MAX_INPUT_STRING_LENGTH","PHONE_NUMBER_START_PATTERN","AFTER_PHONE_NUMBER_END_PATTERN","_parseInput","parseInput","extract","formattedPhoneNumber","error","_parsePhoneNumber","parsePhoneNumber","__countryCallingCodeSource","valid","extended","possible","throwOnError","startsAt","extractFormattedPhoneNumberFromPossibleRfc3966NumberUri","isViablePhoneNumber","withExtensionStripped","extractExtension","parseIncompletePhoneNumber","exactCountry","parse","args","_Array$prototype$slic","_Array$prototype$slic2","_slicedToArray","arg_1","arg_2","arg_3","arg_4","parsePhoneNumberWithError","_normalizeArguments","normalizeArguments","parsePhoneNumber_","baseUrl","EventRuleEventType","supportRequestParams","stderr","openBrowser"],"mappings":"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AAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,MAAK,CAAC,IAAI,GAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,GAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,MAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAA,EAAK,IAAI,GAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,GAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,MAAK,CAAC,IAAA,EAAK,IAAA,EAAK,IAAA,EAAK,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,MAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAA,EAAK,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,MAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,GAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,GAAE,IAAA,EAAK,CAAC,IAAA,EAAK,IAAA,EAAK,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,MAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,GAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,GAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,MAAK,CAAC,IAAI,GAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,IAAA,EAAK,CAAC,IAAI,GAAE,IAAA,EAAK,CAAC,IAAI,CAAA,EAAE,MAAK,CAAC,I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","file":"chunk-3EO4COHB.js","sourcesContent":["/**\n * CLI terminal UI utilities\n *\n * Provides interactive terminal UI components for CLI tools\n */\n\nimport * as readline from 'readline';\n\nexport interface SelectOption<T> {\n item: T;\n label: string;\n detail?: string;\n}\n\nexport interface SelectFromListOptions<T> {\n title?: string;\n labelFn?: (item: T) => string;\n detailFn?: (item: T) => string | null;\n env?: string;\n emptyMessage?: string;\n allowNew?: boolean;\n newLabel?: string;\n}\n\nexport interface SelectResult<T> {\n item: T | null;\n isNew: boolean;\n}\n\nconst NEW_ITEM_MARKER = Symbol('NEW_ITEM');\n\n/**\n * Interactive list picker using arrow keys\n */\nexport async function selectFromList<T>(\n items: T[],\n options: SelectFromListOptions<T> = {}\n): Promise<SelectResult<T>> {\n const {\n title = 'Select an item',\n labelFn = (item: T) => String((item as any).name || (item as any).title || item),\n detailFn = null,\n env = null,\n emptyMessage = 'No items found.',\n allowNew = false,\n newLabel = 'Create new...',\n } = options;\n\n if ((!items || items.length === 0) && !allowNew) {\n console.log(`\\n ${emptyMessage}`);\n return { item: null, isNew: false };\n }\n\n // Prepend \"Create new\" option if allowed\n const displayItems: (T | typeof NEW_ITEM_MARKER)[] = allowNew\n ? [NEW_ITEM_MARKER, ...items]\n : items;\n\n return new Promise((resolve) => {\n let selectedIndex = allowNew ? 1 : 0;\n let filterText = '';\n\n const getFilteredItems = (): (T | typeof NEW_ITEM_MARKER)[] => {\n if (!filterText) return displayItems;\n const lower = filterText.toLowerCase();\n return displayItems.filter((item) => {\n if (item === NEW_ITEM_MARKER) return true;\n const label = labelFn(item);\n return label.toLowerCase().includes(lower);\n });\n };\n\n const render = (): void => {\n const filtered = getFilteredItems();\n\n // Clear screen and move cursor to top\n process.stdout.write('\\x1B[2J\\x1B[H');\n\n console.log('='.repeat(60));\n console.log(`${title} (↑/↓ to move, Enter to select, Esc to cancel)`);\n console.log('='.repeat(60));\n if (env) {\n console.log(`Environment: ${env}`);\n }\n console.log(`Filter: ${filterText}${filterText ? '' : '(type to filter)'}`);\n console.log('');\n\n if (filtered.length === 0) {\n console.log(` ${emptyMessage}`);\n console.log('');\n return;\n }\n\n // Show up to 15 items around the selected one\n const maxVisible = 15;\n let startIdx = Math.max(0, selectedIndex - Math.floor(maxVisible / 2));\n let endIdx = Math.min(filtered.length, startIdx + maxVisible);\n if (endIdx - startIdx < maxVisible && startIdx > 0) {\n startIdx = Math.max(0, endIdx - maxVisible);\n }\n\n if (startIdx > 0) {\n console.log(` ... ${startIdx} more above ...`);\n }\n\n for (let i = startIdx; i < endIdx; i++) {\n const item = filtered[i]!;\n const prefix = i === selectedIndex ? '> ' : ' ';\n\n let line: string;\n if (item === NEW_ITEM_MARKER) {\n line = `\\x1B[32m${newLabel}\\x1B[0m`; // Green color for \"Create new\"\n } else {\n const typedItem = item as T;\n line = labelFn(typedItem);\n if (detailFn) {\n const detail = detailFn(typedItem);\n if (detail) {\n line = `${line} \\x1B[90m${detail}\\x1B[0m`;\n }\n }\n }\n\n if (i === selectedIndex) {\n console.log(`\\x1B[7m${prefix}${line}\\x1B[0m`);\n } else {\n console.log(`${prefix}${line}`);\n }\n }\n\n if (endIdx < filtered.length) {\n console.log(` ... ${filtered.length - endIdx} more below ...`);\n }\n\n console.log('');\n console.log(` ${filtered.length} item(s)`);\n };\n\n // Set up raw mode for arrow key input\n readline.emitKeypressEvents(process.stdin);\n if (process.stdin.isTTY) {\n process.stdin.setRawMode(true);\n }\n\n render();\n\n const handleKeypress = (str: string | undefined, key: readline.Key): void => {\n const filtered = getFilteredItems();\n\n if (key.name === 'up') {\n selectedIndex = Math.max(0, selectedIndex - 1);\n render();\n } else if (key.name === 'down') {\n selectedIndex = Math.min(filtered.length - 1, selectedIndex + 1);\n render();\n } else if (key.name === 'return') {\n cleanup();\n if (filtered.length > 0 && selectedIndex < filtered.length) {\n const selected = filtered[selectedIndex]!;\n if (selected === NEW_ITEM_MARKER) {\n resolve({ item: null, isNew: true });\n } else {\n resolve({ item: selected as T, isNew: false });\n }\n } else {\n resolve({ item: null, isNew: false });\n }\n } else if (key.name === 'escape' || (key.ctrl && key.name === 'c')) {\n cleanup();\n resolve({ item: null, isNew: false });\n } else if (key.name === 'backspace') {\n filterText = filterText.slice(0, -1);\n selectedIndex = allowNew ? 0 : 0;\n render();\n } else if (str && str.length === 1 && !key.ctrl && !key.meta) {\n filterText += str;\n selectedIndex = allowNew ? 0 : 0;\n render();\n }\n };\n\n const cleanup = (): void => {\n process.stdin.removeListener('keypress', handleKeypress);\n if (process.stdin.isTTY) {\n process.stdin.setRawMode(false);\n }\n process.stdin.pause();\n process.stdout.write('\\x1B[2J\\x1B[H');\n };\n\n process.stdin.on('keypress', handleKeypress);\n process.stdin.resume();\n });\n}\n\n/**\n * Print a table of items\n */\nexport function printTable<T>(\n items: T[],\n columns: Array<{\n header: string;\n getValue: (item: T) => string;\n maxWidth?: number;\n }>,\n options: { title?: string; env?: string } = {}\n): void {\n if (!items || items.length === 0) {\n console.log('\\nNo items found.');\n return;\n }\n\n if (options.title) {\n console.log(`\\n=== ${options.title} ===`);\n }\n if (options.env) {\n console.log(`Environment: ${options.env}`);\n }\n console.log('');\n\n // Calculate column widths\n const widths = columns.map((col) => {\n const maxContent = Math.max(...items.map((item) => String(col.getValue(item) ?? '').length));\n const width = Math.max(col.header.length, maxContent);\n return col.maxWidth ? Math.min(width, col.maxWidth) : width;\n });\n\n // Print header\n const headerLine = columns.map((col, i) => col.header.padEnd(widths[i]!)).join(' ');\n console.log(headerLine);\n console.log(widths.map((w) => '-'.repeat(w)).join(' '));\n\n // Print rows\n for (const item of items) {\n const row = columns\n .map((col, i) => {\n const value = String(col.getValue(item) ?? '');\n const width = widths[i]!;\n return value.slice(0, width).padEnd(width);\n })\n .join(' ');\n console.log(row);\n }\n\n console.log('');\n console.log(`Total: ${items.length} item(s)`);\n}\n\n/**\n * Format a timestamp for display\n */\nexport function formatTimestamp(isoString: string | null | undefined): string {\n if (!isoString) return '';\n const date = new Date(isoString);\n const now = new Date();\n const diff = now.getTime() - date.getTime();\n\n if (diff < 60000) return 'just now';\n if (diff < 3600000) return `${Math.floor(diff / 60000)}m ago`;\n if (diff < 86400000) return `${Math.floor(diff / 3600000)}h ago`;\n if (diff < 604800000) return `${Math.floor(diff / 86400000)}d ago`;\n\n return date.toLocaleDateString();\n}\n\n/**\n * Wrap text to a maximum width\n */\nexport function wrapText(text: string, width: number = 70): string[] {\n const words = text.split(' ');\n const lines: string[] = [];\n let currentLine = '';\n\n for (const word of words) {\n if (currentLine.length + word.length + 1 <= width) {\n currentLine += (currentLine ? ' ' : '') + word;\n } else {\n if (currentLine) lines.push(currentLine);\n currentLine = word;\n }\n }\n if (currentLine) lines.push(currentLine);\n return lines;\n}\n\n/**\n * Print a chat message with formatting\n */\nexport function printMessage(\n content: string,\n role: 'user' | 'assistant' | 'system',\n indent: string = ' '\n): void {\n const roleColors: Record<string, string> = {\n user: '\\x1B[34m', // Blue\n assistant: '\\x1B[32m', // Green\n system: '\\x1B[90m', // Gray\n };\n const resetColor = '\\x1B[0m';\n const color = roleColors[role] || resetColor;\n\n const label = role === 'user' ? 'You' : role === 'assistant' ? 'Assistant' : 'System';\n console.log(`${indent}${color}[${label}]${resetColor}`);\n\n const lines = content.split('\\n');\n for (const line of lines) {\n const wrapped = wrapText(line, 70);\n for (const wrappedLine of wrapped) {\n console.log(`${indent} ${wrappedLine}`);\n }\n }\n console.log('');\n}\n\n/**\n * Clear the terminal screen\n */\nexport function clearScreen(): void {\n process.stdout.write('\\x1B[2J\\x1B[H');\n}\n","/**\n * CLI configuration for remote environments\n */\n\nimport { existsSync, readFileSync } from 'fs';\nimport { dirname, join, resolve } from 'path';\n\nexport interface EnvironmentConfig {\n apiUrl: string;\n frontendUrl: string;\n}\n\nexport const ENVIRONMENTS: Record<string, EnvironmentConfig> = {\n dev: {\n apiUrl: 'https://api.gravityrail.test:5054',\n frontendUrl: 'https://app.gravityrail.test:3000',\n },\n prod: {\n apiUrl: 'https://api.gravityrail.com',\n frontendUrl: 'https://app.gravityrail.com',\n },\n staging: {\n apiUrl: 'https://api.gr-staging.com',\n frontendUrl: 'https://app.gr-staging.com',\n },\n};\n\nexport const CALLBACK_PORT = 31337;\nexport const CALLBACK_PATH = '/oauth/callback';\nexport const REDIRECT_URI = `http://localhost:${CALLBACK_PORT}${CALLBACK_PATH}`;\n\n/**\n * Detect worktree port overrides from docker-compose.override.yml.\n * The override file is generated by worktree-setup.sh and contains lines like:\n * - '5250:5050' (API)\n * - '3200:3000' (Frontend)\n * We extract the host port for the default internal ports (5050, 3000).\n */\nfunction detectWorktreePorts(): { apiPort?: number; frontendPort?: number } {\n // Walk up from cwd to find docker-compose.override.yml\n let dir = resolve(process.cwd());\n let overridePath: string | undefined;\n while (true) {\n const candidate = join(dir, 'docker-compose.override.yml');\n\n if (existsSync(candidate)) {\n overridePath = candidate;\n break;\n }\n const parent = dirname(dir);\n if (parent === dir) break; // reached filesystem root\n dir = parent;\n }\n if (!overridePath) return {};\n\n let content: string;\n try {\n content = readFileSync(overridePath, 'utf-8');\n } catch {\n return {};\n }\n\n // Only use this if it's a worktree override (generated by worktree-setup.sh)\n if (!content.includes('worktree-setup.sh')) return {};\n\n // Match port mappings: - 'HOST:CONTAINER'\n let apiPort: number | undefined;\n let frontendPort: number | undefined;\n for (const match of content.matchAll(/-\\s*'(\\d+):(\\d+)'/g)) {\n const host = parseInt(match[1]!, 10);\n const container = parseInt(match[2]!, 10);\n if (container === 5050) apiPort = host;\n if (container === 3000) frontendPort = host;\n }\n return { apiPort, frontendPort };\n}\n\nexport function getEnvironmentConfig(env: string): EnvironmentConfig {\n // Handle dev-cloud environments: --env dev-cloud:NAMESPACE\n if (env.startsWith('dev-cloud:')) {\n const namespace = env.slice('dev-cloud:'.length);\n if (!namespace) {\n throw new Error('dev-cloud environment requires a namespace: --env dev-cloud:NAMESPACE');\n }\n return {\n apiUrl: `https://${namespace}-api.gravityrail-dev.com`,\n frontendUrl: `https://${namespace}-app.gravityrail-dev.com`,\n };\n }\n\n const config = ENVIRONMENTS[env];\n if (!config) {\n throw new Error(\n `Invalid environment: ${env}. Use 'dev', 'staging', 'prod', or 'dev-cloud:NAMESPACE'.`\n );\n }\n\n // Allow env var overrides (used by code interpreter sandboxes)\n const apiUrl = process.env.GRAVITY_RAIL_API_URL || config.apiUrl;\n const frontendUrl = process.env.GRAVITY_RAIL_FRONTEND_URL || config.frontendUrl;\n if (apiUrl !== config.apiUrl || frontendUrl !== config.frontendUrl) {\n return { apiUrl, frontendUrl };\n }\n\n // For dev, detect worktree port overrides\n if (env === 'dev') {\n const ports = detectWorktreePorts();\n if (ports.apiPort || ports.frontendPort) {\n return {\n apiUrl: ports.apiPort ? `https://api.gravityrail.test:${ports.apiPort}` : config.apiUrl,\n frontendUrl: ports.frontendPort\n ? `https://app.gravityrail.test:${ports.frontendPort}`\n : config.frontendUrl,\n };\n }\n }\n\n return config;\n}\n","/**\n * CLI OAuth2 authentication utilities\n *\n * Provides OAuth2 with PKCE flow for CLI tools, including:\n * - Credential caching (per environment)\n * - Dynamic client registration\n * - Token refresh\n * - Browser-based authorization\n */\n\nimport { createServer } from 'http';\nimport { createHash, randomBytes } from 'crypto';\nimport { readFileSync, writeFileSync, existsSync, mkdirSync, chmodSync, unlinkSync } from 'fs';\nimport { join } from 'path';\nimport { exec } from 'child_process';\nimport { EnvironmentConfig, CALLBACK_PORT, CALLBACK_PATH, REDIRECT_URI } from './config';\n\nexport interface CLICredentials {\n clientId: string;\n clientSecret: string;\n accessToken?: string;\n refreshToken?: string;\n expiresAt?: string;\n}\n\nexport interface AuthResult {\n accessToken: string;\n credentials?: CLICredentials;\n}\n\n/**\n * Manages CLI credentials storage (flat format, one file per environment)\n */\nexport class CredentialsManager {\n private cacheDir: string;\n private apiUrl?: string;\n\n constructor(rootDir: string, apiUrl?: string) {\n this.cacheDir = join(rootDir, '.gr-cli');\n this.apiUrl = apiUrl;\n }\n\n private getCredentialsPath(env: string): string {\n // For localhost dev URLs with non-default ports (worktrees), include the\n // port in the filename so each worktree has isolated credentials.\n if (this.apiUrl) {\n try {\n const url = new URL(this.apiUrl);\n if (url.hostname === 'localhost' && url.port && url.port !== '5050') {\n return join(this.cacheDir, `credentials-${env}-${url.port}.json`);\n }\n } catch {\n // ignore invalid URLs\n }\n }\n return join(this.cacheDir, `credentials-${env}.json`);\n }\n\n load(env: string): CLICredentials | null {\n const credsPath = this.getCredentialsPath(env);\n if (!existsSync(credsPath)) {\n return null;\n }\n\n try {\n const raw = JSON.parse(readFileSync(credsPath, 'utf-8'));\n\n let creds: CLICredentials;\n if (raw.clientId !== undefined) {\n creds = raw;\n } else if (raw.default) {\n // Migrate from old org-namespaced format to flat\n creds = raw.default;\n this.save(env, creds);\n } else {\n return null;\n }\n\n // Check if access token is expired\n if (creds.expiresAt) {\n const expiresAt = new Date(creds.expiresAt);\n if (expiresAt <= new Date()) {\n if (creds.refreshToken) {\n return creds;\n }\n return null;\n }\n }\n\n return creds;\n } catch {\n return null;\n }\n }\n\n save(env: string, creds: CLICredentials): void {\n if (!existsSync(this.cacheDir)) {\n mkdirSync(this.cacheDir, { recursive: true });\n }\n const credsPath = this.getCredentialsPath(env);\n writeFileSync(credsPath, JSON.stringify(creds, null, 2));\n try {\n chmodSync(credsPath, 0o600);\n } catch {\n // Ignore permission errors on Windows\n }\n }\n\n clear(env: string): void {\n const credsPath = this.getCredentialsPath(env);\n if (!existsSync(credsPath)) {\n return;\n }\n try {\n unlinkSync(credsPath);\n } catch {\n // Ignore\n }\n }\n\n getCacheDir(): string {\n return this.cacheDir;\n }\n}\n\nfunction stderr(msg: string): void {\n process.stderr.write(msg + '\\n');\n}\n\n/**\n * Parse an OAuth error response body, checking the JSON `error` field first,\n * falling back to text matching.\n */\nfunction isOAuthError(body: string, errorCode: string): boolean {\n try {\n const parsed = JSON.parse(body);\n if (parsed.error === errorCode) return true;\n } catch {\n // Not JSON — fall through to text match\n }\n return body.includes(errorCode);\n}\n\n/**\n * Validate and extract fields from an OAuth token response.\n * Throws on malformed responses per RFC 6749 §5.1.\n */\nfunction validateTokenResponse(tokenData: Record<string, unknown>): {\n accessToken: string;\n refreshToken?: string;\n expiresIn: number;\n} {\n if (!tokenData.access_token || typeof tokenData.access_token !== 'string') {\n throw new Error('Token response missing access_token');\n }\n\n if (tokenData.token_type && String(tokenData.token_type).toLowerCase() !== 'bearer') {\n throw new Error(`Unsupported token type: ${tokenData.token_type}`);\n }\n\n let expiresIn = 86400; // default 24h\n if (tokenData.expires_in != null) {\n const raw = Number(tokenData.expires_in);\n if (!Number.isFinite(raw) || raw < 60 || raw > 31536000) {\n stderr(` Warning: unusual expires_in value (${tokenData.expires_in}), using default`);\n } else {\n expiresIn = raw;\n }\n }\n\n return {\n accessToken: tokenData.access_token,\n refreshToken:\n typeof tokenData.refresh_token === 'string' ? tokenData.refresh_token : undefined,\n expiresIn,\n };\n}\n\n/**\n * Generate PKCE code verifier and challenge\n */\nexport function generatePKCE(): { codeVerifier: string; codeChallenge: string } {\n const codeVerifier = randomBytes(64).toString('base64url').slice(0, 128);\n const codeChallenge = createHash('sha256').update(codeVerifier).digest('base64url');\n return { codeVerifier, codeChallenge };\n}\n\n/**\n * Open a URL in the default browser\n */\nexport function openBrowser(url: string): void {\n const platform = process.platform;\n let cmd: string;\n if (platform === 'darwin') {\n cmd = `open \"${url}\"`;\n } else if (platform === 'win32') {\n cmd = `start \"\" \"${url}\"`;\n } else {\n cmd = `xdg-open \"${url}\"`;\n }\n\n exec(cmd, (err) => {\n if (err) {\n stderr(' Could not open browser automatically.');\n }\n });\n}\n\n/**\n * Start a local HTTP server to receive the OAuth callback\n */\nexport function startCallbackServer(): Promise<{ code: string; state: string }> {\n return new Promise((resolve, reject) => {\n let authCode: string | null = null;\n let error: string | null = null;\n let receivedState: string | null = null;\n\n const server = createServer((req, res) => {\n const url = new URL(req.url!, `http://localhost:${CALLBACK_PORT}`);\n\n if (url.pathname !== CALLBACK_PATH) {\n res.writeHead(404);\n res.end('Not found');\n return;\n }\n\n if (url.searchParams.has('error')) {\n error = url.searchParams.get('error');\n const errorDesc = url.searchParams.get('error_description') || 'Unknown error';\n res.writeHead(200, { 'Content-Type': 'text/html' });\n res.end(`\n <html>\n <head><title>Authorization Failed</title></head>\n <body style=\"font-family: system-ui; text-align: center; padding: 50px;\">\n <h1 style=\"color: #dc2626;\">Authorization Failed</h1>\n <p>${errorDesc}</p>\n <p>You can close this window.</p>\n </body>\n </html>\n `);\n server.close();\n reject(new Error(`Authorization failed: ${error}`));\n } else if (url.searchParams.has('code')) {\n authCode = url.searchParams.get('code')!;\n receivedState = url.searchParams.get('state')!;\n res.writeHead(200, { 'Content-Type': 'text/html' });\n res.end(`\n <html>\n <head><title>Authorization Successful</title></head>\n <body style=\"font-family: system-ui; text-align: center; padding: 50px;\">\n <h1 style=\"color: #16a34a;\">Authorization Successful!</h1>\n <p>You can close this window and return to the terminal.</p>\n <script>setTimeout(() => window.close(), 2000);</script>\n </body>\n </html>\n `);\n server.close();\n resolve({ code: authCode, state: receivedState });\n } else {\n res.writeHead(400);\n res.end('Missing code parameter');\n }\n });\n\n server.listen(CALLBACK_PORT, 'localhost', () => {\n // Server started\n });\n\n // Timeout after 5 minutes (unref so it doesn't keep the process alive)\n const timeout = setTimeout(\n () => {\n if (!authCode && !error) {\n server.close();\n reject(new Error('Authorization timeout - no response received'));\n }\n },\n 5 * 60 * 1000\n );\n timeout.unref();\n });\n}\n\n/**\n * Register a new OAuth client dynamically\n */\nasync function dynamicClientRegistration(\n envConfig: EnvironmentConfig,\n clientName: string = 'Gravity CLI'\n): Promise<{ client_id: string; client_secret: string }> {\n stderr(' Registering OAuth client...');\n\n const registrationUrl = `${envConfig.apiUrl}/api/v2/oauth/register`;\n\n const registrationData = {\n client_name: clientName,\n redirect_uris: [REDIRECT_URI],\n grant_types: ['authorization_code', 'refresh_token'],\n response_types: ['code'],\n token_endpoint_auth_method: 'client_secret_basic',\n scope: 'workspace:admin',\n };\n\n const response = await fetch(registrationUrl, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(registrationData),\n });\n\n if (!response.ok) {\n throw new Error(`Client registration failed: ${response.status} - ${await response.text()}`);\n }\n\n return (await response.json()) as { client_id: string; client_secret: string };\n}\n\nexport interface OAuthFlowOptions {\n env: string;\n envConfig: EnvironmentConfig;\n credentialsManager: CredentialsManager;\n clientName?: string;\n}\n\n/**\n * Perform the full OAuth2 browser-based flow with PKCE.\n *\n * This always opens the browser for authorization. It never returns a cached\n * token — that's the job of createAuthenticatedContext. The only thing reused\n * is the registered OAuth client ID (which is identity, not auth).\n */\nexport async function performOAuthFlow(options: OAuthFlowOptions): Promise<AuthResult> {\n const { env, envConfig, credentialsManager, clientName = 'Gravity CLI' } = options;\n let hasRetried = false;\n\n while (true) {\n // Reuse registered client credentials if available, otherwise register\n let creds = credentialsManager.load(env);\n if (!creds || !creds.clientId) {\n const registration = await dynamicClientRegistration(envConfig, clientName);\n creds = {\n clientId: registration.client_id,\n clientSecret: registration.client_secret,\n };\n credentialsManager.save(env, creds);\n } else {\n stderr(' Using cached client credentials');\n }\n\n const { codeVerifier, codeChallenge } = generatePKCE();\n const state = randomBytes(32).toString('base64url');\n\n const authParams = new URLSearchParams({\n response_type: 'code',\n client_id: creds.clientId,\n redirect_uri: REDIRECT_URI,\n scope: 'workspace:admin',\n state: state,\n code_challenge: codeChallenge,\n code_challenge_method: 'S256',\n });\n\n const authUrl = `${envConfig.apiUrl}/api/v2/oauth/authorize?${authParams}`;\n\n const callbackPromise = startCallbackServer();\n\n stderr('\\n Opening browser for authorization...');\n stderr(` If browser doesn't open, visit:\\n ${authUrl}\\n`);\n openBrowser(authUrl);\n\n stderr(' Waiting for authorization (timeout: 5 minutes)...');\n let code: string;\n let receivedState: string;\n try {\n ({ code, state: receivedState } = await callbackPromise);\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n if (!hasRetried && isOAuthError(msg, 'invalid_client')) {\n stderr(' Cached client credentials expired, re-registering...');\n credentialsManager.clear(env);\n hasRetried = true;\n continue;\n }\n throw err;\n }\n\n if (receivedState !== state) {\n throw new Error('State mismatch - possible CSRF attack');\n }\n\n stderr(' Authorization code received!');\n stderr(' Exchanging code for tokens...');\n\n const tokenUrl = `${envConfig.apiUrl}/api/v2/oauth/token`;\n const authHeader = Buffer.from(`${creds.clientId}:${creds.clientSecret}`).toString('base64');\n\n const tokenResponse = await fetch(tokenUrl, {\n method: 'POST',\n headers: {\n Authorization: `Basic ${authHeader}`,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: new URLSearchParams({\n grant_type: 'authorization_code',\n code: code,\n redirect_uri: REDIRECT_URI,\n code_verifier: codeVerifier,\n }),\n });\n\n if (!tokenResponse.ok) {\n const body = await tokenResponse.text();\n if (!hasRetried && isOAuthError(body, 'invalid_client')) {\n stderr(' Cached client credentials expired, re-registering...');\n credentialsManager.clear(env);\n hasRetried = true;\n continue;\n }\n throw new Error(`Token exchange failed: ${tokenResponse.status} - ${body}`);\n }\n\n const tokenData = (await tokenResponse.json()) as Record<string, unknown>;\n const { accessToken, refreshToken, expiresIn } = validateTokenResponse(tokenData);\n\n creds.accessToken = accessToken;\n creds.refreshToken = refreshToken ?? creds.refreshToken;\n creds.expiresAt = new Date(Date.now() + expiresIn * 1000).toISOString();\n\n credentialsManager.save(env, creds);\n stderr(' Authentication successful!');\n\n return { accessToken, credentials: creds };\n }\n}\n\n/**\n * Refresh an access token using a stored refresh token.\n * Returns updated credentials on success, null on failure.\n */\nexport async function refreshAccessToken(\n envConfig: EnvironmentConfig,\n creds: CLICredentials,\n credentialsManager: CredentialsManager,\n env: string\n): Promise<CLICredentials | null> {\n if (!creds.refreshToken || !creds.clientId || !creds.clientSecret) {\n stderr(' Cannot refresh: missing credentials (re-login required)');\n return null;\n }\n\n const tokenUrl = `${envConfig.apiUrl}/api/v2/oauth/token`;\n const authHeader = Buffer.from(`${creds.clientId}:${creds.clientSecret}`).toString('base64');\n\n try {\n const response = await fetch(tokenUrl, {\n method: 'POST',\n headers: {\n Authorization: `Basic ${authHeader}`,\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: new URLSearchParams({\n grant_type: 'refresh_token',\n refresh_token: creds.refreshToken,\n }),\n });\n\n if (!response.ok) {\n const body = await response.text();\n const isExpiredRefresh = isOAuthError(body, 'invalid_grant');\n if (isExpiredRefresh) {\n stderr(' Refresh token expired, re-login required');\n } else {\n stderr(` Token refresh failed (${response.status}), clearing credentials`);\n }\n credentialsManager.clear(env);\n return null;\n }\n\n const tokenData = (await response.json()) as Record<string, unknown>;\n const { accessToken, refreshToken, expiresIn } = validateTokenResponse(tokenData);\n\n const updated: CLICredentials = {\n ...creds,\n accessToken,\n refreshToken: refreshToken ?? creds.refreshToken,\n expiresAt: new Date(Date.now() + expiresIn * 1000).toISOString(),\n };\n\n credentialsManager.save(env, updated);\n return updated;\n } catch (err) {\n stderr(` Token refresh error: ${err instanceof Error ? err.message : 'unknown'}`);\n credentialsManager.clear(env);\n return null;\n }\n}\n","/**\n * AG-UI Client for CLI chat interactions\n *\n * Implements the AG-UI (Agent-User Interaction) protocol for streaming\n * chat responses. See: https://docs.ag-ui.com/concepts/events\n */\n\nimport type { ConciergeAppContextPayload } from '../lib/cli-client-context';\n\n/**\n * AG-UI event types\n */\nexport type AGUIEventType =\n | 'RUN_STARTED'\n | 'RUN_FINISHED'\n | 'RUN_ERROR'\n | 'TEXT_MESSAGE_START'\n | 'TEXT_MESSAGE_CONTENT'\n | 'TEXT_MESSAGE_END'\n | 'TOOL_CALL_START'\n | 'TOOL_CALL_ARGS'\n | 'TOOL_CALL_END'\n | 'TOOL_CALL_RESULT'\n | 'STATE_SNAPSHOT'\n | 'STATE_DELTA'\n // Lowercase variants (some backends use these)\n | 'run_started'\n | 'run_finished'\n | 'run_error'\n | 'text_message_start'\n | 'text_message_content'\n | 'text_message_end'\n | 'tool_call_start'\n | 'tool_call_args'\n | 'tool_call_end'\n | 'tool_call_result'\n | 'state_snapshot'\n | 'state_delta'\n | 'done';\n\nexport interface AGUIEvent {\n type: AGUIEventType;\n messageId?: string;\n role?: string;\n delta?: string;\n content?: string;\n message?: string;\n code?: string;\n toolCallId?: string;\n toolCallName?: string;\n result?: any;\n snapshot?: any;\n operations?: any[];\n [key: string]: any;\n}\n\nexport interface ChatMessage {\n role: 'user' | 'assistant' | 'system';\n content: string;\n}\n\nexport interface AGUIClientOptions {\n baseUrl: string;\n workspaceUuid?: string;\n chatId?: number; // Numeric chat ID (not UUID)\n /** Full URL override — when provided, baseUrl/workspaceUuid/chatId are ignored for POST */\n endpointUrl?: string;\n accessToken: string;\n debug?: boolean;\n /** Model field sent in request body (default: 'manager'). Set to undefined to omit. */\n model?: string;\n /** Concierge / client context forwarded to the API (e.g. CLI surface hints). */\n appContext?: ConciergeAppContextPayload;\n}\n\n/**\n * AG-UI Client for streaming chat responses\n */\nexport class AGUIClient {\n private endpointUrl: string;\n private baseUrl: string;\n private workspaceUuid: string;\n private chatId: number;\n private accessToken: string;\n private debug: boolean;\n private model: string | undefined;\n private appContext: ConciergeAppContextPayload | undefined;\n\n constructor(options: AGUIClientOptions) {\n this.baseUrl = options.baseUrl;\n this.workspaceUuid = options.workspaceUuid ?? '';\n this.chatId = options.chatId ?? 0;\n if (!options.endpointUrl && (!options.workspaceUuid || options.chatId === undefined)) {\n throw new Error('AGUIClient requires workspaceUuid and chatId, or endpointUrl');\n }\n this.endpointUrl =\n options.endpointUrl ??\n `${options.baseUrl}/api/v2/w/${options.workspaceUuid}/web-chat/${options.chatId}/chat/agui`;\n this.accessToken = options.accessToken;\n this.debug = options.debug ?? false;\n this.model = 'model' in options ? options.model : 'manager';\n this.appContext = options.appContext;\n }\n\n private inferenceStatusUrl(): string | null {\n // chatId is `number`; treat 0 / negative as \"no chat\" (use <= 0 instead of\n // a falsy check so a deliberate sentinel of 0 doesn't accidentally mean\n // \"valid chat\").\n if (!this.workspaceUuid || this.chatId <= 0) return null;\n return `${this.baseUrl}/api/v2/w/${this.workspaceUuid}/chats/${this.chatId}/inference/status`;\n }\n\n private async waitForInferenceInactive(maxWaitMs = 60_000): Promise<boolean> {\n const url = this.inferenceStatusUrl();\n if (!url) return false;\n const deadline = Date.now() + maxWaitMs;\n while (Date.now() < deadline) {\n try {\n const res = await fetch(url, {\n headers: { Authorization: `Bearer ${this.accessToken}` },\n });\n if (res.ok) {\n const body = (await res.json()) as { active?: boolean };\n if (!body.active) return true;\n }\n } catch (err) {\n // Transient network errors (DNS blips, connection resets) shouldn't\n // crash the 409-retry loop. Log under --debug and keep polling\n // until the deadline; the caller will fall back to the original\n // 409 error if we can't confirm inactive in time.\n if (this.debug) {\n console.log(\n `[DEBUG] waitForInferenceInactive fetch failed: ${\n err instanceof Error ? err.message : String(err)\n }`\n );\n }\n }\n await new Promise((r) => setTimeout(r, 2000));\n }\n return false;\n }\n\n /**\n * Send messages and stream the response\n */\n async sendMessage(\n messages: ChatMessage[],\n onEvent: (event: AGUIEvent) => void,\n options?: AguiStreamOptions\n ): Promise<void> {\n return this.streamRequest({ messages }, onEvent, options);\n }\n\n /**\n * Stream an AG-UI request (initial messages or HITL resume).\n */\n async streamRequest(\n request: AguiRequestBody,\n onEvent: (event: AGUIEvent) => void,\n options?: AguiStreamOptions\n ): Promise<void> {\n const body = JSON.stringify({\n ...(this.model ? { model: this.model } : {}),\n messages: request.messages ?? [],\n ...(this.appContext ? { appContext: this.appContext } : {}),\n ...(request.resumeValue !== undefined ? { resumeValue: request.resumeValue } : {}),\n ...(request.resumeInterruptId ? { resumeInterruptId: request.resumeInterruptId } : {}),\n ...(options?.autoApprove ? { context: { autoApprove: true } } : {}),\n });\n\n if (this.debug) {\n console.log(`\\n[DEBUG] POST ${this.endpointUrl}`);\n console.log(\n `[DEBUG] Body: ${request.resumeValue !== undefined ? 'resume' : `${(request.messages ?? []).length} message(s)`}`\n );\n }\n\n await this.postStream(body, onEvent, options);\n }\n\n private async postStream(\n body: string,\n onEvent: (event: AGUIEvent) => void,\n options?: AguiStreamOptions,\n conflictRetries = 0\n ): Promise<void> {\n const response = await fetch(this.endpointUrl, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${this.accessToken}`,\n 'Content-Type': 'application/json',\n Accept: 'text/event-stream',\n },\n body,\n });\n\n if (this.debug) {\n console.log(`[DEBUG] Response status: ${response.status}`);\n }\n\n if (response.status === 409 && conflictRetries < 3) {\n const ready = await this.waitForInferenceInactive();\n if (ready) {\n await this.postStream(body, onEvent, options, conflictRetries + 1);\n return;\n }\n }\n\n if (!response.ok) {\n const errorText = await response.text().catch(() => '');\n if (this.debug) {\n console.log(`[DEBUG] Error response: ${errorText}`);\n }\n throw new Error(\n `Chat request failed: ${response.status}${errorText ? `: ${errorText.slice(0, 200)}` : ''}`\n );\n }\n\n const reader = response.body!.getReader();\n const decoder = new TextDecoder();\n let buffer = '';\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n buffer += decoder.decode(value, { stream: true });\n const lines = buffer.split('\\n');\n buffer = lines.pop() || '';\n\n for (const line of lines) {\n if (line.startsWith('data: ')) {\n const data = line.slice(6);\n if (data === '[DONE]') {\n onEvent({ type: 'done' });\n continue;\n }\n try {\n const event = JSON.parse(data) as AGUIEvent;\n onEvent(event);\n } catch {\n // Ignore parse errors for malformed events\n }\n }\n }\n }\n }\n}\n\nexport interface AguiStreamOptions {\n autoApprove?: boolean;\n}\n\nexport interface AguiRequestBody {\n messages?: ChatMessage[];\n resumeValue?: string;\n resumeInterruptId?: string;\n}\n\n/**\n * Helper to check if an event is a text content event\n */\nexport function isTextContentEvent(event: AGUIEvent): boolean {\n const type = event.type.toLowerCase();\n return type === 'text_message_content';\n}\n\n/**\n * Helper to check if an event is an error event\n */\nexport function isErrorEvent(event: AGUIEvent): boolean {\n const type = event.type.toLowerCase();\n return type === 'run_error';\n}\n\n/**\n * Helper to extract text delta from an event\n */\nexport function getTextDelta(event: AGUIEvent): string | null {\n if (isTextContentEvent(event) && event.delta) {\n return event.delta;\n }\n return null;\n}\n\n/**\n * Helper to extract error message from an event\n */\nexport function getErrorMessage(event: AGUIEvent): string | null {\n if (isErrorEvent(event)) {\n return event.message || event.code || 'Unknown error';\n }\n return null;\n}\n","// This file is a workaround for a bug in web browsers' \"native\"\n// ES6 importing system which is uncapable of importing \"*.json\" files.\n// https://github.com/catamphetamine/libphonenumber-js/issues/239\nexport default {\"version\":4,\"country_calling_codes\":{\"1\":[\"US\",\"AG\",\"AI\",\"AS\",\"BB\",\"BM\",\"BS\",\"CA\",\"DM\",\"DO\",\"GD\",\"GU\",\"JM\",\"KN\",\"KY\",\"LC\",\"MP\",\"MS\",\"PR\",\"SX\",\"TC\",\"TT\",\"VC\",\"VG\",\"VI\"],\"7\":[\"RU\",\"KZ\"],\"20\":[\"EG\"],\"27\":[\"ZA\"],\"30\":[\"GR\"],\"31\":[\"NL\"],\"32\":[\"BE\"],\"33\":[\"FR\"],\"34\":[\"ES\"],\"36\":[\"HU\"],\"39\":[\"IT\",\"VA\"],\"40\":[\"RO\"],\"41\":[\"CH\"],\"43\":[\"AT\"],\"44\":[\"GB\",\"GG\",\"IM\",\"JE\"],\"45\":[\"DK\"],\"46\":[\"SE\"],\"47\":[\"NO\",\"SJ\"],\"48\":[\"PL\"],\"49\":[\"DE\"],\"51\":[\"PE\"],\"52\":[\"MX\"],\"53\":[\"CU\"],\"54\":[\"AR\"],\"55\":[\"BR\"],\"56\":[\"CL\"],\"57\":[\"CO\"],\"58\":[\"VE\"],\"60\":[\"MY\"],\"61\":[\"AU\",\"CC\",\"CX\"],\"62\":[\"ID\"],\"63\":[\"PH\"],\"64\":[\"NZ\"],\"65\":[\"SG\"],\"66\":[\"TH\"],\"81\":[\"JP\"],\"82\":[\"KR\"],\"84\":[\"VN\"],\"86\":[\"CN\"],\"90\":[\"TR\"],\"91\":[\"IN\"],\"92\":[\"PK\"],\"93\":[\"AF\"],\"94\":[\"LK\"],\"95\":[\"MM\"],\"98\":[\"IR\"],\"211\":[\"SS\"],\"212\":[\"MA\",\"EH\"],\"213\":[\"DZ\"],\"216\":[\"TN\"],\"218\":[\"LY\"],\"220\":[\"GM\"],\"221\":[\"SN\"],\"222\":[\"MR\"],\"223\":[\"ML\"],\"224\":[\"GN\"],\"225\":[\"CI\"],\"226\":[\"BF\"],\"227\":[\"NE\"],\"228\":[\"TG\"],\"229\":[\"BJ\"],\"230\":[\"MU\"],\"231\":[\"LR\"],\"232\":[\"SL\"],\"233\":[\"GH\"],\"234\":[\"NG\"],\"235\":[\"TD\"],\"236\":[\"CF\"],\"237\":[\"CM\"],\"238\":[\"CV\"],\"239\":[\"ST\"],\"240\":[\"GQ\"],\"241\":[\"GA\"],\"242\":[\"CG\"],\"243\":[\"CD\"],\"244\":[\"AO\"],\"245\":[\"GW\"],\"246\":[\"IO\"],\"247\":[\"AC\"],\"248\":[\"SC\"],\"249\":[\"SD\"],\"250\":[\"RW\"],\"251\":[\"ET\"],\"252\":[\"SO\"],\"253\":[\"DJ\"],\"254\":[\"KE\"],\"255\":[\"TZ\"],\"256\":[\"UG\"],\"257\":[\"BI\"],\"258\":[\"MZ\"],\"260\":[\"ZM\"],\"261\":[\"MG\"],\"262\":[\"RE\",\"YT\"],\"263\":[\"ZW\"],\"264\":[\"NA\"],\"265\":[\"MW\"],\"266\":[\"LS\"],\"267\":[\"BW\"],\"268\":[\"SZ\"],\"269\":[\"KM\"],\"290\":[\"SH\",\"TA\"],\"291\":[\"ER\"],\"297\":[\"AW\"],\"298\":[\"FO\"],\"299\":[\"GL\"],\"350\":[\"GI\"],\"351\":[\"PT\"],\"352\":[\"LU\"],\"353\":[\"IE\"],\"354\":[\"IS\"],\"355\":[\"AL\"],\"356\":[\"MT\"],\"357\":[\"CY\"],\"358\":[\"FI\",\"AX\"],\"359\":[\"BG\"],\"370\":[\"LT\"],\"371\":[\"LV\"],\"372\":[\"EE\"],\"373\":[\"MD\"],\"374\":[\"AM\"],\"375\":[\"BY\"],\"376\":[\"AD\"],\"377\":[\"MC\"],\"378\":[\"SM\"],\"380\":[\"UA\"],\"381\":[\"RS\"],\"382\":[\"ME\"],\"383\":[\"XK\"],\"385\":[\"HR\"],\"386\":[\"SI\"],\"387\":[\"BA\"],\"389\":[\"MK\"],\"420\":[\"CZ\"],\"421\":[\"SK\"],\"423\":[\"LI\"],\"500\":[\"FK\"],\"501\":[\"BZ\"],\"502\":[\"GT\"],\"503\":[\"SV\"],\"504\":[\"HN\"],\"505\":[\"NI\"],\"506\":[\"CR\"],\"507\":[\"PA\"],\"508\":[\"PM\"],\"509\":[\"HT\"],\"590\":[\"GP\",\"BL\",\"MF\"],\"591\":[\"BO\"],\"592\":[\"GY\"],\"593\":[\"EC\"],\"594\":[\"GF\"],\"595\":[\"PY\"],\"596\":[\"MQ\"],\"597\":[\"SR\"],\"598\":[\"UY\"],\"599\":[\"CW\",\"BQ\"],\"670\":[\"TL\"],\"672\":[\"NF\"],\"673\":[\"BN\"],\"674\":[\"NR\"],\"675\":[\"PG\"],\"676\":[\"TO\"],\"677\":[\"SB\"],\"678\":[\"VU\"],\"679\":[\"FJ\"],\"680\":[\"PW\"],\"681\":[\"WF\"],\"682\":[\"CK\"],\"683\":[\"NU\"],\"685\":[\"WS\"],\"686\":[\"KI\"],\"687\":[\"NC\"],\"688\":[\"TV\"],\"689\":[\"PF\"],\"690\":[\"TK\"],\"691\":[\"FM\"],\"692\":[\"MH\"],\"850\":[\"KP\"],\"852\":[\"HK\"],\"853\":[\"MO\"],\"855\":[\"KH\"],\"856\":[\"LA\"],\"880\":[\"BD\"],\"886\":[\"TW\"],\"960\":[\"MV\"],\"961\":[\"LB\"],\"962\":[\"JO\"],\"963\":[\"SY\"],\"964\":[\"IQ\"],\"965\":[\"KW\"],\"966\":[\"SA\"],\"967\":[\"YE\"],\"968\":[\"OM\"],\"970\":[\"PS\"],\"971\":[\"AE\"],\"972\":[\"IL\"],\"973\":[\"BH\"],\"974\":[\"QA\"],\"975\":[\"BT\"],\"976\":[\"MN\"],\"977\":[\"NP\"],\"992\":[\"TJ\"],\"993\":[\"TM\"],\"994\":[\"AZ\"],\"995\":[\"GE\"],\"996\":[\"KG\"],\"998\":[\"UZ\"]},\"countries\":{\"AC\":[\"247\",\"00\",\"(?:[01589]\\\\d|[46])\\\\d{4}\",[5,6]],\"AD\":[\"376\",\"00\",\"(?:1|6\\\\d)\\\\d{7}|[135-9]\\\\d{5}\",[6,8,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"[135-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]]],\"AE\":[\"971\",\"00\",\"(?:[4-7]\\\\d|9[0-689])\\\\d{7}|800\\\\d{2,9}|[2-4679]\\\\d{7}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{2,9})\",\"$1 $2\",[\"60|8\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[236]|[479][2-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{5})\",\"$1 $2 $3\",[\"[479]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AF\":[\"93\",\"00\",\"[2-7]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"]],\"0\"],\"AG\":[\"1\",\"011\",\"(?:268|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([457]\\\\d{6})$|1\",\"268$1\",0,\"268\"],\"AI\":[\"1\",\"011\",\"(?:264|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2457]\\\\d{6})$|1\",\"264$1\",0,\"264\"],\"AL\":[\"355\",\"00\",\"(?:700\\\\d\\\\d|900)\\\\d{3}|8\\\\d{5,7}|(?:[2-5]|6\\\\d)\\\\d{7}\",[6,7,8,9],[[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"80|9\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"4[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2358][2-5]|4\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[23578]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"]],\"0\"],\"AM\":[\"374\",\"00\",\"(?:[1-489]\\\\d|55|60|77)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]0\"],\"0 $1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2|3[12]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"1|47\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[3-9]\"],\"0$1\"]],\"0\"],\"AO\":[\"244\",\"00\",\"[29]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[29]\"]]]],\"AR\":[\"54\",\"00\",\"(?:11|[89]\\\\d\\\\d)\\\\d{8}|[2368]\\\\d{9}\",[10,11],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2-$3\",[\"2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9])\",\"2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8]))|2(?:2[24-9]|3[1-59]|47)\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5[56][46]|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|58|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|54(?:4|5[13-7]|6[89])|86[3-6]))|2(?:2[24-9]|3[1-59]|47)|38(?:[58][78]|7[378])|3(?:454|85[56])[46]|3(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"1\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[68]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[23]\"],\"0$1\",1],[\"(\\\\d)(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9(?:2[2-469]|3[3-578])\",\"9(?:2(?:2[024-9]|3[0-59]|47|6[245]|9[02-8])|3(?:3[28]|4[03-9]|5[2-46-8]|7[1-578]|8[2-9]))\",\"9(?:2(?:[23]02|6(?:[25]|4[6-8])|9(?:[02356]|4[02568]|72|8[23]))|3(?:3[28]|4(?:[04679]|3[5-8]|5[4-68]|8[2379])|5(?:[2467]|3[237]|8[2-5])|7[1-578]|8(?:[2469]|3[2578]|5[4-8]|7[36-8]|8[5-8])))|92(?:2[24-9]|3[1-59]|47)\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3[78]|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8[23])|7[1-578]|8(?:[2469]|3[278]|5(?:[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4[35][56]|58[45]|8(?:[38]5|54|76))[4-6]\",\"9(?:2(?:[23]02|6(?:[25]|4(?:64|[78]))|9(?:[02356]|4(?:[0268]|5[2-6])|72|8[23]))|3(?:3[28]|4(?:[04679]|3(?:5(?:4[0-25689]|[56])|[78])|5(?:4[46]|8)|8[2379])|5(?:[2467]|3[237]|8(?:[23]|4(?:[45]|60)|5(?:4[0-39]|5|64)))|7[1-578]|8(?:[2469]|3[278]|5(?:4(?:4|5[13-7]|6[89])|[56][46]|[78])|7[378]|8(?:6[3-6]|[78]))))|92(?:2[24-9]|3[1-59]|47)|93(?:4(?:36|5[56])|8(?:[38]5|76))[4-6]\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d)(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$2 15-$3-$4\",[\"91\"],\"0$1\",0,\"$1 $2 $3-$4\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$2 15-$3-$4\",[\"9\"],\"0$1\",0,\"$1 $2 $3-$4\"]],\"0\",0,\"0?(?:(11|2(?:2(?:02?|[13]|2[13-79]|4[1-6]|5[2457]|6[124-8]|7[1-4]|8[13-6]|9[1267])|3(?:02?|1[467]|2[03-6]|3[13-8]|[49][2-6]|5[2-8]|[67])|4(?:7[3-578]|9)|6(?:[0136]|2[24-6]|4[6-8]?|5[15-8])|80|9(?:0[1-3]|[19]|2\\\\d|3[1-6]|4[02568]?|5[2-4]|6[2-46]|72?|8[23]?))|3(?:3(?:2[79]|6|8[2578])|4(?:0[0-24-9]|[12]|3[5-8]?|4[24-7]|5[4-68]?|6[02-9]|7[126]|8[2379]?|9[1-36-8])|5(?:1|2[1245]|3[237]?|4[1-46-9]|6[2-4]|7[1-6]|8[2-5]?)|6[24]|7(?:[069]|1[1568]|2[15]|3[145]|4[13]|5[14-8]|7[2-57]|8[126])|8(?:[01]|2[15-7]|3[2578]?|4[13-6]|5[4-8]?|6[1-357-9]|7[36-8]?|8[5-8]?|9[124])))15)?\",\"9$1\"],\"AS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|684|900)\\\\d{7}\",[10],0,\"1\",0,\"([267]\\\\d{6})$|1\",\"684$1\",0,\"684\"],\"AT\":[\"43\",\"00\",\"1\\\\d{3,12}|2\\\\d{6,12}|43(?:(?:0\\\\d|5[02-9])\\\\d{3,9}|2\\\\d{4,5}|[3467]\\\\d{4}|8\\\\d{4,6}|9\\\\d{4,7})|5\\\\d{4,12}|8\\\\d{7,12}|9\\\\d{8,12}|(?:[367]\\\\d|4[0-24-9])\\\\d{4,11}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{3,12})\",\"$1 $2\",[\"1(?:11|[2-9])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})\",\"$1 $2\",[\"517\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"5[079]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,10})\",\"$1 $2\",[\"(?:31|4)6|51|6(?:48|5[0-3579]|[6-9])|7(?:20|32|8)|[89]\",\"(?:31|4)6|51|6(?:485|5[0-3579]|[6-9])|7(?:20|32|8)|[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,9})\",\"$1 $2\",[\"[2-467]|5[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,7})\",\"$1 $2 $3\",[\"5\"],\"0$1\"]],\"0\"],\"AU\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{7}(?:\\\\d(?:\\\\d{2})?)?|8[0-24-9]\\\\d{7})|[2-478]\\\\d{8}|1\\\\d{4,7}\",[5,6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"16\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"16\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"14|4\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[2378]\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:30|[89])\"]]],\"0\",0,\"(183[12])|0\",0,0,0,[[\"(?:(?:241|349)0\\\\d\\\\d|8(?:51(?:0(?:0[03-9]|[12479]\\\\d|3[2-9]|5[0-8]|6[1-9]|8[0-7])|1(?:[0235689]\\\\d|1[0-69]|4[0-589]|7[0-47-9])|2(?:0[0-79]|[18][13579]|2[14-9]|3[0-46-9]|[4-6]\\\\d|7[89]|9[0-4])|[34]\\\\d\\\\d)|91(?:(?:[0-58]\\\\d|6[0135-9])\\\\d|7(?:0[0-24-9]|[1-9]\\\\d)|9(?:[0-46-9]\\\\d|5[0-79]))))\\\\d{3}|(?:2(?:[0-26-9]\\\\d|3[0-8]|4[02-9]|5[0135-9])|3(?:[0-3589]\\\\d|4[0-578]|6[1-9]|7[0-35-9])|7(?:[013-57-9]\\\\d|2[0-8])|8(?:55|6[0-8]|[78]\\\\d|9[02-9]))\\\\d{6}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,[\"163\\\\d{2,6}\",[5,6,7,8,9]],[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"AW\":[\"297\",\"00\",\"(?:[25-79]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[25-9]\"]]]],\"AX\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"2\\\\d{4,9}|35\\\\d{4,5}|(?:60\\\\d\\\\d|800)\\\\d{4,6}|7\\\\d{5,11}|(?:[14]\\\\d|3[0-46-9]|50)\\\\d{4,8}\",[5,6,7,8,9,10,11,12],0,\"0\",0,0,0,0,\"18\",0,\"00\"],\"AZ\":[\"994\",\"00\",\"365\\\\d{6}|(?:[124579]\\\\d|60|88)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[28]|2|365|46\",\"1[28]|2|365[45]|46\",\"1[28]|2|365(?:4|5[02])|46\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[13-9]\"],\"0$1\"]],\"0\"],\"BA\":[\"387\",\"00\",\"6\\\\d{8}|(?:[35689]\\\\d|49|70)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[1-3]|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2-$3\",[\"[3-5]|6[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\"]],\"0\"],\"BB\":[\"1\",\"011\",\"(?:246|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"246$1\",0,\"246\"],\"BD\":[\"880\",\"00\",\"[1-469]\\\\d{9}|8[0-79]\\\\d{7,8}|[2-79]\\\\d{8}|[2-9]\\\\d{7}|[3-9]\\\\d{6}|[57-9]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1-$2\",[\"31[5-8]|[459]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1-$2\",[\"3(?:[67]|8[013-9])|4(?:6[168]|7|[89][18])|5(?:6[128]|9)|6(?:[15]|28|4[14])|7[2-589]|8(?:0[014-9]|[12])|9[358]|(?:3[2-5]|4[235]|5[2-578]|6[0389]|76|8[3-7]|9[24])1|(?:44|66)[01346-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,6})\",\"$1-$2\",[\"[13-9]|2[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{7,8})\",\"$1-$2\",[\"2\"],\"0$1\"]],\"0\"],\"BE\":[\"32\",\"00\",\"4\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:80|9)0\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[239]|4[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[15-8]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4\"],\"0$1\"]],\"0\"],\"BF\":[\"226\",\"00\",\"[024-7]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[024-7]\"]]]],\"BG\":[\"359\",\"00\",\"00800\\\\d{7}|[2-7]\\\\d{6,7}|[89]\\\\d{6,8}|2\\\\d{5}\",[6,7,8,9,12],[[\"(\\\\d)(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"43[1-6]|70[1-9]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[356]|4[124-7]|7[1-9]|8[1-6]|9[1-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"(?:70|8)0\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3\",[\"43[1-7]|7\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[48]|9[08]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"BH\":[\"973\",\"00\",\"[136-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[13679]|8[02-4679]\"]]]],\"BI\":[\"257\",\"00\",\"(?:[267]\\\\d|31)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2367]\"]]]],\"BJ\":[\"229\",\"00\",\"(?:01\\\\d|8)\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"0\"]]]],\"BL\":[\"590\",\"00\",\"7090\\\\d{5}|(?:[56]9|[89]\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"(?:59(?:0(?:2[7-9]|3[3-7]|5[12]|87)|87\\\\d)|80[6-9]\\\\d\\\\d)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],[\"8[129]\\\\d{7}\"],0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"BM\":[\"1\",\"011\",\"(?:441|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"441$1\",0,\"441\"],\"BN\":[\"673\",\"00\",\"[2-578]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-578]\"]]]],\"BO\":[\"591\",\"00(?:1\\\\d)?\",\"8001\\\\d{5}|(?:[2-467]\\\\d|50)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[235]|4[46]\"]],[\"(\\\\d{8})\",\"$1\",[\"[67]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\",0,\"0(1\\\\d)?\"],\"BQ\":[\"599\",\"00\",\"(?:[34]1|7\\\\d)\\\\d{5}\",[7],0,0,0,0,0,0,\"[347]\"],\"BR\":[\"55\",\"00(?:1[245]|2[1-35]|31|4[13]|[56]5|99)\",\"[1-467]\\\\d{9,10}|55[0-46-9]\\\\d{8}|[34]\\\\d{7}|55\\\\d{7,8}|(?:5[0-46-9]|[89]\\\\d)\\\\d{7,9}\",[8,9,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"300|4(?:0[02]|37|86)\",\"300|4(?:0(?:0|20)|370|864)\"]],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:[358]|90)0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2-$3\",[\"(?:[14689][1-9]|2[12478]|3[1-578]|5[13-5]|7[13-579])[2-57]\"],\"($1)\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1 $2-$3\",[\"[16][1-9]|[2-57-9]\"],\"($1)\"]],\"0\",0,\"(?:0|90)(?:(1[245]|2[1-35]|31|4[13]|[56]5|99)(\\\\d{10,11}))?\",\"$2\"],\"BS\":[\"1\",\"011\",\"(?:242|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([3-8]\\\\d{6})$|1\",\"242$1\",0,\"242\"],\"BT\":[\"975\",\"00\",\"[178]\\\\d{7}|[2-8]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-6]|7[246]|8[2-4]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[67]|[78]\"]]]],\"BW\":[\"267\",\"00\",\"(?:0800|(?:[37]|800)\\\\d)\\\\d{6}|(?:[2-6]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-6]|3[15-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"BY\":[\"375\",\"810\",\"(?:[12]\\\\d|33|44|902)\\\\d{7}|8(?:0[0-79]\\\\d{5,7}|[1-7]\\\\d{9})|8(?:1[0-489]|[5-79]\\\\d)\\\\d{7}|8[1-79]\\\\d{6,7}|8[0-79]\\\\d{5}|8\\\\d{5}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"800\"],\"8 $1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,4})\",\"$1 $2 $3\",[\"800\"],\"8 $1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{3})\",\"$1 $2-$3\",[\"1(?:5[169]|6[3-5]|7[179])|2(?:1[35]|2[34]|3[3-5])\",\"1(?:5[169]|6(?:3[1-3]|4|5[125])|7(?:1[3-9]|7[0-24-6]|9[2-7]))|2(?:1[35]|2[34]|3[3-5])\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"1(?:[56]|7[467])|2[1-3]\"],\"8 0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-4]\"],\"8 0$1\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"8 $1\"]],\"8\",0,\"0|80?\",0,0,0,0,\"8~10\"],\"BZ\":[\"501\",\"00\",\"(?:0800\\\\d|[2-8])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-8]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"0\"]]]],\"CA\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[7,10],0,\"1\",0,0,0,0,0,[[\"(?:2(?:04|[23]6|[48]9|5[07]|63)|3(?:06|43|54|6[578]|82)|4(?:03|1[68]|[26]8|3[178]|50|74)|5(?:06|1[49]|48|79|8[147])|6(?:04|[18]3|39|47|72)|7(?:0[59]|42|53|78|8[02])|8(?:[06]7|19|25|7[39])|9(?:0[25]|42))[2-9]\\\\d{6}\",[10]],[\"\",[10]],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\",[10]],[\"900[2-9]\\\\d{6}\",[10]],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|(?:5(?:2[125-9]|3[23]|44|66|77|88)|6(?:22|33))[2-9]\\\\d{6}\",[10]],0,[\"310\\\\d{4}\",[7]],0,[\"600[2-9]\\\\d{6}\",[10]]]],\"CC\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:02|31|60|89)|1(?:18|76)|223)|91(?:0(?:1[0-2]|29)|1(?:[28]2|50|79)|2(?:10|64)|3(?:[06]8|22)|4[29]8|62\\\\d|70[23]|959))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CD\":[\"243\",\"00\",\"(?:(?:[189]|5\\\\d)\\\\d|2)\\\\d{7}|[1-68]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"[1-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"5\"],\"0$1\"]],\"0\"],\"CF\":[\"236\",\"00\",\"8776\\\\d{4}|(?:[27]\\\\d|61)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-8]\"]]]],\"CG\":[\"242\",\"00\",\"222\\\\d{6}|(?:0\\\\d|80)\\\\d{7}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[02]\"]]]],\"CH\":[\"41\",\"00\",\"8\\\\d{11}|[2-9]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8[047]|90\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]|81\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"8\"],\"0$1\"]],\"0\"],\"CI\":[\"225\",\"00\",\"[02]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d)(\\\\d{5})\",\"$1 $2 $3 $4\",[\"2\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"0\"]]]],\"CK\":[\"682\",\"00\",\"[2-578]\\\\d{4}\",[5],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"[2-578]\"]]]],\"CL\":[\"56\",\"(?:0|1(?:1[0-69]|2[02-5]|5[13-58]|69|7[0167]|8[018]))0\",\"12300\\\\d{6}|6\\\\d{9,10}|[2-9]\\\\d{8}\",[9,10,11],[[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"219\",\"2196\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"60|809\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[1-36]\"],\"($1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"9(?:10|[2-9])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3[2-5]|[47]|5[1-3578]|6[13-57]|8(?:0[1-8]|[1-9])\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"60|8\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"60\"]]]],\"CM\":[\"237\",\"00\",\"[26]\\\\d{8}|88\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"88\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[26]|88\"]]]],\"CN\":[\"86\",\"00|1(?:[12]\\\\d|79)\\\\d\\\\d00\",\"(?:(?:1[03-689]|2\\\\d)\\\\d\\\\d|6)\\\\d{8}|1\\\\d{10}|[126]\\\\d{6}(?:\\\\d(?:\\\\d{2})?)?|86\\\\d{5,6}|(?:[3-579]\\\\d|8[0-57-9])\\\\d{5,9}\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5,6})\",\"$1 $2\",[\"(?:10|2[0-57-9])[19]|3(?:[157]|35|49|9[1-68])|4(?:1[124-9]|2[179]|6[47-9]|7|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:07|1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3|4[13]|5[1-5]|7[0-79]|9[0-35-9])|(?:4[35]|59|85)[1-9]\",\"(?:10|2[0-57-9])(?:1[02]|9[56])|8078|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))1\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|80781|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))12\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|807812|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\",\"10(?:1(?:0|23)|9[56])|2[0-57-9](?:1(?:00|23)|9[56])|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:1[124-9]|2[179]|[35][1-9]|6[47-9]|7\\\\d|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:078|1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|3\\\\d|4[13]|5[1-5]|7[0-79]|9[0-35-9]))123\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"3(?:[157]|35|49|9[1-68])|4(?:[17]|2[179]|6[47-9]|8[23])|5(?:[1357]|2[37]|4[36]|6[1-46]|80)|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]|4[13]|5[1-5])|(?:4[35]|59|85)[1-9]\",\"(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[1-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))[19]\",\"85[23](?:10|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:10|9[56])\",\"85[23](?:100|95)|(?:3(?:[157]\\\\d|35|49|9[1-68])|4(?:[17]\\\\d|2[179]|[35][1-9]|6[47-9]|8[23])|5(?:[1357]\\\\d|2[37]|4[36]|6[1-46]|80|9[1-9])|6(?:3[1-5]|6[0238]|9[12])|7(?:01|[1579]\\\\d|2[248]|3[014-9]|4[3-6]|6[023689])|8(?:1[236-8]|2[5-7]|[37]\\\\d|5[14-9]|8[36-8]|9[1-8])|9(?:0[1-3689]|1[1-79]|[379]\\\\d|4[13]|5[1-5]))(?:100|9[56])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"(?:4|80)0\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|2(?:[02-57-9]|1[1-9])\",\"10|2(?:[02-57-9]|1[1-9])\",\"10[0-79]|2(?:[02-57-9]|1[1-79])|(?:10|21)8(?:0[1-9]|[1-9])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[3-59]|7[02-68])|4(?:[26-8]|3[3-9]|5[2-9])|5(?:3[03-9]|[468]|7[028]|9[2-46-9])|6|7(?:[0-247]|3[04-9]|5[0-4689]|6[2368])|8(?:[1-358]|9[1-7])|9(?:[013479]|5[1-5])|(?:[34]1|55|79|87)[02-9]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-578]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"1[3-9]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"[12]\"],\"0$1\",1]],\"0\",0,\"(1(?:[12]\\\\d|79)\\\\d\\\\d)|0\",0,0,0,0,\"00\"],\"CO\":[\"57\",\"00(?:4(?:[14]4|56)|[579])\",\"(?:46|60\\\\d\\\\d)\\\\d{6}|(?:1\\\\d|[39])\\\\d{9}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"46\"]],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"6|90\"],\"($1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3[0-357]|9[14]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{7})\",\"$1-$2-$3\",[\"1\"],\"0$1\",0,\"$1 $2 $3\"]],\"0\",0,\"0([3579]|4(?:[14]4|56))?\"],\"CR\":[\"506\",\"00\",\"(?:8\\\\d|90)\\\\d{8}|(?:[24-8]\\\\d{3}|3005)\\\\d{4}\",[8,10],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[3-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[89]\"]]],0,0,\"(19(?:0[0-2468]|1[09]|20|66|77|99))\"],\"CU\":[\"53\",\"119\",\"(?:[2-7]|8\\\\d\\\\d)\\\\d{7}|[2-47]\\\\d{6}|[34]\\\\d{5}\",[6,7,8,10],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"2[1-4]|[34]\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{6,7})\",\"$1 $2\",[\"7\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"[56]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"8\"],\"0$1\"]],\"0\"],\"CV\":[\"238\",\"0\",\"(?:[2-59]\\\\d\\\\d|800)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"CW\":[\"599\",\"00\",\"(?:[34]1|60|(?:7|9\\\\d)\\\\d)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[3467]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9[4-8]\"]]],0,0,0,0,0,\"[69]\"],\"CX\":[\"61\",\"001[14-689]|14(?:1[14]|34|4[17]|[56]6|7[47]|88)0011\",\"1(?:[0-79]\\\\d{8}(?:\\\\d{2})?|8[0-24-9]\\\\d{7})|[148]\\\\d{8}|1\\\\d{5,7}\",[6,7,8,9,10,12],0,\"0\",0,\"([59]\\\\d{7})$|0\",\"8$1\",0,0,[[\"8(?:51(?:0(?:01|30|59|88)|1(?:17|46|75)|2(?:22|35))|91(?:00[6-9]|1(?:[28]1|49|78)|2(?:09|63)|3(?:12|26|75)|4(?:56|97)|64\\\\d|7(?:0[01]|1[0-2])|958))\\\\d{3}\",[9]],[\"4(?:79[01]|83[0-36-9]|95[0-3])\\\\d{5}|4(?:[0-36]\\\\d|4[047-9]|[58][0-24-9]|7[02-8]|9[0-47-9])\\\\d{6}\",[9]],[\"180(?:0\\\\d{3}|2)\\\\d{3}\",[7,10]],[\"190[0-26]\\\\d{6}\",[10]],0,0,0,0,[\"14(?:5(?:1[0458]|[23][458])|71\\\\d)\\\\d{4}\",[9]],[\"13(?:00\\\\d{6}(?:\\\\d{2})?|45[0-4]\\\\d{3})|13\\\\d{4}\",[6,8,10,12]]],\"0011\"],\"CY\":[\"357\",\"00\",\"(?:[279]\\\\d|[58]0)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[257-9]\"]]]],\"CZ\":[\"420\",\"00\",\"(?:[2-578]\\\\d|60)\\\\d{7}|9\\\\d{8,11}\",[9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]|9[015-7]\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"96\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]]],\"DE\":[\"49\",\"00\",\"[2579]\\\\d{5,14}|49(?:[34]0|69|8\\\\d)\\\\d\\\\d?|49(?:37|49|60|7[089]|9\\\\d)\\\\d{1,3}|49(?:2[024-9]|3[2-689]|7[1-7])\\\\d{1,8}|(?:1|[368]\\\\d|4[0-8])\\\\d{3,13}|49(?:[015]\\\\d|2[13]|31|[46][1-8])\\\\d{1,9}\",[4,5,6,7,8,9,10,11,12,13,14,15],[[\"(\\\\d{2})(\\\\d{3,13})\",\"$1 $2\",[\"3[02]|40|[68]9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,12})\",\"$1 $2\",[\"2(?:0[1-389]|1[124]|2[18]|3[14])|3(?:[35-9][15]|4[015])|906|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\",\"2(?:0[1-389]|12[0-8])|3(?:[35-9][15]|4[015])|906|2(?:[13][14]|2[18])|(?:2[4-9]|4[2-9]|[579][1-9]|[68][1-8])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2,11})\",\"$1 $2\",[\"[24-6]|3(?:[3569][02-46-9]|4[2-4679]|7[2-467]|8[2-46-8])|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]\",\"[24-6]|3(?:3(?:0[1-467]|2[127-9]|3[124578]|7[1257-9]|8[1256]|9[145])|4(?:2[135]|4[13578]|9[1346])|5(?:0[14]|2[1-3589]|6[1-4]|7[13468]|8[13568])|6(?:2[1-489]|3[124-6]|6[13]|7[12579]|8[1-356]|9[135])|7(?:2[1-7]|4[145]|6[1-5]|7[1-4])|8(?:21|3[1468]|6|7[1467]|8[136])|9(?:0[12479]|2[1358]|4[134679]|6[1-9]|7[136]|8[147]|9[1468]))|70[2-8]|8(?:0[2-9]|[1-8])|90[7-9]|[79][1-9]|3[68]4[1347]|3(?:47|60)[1356]|3(?:3[46]|46|5[49])[1246]|3[4579]3[1357]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"138\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{2,10})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,11})\",\"$1 $2\",[\"181\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{4,10})\",\"$1 $2 $3\",[\"1(?:3|80)|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,8})\",\"$1 $2\",[\"1[67]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7,12})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"185\",\"1850\",\"18500\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"18[68]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{7})\",\"$1 $2\",[\"15[1279]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{6})\",\"$1 $2\",[\"15[03568]\",\"15(?:[0568]|3[13])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{8})\",\"$1 $2\",[\"18\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{7,8})\",\"$1 $2 $3\",[\"1(?:6[023]|7)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{7})\",\"$1 $2 $3\",[\"15[279]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{8})\",\"$1 $2 $3\",[\"15\"],\"0$1\"]],\"0\"],\"DJ\":[\"253\",\"00\",\"(?:2\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[27]\"]]]],\"DK\":[\"45\",\"00\",\"[2-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-9]\"]]]],\"DM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|767|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"767$1\",0,\"767\"],\"DO\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"8001|8[024]9\"],\"DZ\":[\"213\",\"00\",\"(?:[1-4]|[5-79]\\\\d|80)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-8]\"],\"0$1\"]],\"0\"],\"EC\":[\"593\",\"00\",\"1\\\\d{9,10}|(?:[2-7]|9\\\\d)\\\\d{7}\",[8,9,10,11],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2-$3\",[\"[2-7]\"],\"(0$1)\",0,\"$1-$2-$3\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"EE\":[\"372\",\"00\",\"8\\\\d{9}|[4578]\\\\d{7}|(?:[3-8]\\\\d|90)\\\\d{5}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[369]|4[3-8]|5(?:[0-2]|5[0-478]|6[45])|7[1-9]|88\",\"[369]|4[3-8]|5(?:[02]|1(?:[0-8]|95)|5[0-478]|6(?:4[0-4]|5[1-589]))|7[1-9]|88\"]],[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[45]|8(?:00|[1-49])\",\"[45]|8(?:00[1-9]|[1-49])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"EG\":[\"20\",\"00\",\"[189]\\\\d{8,9}|[24-6]\\\\d{8}|[135]\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{7,8})\",\"$1 $2\",[\"[23]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,7})\",\"$1 $2\",[\"1[35]|[4-6]|8[2468]|9[235-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{8})\",\"$1 $2\",[\"1\"],\"0$1\"]],\"0\"],\"EH\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],0,\"0\",0,0,0,0,0,[[\"528[89]\\\\d{5}\"],[\"(?:6(?:[0-79]\\\\d|8[0-247-9])|7(?:[016-8]\\\\d|2[0-8]|5[0-5]))\\\\d{6}\"],[\"80[0-7]\\\\d{6}\"],[\"89\\\\d{7}\"],0,0,0,0,[\"(?:592(?:4[0-2]|93)|80[89]\\\\d\\\\d)\\\\d{4}\"]]],\"ER\":[\"291\",\"00\",\"[178]\\\\d{6}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[178]\"],\"0$1\"]],\"0\"],\"ES\":[\"34\",\"00\",\"[5-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[89]00\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-9]\"]]]],\"ET\":[\"251\",\"00\",\"(?:11|[2-579]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-579]\"],\"0$1\"]],\"0\"],\"FI\":[\"358\",\"00|99(?:[01469]|5(?:[14]1|3[23]|5[59]|77|88|9[09]))\",\"[1-35689]\\\\d{4}|7\\\\d{10,11}|(?:[124-7]\\\\d|3[0-46-9])\\\\d{8}|[1-9]\\\\d{5,8}\",[5,6,7,8,9,10,11,12],[[\"(\\\\d{5})\",\"$1\",[\"20[2-59]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"(?:[1-3]0|[68])0|70[07-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,8})\",\"$1 $2\",[\"[14]|2[09]|50|7[135]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6,10})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d)(\\\\d{4,9})\",\"$1 $2\",[\"(?:19|[2568])[1-8]|3(?:0[1-9]|[1-9])|9\"],\"0$1\"]],\"0\",0,0,0,0,\"1[03-79]|[2-9]\",0,\"00\"],\"FJ\":[\"679\",\"0(?:0|52)\",\"45\\\\d{5}|(?:0800\\\\d|[235-9])\\\\d{6}\",[7,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[235-9]|45\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]]],0,0,0,0,0,0,0,\"00\"],\"FK\":[\"500\",\"00\",\"[2-7]\\\\d{4}\",[5]],\"FM\":[\"691\",\"00\",\"(?:[39]\\\\d\\\\d|820)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[389]\"]]]],\"FO\":[\"298\",\"00\",\"[2-9]\\\\d{5}\",[6],[[\"(\\\\d{6})\",\"$1\",[\"[2-9]\"]]],0,0,\"(10(?:01|[12]0|88))\"],\"FR\":[\"33\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0 $1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[1-79]\"],\"0$1\"]],\"0\"],\"GA\":[\"241\",\"00\",\"(?:[067]\\\\d|11)\\\\d{6}|[2-7]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"11|[67]\"],\"0$1\"]],0,0,\"0(11\\\\d{6}|60\\\\d{6}|61\\\\d{6}|6[256]\\\\d{6}|7[467]\\\\d{6})\",\"$1\"],\"GB\":[\"44\",\"00\",\"[1-357-9]\\\\d{9}|[18]\\\\d{8}|8\\\\d{6}\",[7,9,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"800\",\"8001\",\"80011\",\"800111\",\"8001111\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"845\",\"8454\",\"84546\",\"845464\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"1(?:38|5[23]|69|76|94)\",\"1(?:(?:38|69)7|5(?:24|39)|768|946)\",\"1(?:3873|5(?:242|39[4-6])|(?:697|768)[347]|9467)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"1(?:[2-69][02-9]|[78])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[25]|7(?:0|6[02-9])\",\"[25]|7(?:0|6(?:[03-9]|2[356]))\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1389]\"],\"0$1\"]],\"0\",0,\"0|180020\",0,0,0,[[\"(?:1(?:1(?:3(?:[0-58]\\\\d\\\\d|73[0-5])|4(?:(?:[0-5]\\\\d|70)\\\\d|69[7-9])|(?:(?:5[0-26-9]|[78][0-49])\\\\d|6(?:[0-4]\\\\d|5[01]))\\\\d)|(?:2(?:(?:0[024-9]|2[3-9]|3[3-79]|4[1-689]|[58][02-9]|6[0-47-9]|7[013-9]|9\\\\d)\\\\d|1(?:[0-7]\\\\d|8[0-3]))|(?:3(?:0\\\\d|1[0-8]|[25][02-9]|3[02-579]|[468][0-46-9]|7[1-35-79]|9[2-578])|4(?:0[03-9]|[137]\\\\d|[28][02-57-9]|4[02-69]|5[0-8]|[69][0-79])|5(?:0[1-35-9]|[16]\\\\d|2[024-9]|3[015689]|4[02-9]|5[03-9]|7[0-35-9]|8[0-468]|9[0-57-9])|6(?:0[034689]|1\\\\d|2[0-35689]|[38][013-9]|4[1-467]|5[0-69]|6[13-9]|7[0-8]|9[0-24578])|7(?:0[0246-9]|2\\\\d|3[0236-8]|4[03-9]|5[0-46-9]|6[013-9]|7[0-35-9]|8[024-9]|9[02-9])|8(?:0[35-9]|2[1-57-9]|3[02-578]|4[0-578]|5[124-9]|6[2-69]|7\\\\d|8[02-9]|9[02569])|9(?:0[02-589]|[18]\\\\d|2[02-689]|3[1-57-9]|4[2-9]|5[0-579]|6[2-47-9]|7[0-24578]|9[2-57]))\\\\d)\\\\d)|2(?:0[013478]|3[0189]|4[017]|8[0-46-9]|9[0-2])\\\\d{3})\\\\d{4}|1(?:2(?:0(?:46[1-4]|87[2-9])|545[1-79]|76(?:2\\\\d|3[1-8]|6[1-6])|9(?:7(?:2[0-4]|3[2-5])|8(?:2[2-8]|7[0-47-9]|8[3-5])))|3(?:6(?:38[2-5]|47[23])|8(?:47[04-9]|64[0157-9]))|4(?:044[1-7]|20(?:2[23]|8\\\\d)|6(?:0(?:30|5[2-57]|6[1-8]|7[2-8])|140)|8(?:052|87[1-3]))|5(?:2(?:4(?:3[2-79]|6\\\\d)|76\\\\d)|6(?:26[06-9]|686))|6(?:06(?:4\\\\d|7[4-79])|295[5-7]|35[34]\\\\d|47(?:24|61)|59(?:5[08]|6[67]|74)|9(?:55[0-4]|77[23]))|7(?:26(?:6[13-9]|7[0-7])|(?:442|688)\\\\d|50(?:2[0-3]|[3-68]2|76))|8(?:27[56]\\\\d|37(?:5[2-5]|8[239])|843[2-58])|9(?:0(?:0(?:6[1-8]|85)|52\\\\d)|3583|4(?:66[1-8]|9(?:2[01]|81))|63(?:23|3[1-4])|9561))\\\\d{3}\",[9,10]],[\"7(?:457[0-57-9]|700[01]|911[028])\\\\d{5}|7(?:[1-3]\\\\d\\\\d|4(?:[0-46-9]\\\\d|5[0-689])|5(?:0[0-8]|[13-9]\\\\d|2[0-35-9])|7(?:0[1-9]|[1-7]\\\\d|8[02-9]|9[0-689])|8(?:[014-9]\\\\d|[23][0-8])|9(?:[024-9]\\\\d|1[02-9]|3[0-689]))\\\\d{6}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[2-49]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]],0,\" x\"],\"GD\":[\"1\",\"011\",\"(?:473|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"473$1\",0,\"473\"],\"GE\":[\"995\",\"00\",\"(?:[3-57]\\\\d\\\\d|800)\\\\d{6}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"32\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[57]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[348]\"],\"0$1\"]],\"0\"],\"GF\":[\"594\",\"00\",\"(?:694\\\\d|7093)\\\\d{5}|(?:59|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]|80[6-9]|9[47]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[89]\"],\"0$1\"]],\"0\"],\"GG\":[\"44\",\"00\",\"(?:1481|[357-9]\\\\d{3})\\\\d{6}|8\\\\d{6}(?:\\\\d{2})?\",[7,9,10],0,\"0\",0,\"([25-9]\\\\d{5})$|0|180020\",\"1481$1\",0,0,[[\"1481[25-9]\\\\d{5}\",[10]],[\"7(?:(?:781|839)\\\\d|911[17])\\\\d{5}\",[10]],[\"80[08]\\\\d{7}|800\\\\d{6}|8001111\"],[\"(?:8(?:4[2-5]|7[0-3])|9(?:[01]\\\\d|8[0-3]))\\\\d{7}|845464\\\\d\",[7,10]],[\"70\\\\d{8}\",[10]],0,[\"(?:3[0347]|55)\\\\d{8}\",[10]],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\",[10]],[\"56\\\\d{8}\",[10]]]],\"GH\":[\"233\",\"00\",\"[235]\\\\d{8}|800\\\\d{5,6}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2358]\"],\"0$1\"]],\"0\"],\"GI\":[\"350\",\"00\",\"(?:[25]\\\\d|60)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"2\"]]]],\"GL\":[\"299\",\"00\",\"(?:19|[2-689]\\\\d|70)\\\\d{4}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"19|[2-9]\"]]]],\"GM\":[\"220\",\"00\",\"[2-9]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"GN\":[\"224\",\"00\",\"722\\\\d{6}|(?:3|6\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"3\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[67]\"]]]],\"GP\":[\"590\",\"00\",\"7090\\\\d{5}|(?:[56]9|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]|80[6-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"(?:59(?:0(?:0[1-68]|[14][0-24-9]|2[0-68]|3[1-9]|5[3-579]|[68][0-689]|7[08]|9\\\\d)|87\\\\d)|80[6-9]\\\\d\\\\d)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],[\"8[129]\\\\d{7}\"],0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"GQ\":[\"240\",\"00\",\"222\\\\d{6}|(?:3\\\\d|55|[89]0)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235]\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[89]\"]]]],\"GR\":[\"30\",\"00\",\"5005000\\\\d{3}|8\\\\d{9,11}|(?:[269]\\\\d|70)\\\\d{8}\",[10,11,12],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"21|7\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"2(?:2|3[2-57-9]|4[2-469]|5[2-59]|6[2-9]|7[2-69]|8[2-49])|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2689]\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{5})\",\"$1 $2 $3\",[\"8\"]]]],\"GT\":[\"502\",\"00\",\"80\\\\d{6}|(?:1\\\\d{3}|[2-7])\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-8]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"GU\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|671|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"671$1\",0,\"671\"],\"GW\":[\"245\",\"00\",\"[49]\\\\d{8}|4\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"40\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"]]]],\"GY\":[\"592\",\"001\",\"(?:[2-8]\\\\d{3}|9008)\\\\d{3}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"HK\":[\"852\",\"00(?:30|5[09]|[126-9]?)\",\"8[0-46-9]\\\\d{6,7}|9\\\\d{4,7}|(?:[2-7]|9\\\\d{3})\\\\d{7}\",[5,6,7,8,9,11],[[\"(\\\\d{3})(\\\\d{2,5})\",\"$1 $2\",[\"900\",\"9003\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2-7]|8[1-4]|9(?:0[1-9]|[1-8])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"9\"]]],0,0,0,0,0,0,0,\"00\"],\"HN\":[\"504\",\"00\",\"8\\\\d{10}|[237-9]\\\\d{7}\",[8,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[237-9]\"]]]],\"HR\":[\"385\",\"00\",\"[2-69]\\\\d{8}|80\\\\d{5,7}|[1-79]\\\\d{7}|6\\\\d{6}\",[7,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"6[01]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6|7[245]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-57]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"HT\":[\"509\",\"00\",\"[2-589]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-589]\"]]]],\"HU\":[\"36\",\"00\",\"[235-7]\\\\d{8}|[1-9]\\\\d{7}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27][2-9]|3[2-7]|4[24-9]|5[2-79]|6|8[2-57-9]|9[2-69]\"],\"(06 $1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"06 $1\"]],\"06\"],\"ID\":[\"62\",\"00[89]\",\"00[1-9]\\\\d{9,14}|(?:[1-36]|8\\\\d{5})\\\\d{6}|00\\\\d{9}|[1-9]\\\\d{8,10}|[2-9]\\\\d{7}\",[7,8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"15\"]],[\"(\\\\d{2})(\\\\d{5,9})\",\"$1 $2\",[\"2[124]|[36]1\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,7})\",\"$1 $2\",[\"800\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5,8})\",\"$1 $2\",[\"[2-79]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{3})\",\"$1-$2-$3\",[\"8[1-35-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6,8})\",\"$1 $2\",[\"1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"804\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"80\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1-$2-$3\",[\"8\"],\"0$1\"]],\"0\"],\"IE\":[\"353\",\"00\",\"(?:1\\\\d|[2569])\\\\d{6,8}|4\\\\d{6,9}|7\\\\d{8}|8\\\\d{8,9}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"2[24-9]|47|58|6[237-9]|9[35-9]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[45]0\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2569]|4[1-69]|7[14]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"70\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"81\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"4\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"IL\":[\"972\",\"0(?:0|1[2-9])\",\"1\\\\d{6}(?:\\\\d{3,5})?|[57]\\\\d{8}|[1-489]\\\\d{7}\",[7,8,9,10,11,12],[[\"(\\\\d{4})(\\\\d{3})\",\"$1-$2\",[\"125\"]],[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"121\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[2-489]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"12\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1-$2\",[\"159\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3-$4\",[\"1[7-9]\"]],[\"(\\\\d{3})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3-$4\",[\"15\"]]],\"0\"],\"IM\":[\"44\",\"00\",\"1624\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([25-8]\\\\d{5})$|0|180020\",\"1624$1\",0,\"74576|(?:16|7[56])24\"],\"IN\":[\"91\",\"00\",\"(?:000800|[2-9]\\\\d\\\\d)\\\\d{7}|1\\\\d{7,12}\",[8,9,10,11,12,13],[[\"(\\\\d{8})\",\"$1\",[\"5(?:0|2[23]|3[03]|[67]1|88)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|888)\",\"5(?:0|2(?:21|3)|3(?:0|3[23])|616|717|8888)\"],0,1],[\"(\\\\d{4})(\\\\d{4,5})\",\"$1 $2\",[\"180\",\"1800\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"140\"],0,1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[02]|33|4[04]|79[1-7]|80[2-46]\",\"11|2[02]|33|4[04]|79(?:[1-6]|7[19])|80(?:[2-4]|6[0-589])\",\"11|2[02]|33|4[04]|79(?:[124-6]|3(?:[02-9]|1[0-24-9])|7(?:1|9[1-6]))|80(?:[2-4]|6[0-589])\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1(?:2[0-249]|3[0-25]|4[145]|[68]|7[1257])|2(?:1[257]|3[013]|4[01]|5[0137]|6[0158]|78|8[1568])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|5[12]|[78]1)|6(?:12|[2-4]1|5[17]|6[13]|80)|7(?:12|3[134]|4[47]|61|88)|8(?:16|2[014]|3[126]|6[136]|7[078]|8[34]|91)|(?:43|59|75)[15]|(?:1[59]|29|67|72)[14]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|674|7(?:(?:2[14]|3[34]|5[15])[2-6]|61[346]|88[0-8])|8(?:70[2-6]|84[235-7]|91[3-7])|(?:1(?:29|60|8[06])|261|552|6(?:12|[2-47]1|5[17]|6[13]|80)|7(?:12|31|4[47])|8(?:16|2[014]|3[126]|6[136]|7[78]|83))[2-7]\",\"1(?:2[0-24]|3[0-25]|4[145]|[59][14]|6[1-9]|7[1257]|8[1-57-9])|2(?:1[257]|3[013]|4[01]|5[0137]|6[058]|78|8[1568]|9[14])|3(?:26|4[1-3]|5[34]|6[01489]|7[02-46]|8[159])|4(?:1[36]|2[1-47]|3[15]|5[12]|6[0-26-9]|7[0-24-9]|8[013-57]|9[014-7])|5(?:1[025]|22|[36][25]|4[28]|[578]1|9[15])|6(?:12(?:[2-6]|7[0-8])|74[2-7])|7(?:(?:2[14]|5[15])[2-6]|3171|61[346]|88(?:[2-7]|82))|8(?:70[2-6]|84(?:[2356]|7[19])|91(?:[3-6]|7[19]))|73[134][2-6]|(?:74[47]|8(?:16|2[014]|3[126]|6[136]|7[78]|83))(?:[2-6]|7[19])|(?:1(?:29|60|8[06])|261|552|6(?:[2-4]1|5[17]|6[13]|7(?:1|4[0189])|80)|7(?:12|88[01]))[2-7]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2[2457-9]|3[2-5]|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1[013-9]|28|3[129]|4[1-35689]|5[29]|6[02-5]|70)|807\",\"1(?:[2-479]|5[0235-9])|[2-5]|6(?:1[1358]|2(?:[2457]|84|95)|3(?:[2-4]|55)|4[235-7]|5[2-689]|6[24578]|7[235689]|8[1-6])|7(?:1(?:[013-8]|9[6-9])|28[6-8]|3(?:17|2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4|5[0-367])|70[13-7])|807[19]\",\"1(?:[2-479]|5(?:[0236-9]|5[013-9]))|[2-5]|6(?:2(?:84|95)|355|8(?:28[235-7]|3))|73179|807(?:1|9[1-3])|(?:1552|6(?:(?:1[1358]|2[2457]|3[2-4]|4[235-7]|5[2-689]|6[24578]|7[235689])\\\\d|8(?:[14-6]\\\\d|2[0-79]))|7(?:1(?:[013-8]\\\\d|9[6-9])|28[6-8]|3(?:2[0-49]|9[2-57])|4(?:1[2-4]|[29][0-7]|3[0-8]|[56]\\\\d|8[0-24-7])|5(?:2[1-3]|9[0-6])|6(?:0[5689]|2[5-9]|3[02-8]|4\\\\d|5[0-367])|70[13-7]))[2-7]\"],\"0$1\",1],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"16|[6-9]\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{2,4})(\\\\d{4})\",\"$1 $2 $3\",[\"18[06]\",\"18[06]0\"],0,1],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"18\"],0,1]],\"0\"],\"IO\":[\"246\",\"00\",\"3\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"3\"]]]],\"IQ\":[\"964\",\"00\",\"(?:1|7\\\\d\\\\d)\\\\d{7}|[2-6]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"IR\":[\"98\",\"00\",\"[1-9]\\\\d{9}|(?:[1-8]\\\\d\\\\d|9)\\\\d{3,4}\",[4,5,6,7,10],[[\"(\\\\d{4,5})\",\"$1\",[\"96\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4,5})\",\"$1 $2\",[\"(?:1[137]|2[13-68]|3[1458]|4[145]|5[1468]|6[16]|7[1467]|8[13467])[12689]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-8]\"],\"0$1\"]],\"0\"],\"IS\":[\"354\",\"00|1(?:0(?:01|[12]0)|100)\",\"(?:38\\\\d|[4-9])\\\\d{6}\",[7,9],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[4-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"3\"]]],0,0,0,0,0,0,0,\"00\"],\"IT\":[\"39\",\"00\",\"0\\\\d{5,11}|1\\\\d{8,10}|3(?:[0-8]\\\\d{7,10}|9\\\\d{7,8})|(?:43|55|70)\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?\",[6,7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{4,6})\",\"$1 $2\",[\"0[26]\"]],[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"0[13-57-9][0159]|8(?:03|4[17]|9[2-5])\",\"0[13-57-9][0159]|8(?:03|4[17]|9(?:2|3[04]|[45][0-4]))\"]],[\"(\\\\d{4})(\\\\d{2,6})\",\"$1 $2\",[\"0(?:[13-579][2-46-8]|8[236-8])\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"894\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[26]|5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"1(?:44|[679])|[378]|43\"]],[\"(\\\\d{3})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"0[13-57-9][0159]|14\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{5})\",\"$1 $2 $3\",[\"0[26]\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[03]\"]]],0,0,0,0,0,0,[[\"0(?:669[0-79]\\\\d{1,6}|831\\\\d{2,8})|0(?:1(?:[0159]\\\\d|[27][1-5]|31|4[1-4]|6[1356]|8[2-57])|2\\\\d\\\\d|3(?:[0159]\\\\d|2[1-4]|3[12]|[48][1-6]|6[2-59]|7[1-7])|4(?:[0159]\\\\d|[23][1-9]|4[245]|6[1-5]|7[1-4]|81)|5(?:[0159]\\\\d|2[1-5]|3[2-6]|4[1-79]|6[4-6]|7[1-578]|8[3-8])|6(?:[0-57-9]\\\\d|6[0-8])|7(?:[0159]\\\\d|2[12]|3[1-7]|4[2-46]|6[13569]|7[13-6]|8[1-59])|8(?:[0159]\\\\d|2[3-578]|3[2356]|[6-8][1-5])|9(?:[0159]\\\\d|[238][1-5]|4[12]|6[1-8]|7[1-6]))\\\\d{2,7}\"],[\"3[2-9]\\\\d{7,8}|(?:31|43)\\\\d{8}\",[9,10]],[\"80(?:0\\\\d{3}|3)\\\\d{3}\",[6,9]],[\"(?:0878\\\\d{3}|89(?:2\\\\d|3[04]|4(?:[0-4]|[5-9]\\\\d\\\\d)|5[0-4]))\\\\d\\\\d|(?:1(?:44|6[346])|89(?:38|5[5-9]|9))\\\\d{6}\",[6,8,9,10]],[\"1(?:78\\\\d|99)\\\\d{6}\",[9,10]],[\"3[2-8]\\\\d{9,10}\",[11,12]],0,0,[\"55\\\\d{8}\",[10]],[\"84(?:[08]\\\\d{3}|[17])\\\\d{3}\",[6,9]]]],\"JE\":[\"44\",\"00\",\"1534\\\\d{6}|(?:[3578]\\\\d|90)\\\\d{8}\",[10],0,\"0\",0,\"([0-24-8]\\\\d{5})$|0|180020\",\"1534$1\",0,0,[[\"1534[0-24-8]\\\\d{5}\"],[\"7(?:(?:(?:50|82)9|937)\\\\d|7(?:00[378]|97\\\\d))\\\\d{5}\"],[\"80(?:07(?:35|81)|8901)\\\\d{4}\"],[\"(?:8(?:4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|90(?:066[59]|1810|71(?:07|55)))\\\\d{4}\"],[\"701511\\\\d{4}\"],0,[\"(?:3(?:0(?:07(?:35|81)|8901)|3\\\\d{4}|4(?:4(?:4(?:05|42|69)|703)|5(?:041|800))|7(?:0002|1206))|55\\\\d{4})\\\\d{4}\"],[\"76(?:464|652)\\\\d{5}|76(?:0[0-28]|2[356]|34|4[01347]|5[49]|6[0-369]|77|8[14]|9[139])\\\\d{6}\"],[\"56\\\\d{8}\"]]],\"JM\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|658|900)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"658|876\"],\"JO\":[\"962\",\"00\",\"(?:(?:[2689]|7\\\\d)\\\\d|32|427|53)\\\\d{6}\",[8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2356]|87\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"70\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[47]\"],\"0$1\"]],\"0\"],\"JP\":[\"81\",\"010\",\"00[1-9]\\\\d{6,14}|[25-9]\\\\d{9}|(?:00|[1-9]\\\\d\\\\d)\\\\d{6}\",[8,9,10,11,12,13,14,15,16,17],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1-$2-$3\",[\"(?:12|57|99)0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:26|3[79]|4[56]|5[4-68]|6[3-5])|499|5(?:76|97)|746|8(?:3[89]|47|51)|9(?:80|9[16])\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:76|97)9|7468|8(?:3(?:8[7-9]|96)|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\",\"1(?:267|3(?:7[247]|9[278])|466|5(?:47|58|64)|6(?:3[245]|48|5[4-68]))|499[2468]|5(?:769|979[2-69])|7468|8(?:3(?:8[7-9]|96[2457-9])|477|51[2-9])|9(?:802|9(?:1[23]|69))|1(?:45|58)[67]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"60\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"3|4(?:2[09]|7[01])|6[1-9]\",\"3|4(?:2(?:0|9[02-69])|7(?:0[019]|1))|6[1-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"1(?:1|5[45]|77|88|9[69])|2(?:2[1-37]|3[0-269]|4[59]|5|6[24]|7[1-358]|8[1369]|9[0-38])|4(?:[28][1-9]|3[0-57]|[45]|6[248]|7[2-579]|9[29])|5(?:2|3[0459]|4[0-369]|5[29]|8[02389]|9[0-389])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9[2-6])|8(?:2[124589]|3[26-9]|49|51|6|7[0-468]|8[68]|9[019])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9[1-489])\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2(?:[127]|3[014-9])|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9[19])|62|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|8[1-9]|9[29])|5(?:2|3(?:[045]|9[0-8])|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0-2469])|3(?:[29]|60)|49|51|6(?:[0-24]|36|5[0-3589]|7[23]|9[01459])|7[0-468]|8[68])|9(?:[23][1-9]|4[15]|5[138]|6[1-3]|7[156]|8[189]|9(?:[1289]|3[34]|4[0178]))|(?:264|837)[016-9]|2(?:57|93)[015-9]|(?:25[0468]|422|838)[01]|(?:47[59]|59[89]|8(?:6[68]|9))[019]\",\"1(?:1|5(?:4[018]|5[017])|77|88|9[69])|2(?:2[127]|3[0-269]|4[59]|5(?:[1-3]|5[0-69]|9(?:17|99))|6(?:2|4[016-9])|7(?:[1-35]|8[0189])|8(?:[16]|3[0134]|9[0-5])|9(?:[028]|17))|4(?:2(?:[13-79]|8[014-6])|3[0-57]|[45]|6[248]|7[2-47]|9[29])|5(?:2|3(?:[045]|9(?:[0-58]|6[4-9]|7[0-35689]))|4[0-369]|5[29]|8[02389]|9[0-3])|7(?:2[02-46-9]|34|[58]|6[0249]|7[57]|9(?:[23]|4[0-59]|5[01569]|6[0167]))|8(?:2(?:[1258]|4[0-39]|9[0169])|3(?:[29]|60|7(?:[017-9]|6[6-8]))|49|51|6(?:[0-24]|36[2-57-9]|5(?:[0-389]|5[23])|6(?:[01]|9[178])|7(?:2[2-468]|3[78])|9[0145])|7[0-468]|8[68])|9(?:4[15]|5[138]|7[156]|8[189]|9(?:[1289]|3(?:31|4[357])|4[0178]))|(?:8294|96)[1-3]|2(?:57|93)[015-9]|(?:223|8699)[014-9]|(?:25[0468]|422|838)[01]|(?:48|8292|9[23])[1-9]|(?:47[59]|59[89]|8(?:68|9))[019]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3\",[\"[14]|[289][2-9]|5[3-9]|7[2-4679]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"800\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[25-9]\"],\"0$1\"]],\"0\",0,\"(000[2569]\\\\d{4,6})$|(?:(?:003768)0?)|0\",\"$1\"],\"KE\":[\"254\",\"000\",\"(?:[17]\\\\d\\\\d|900)\\\\d{6}|(?:2|80)0\\\\d{6,7}|[4-6]\\\\d{6,8}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"[24-6]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[17]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\"],\"KG\":[\"996\",\"00\",\"8\\\\d{9}|[235-9]\\\\d{8}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3(?:1[346]|[24-79])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-79]|88\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d)(\\\\d{2,3})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"KH\":[\"855\",\"00[14-9]\",\"1\\\\d{9}|[1-9]\\\\d{7,8}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"KI\":[\"686\",\"00\",\"(?:[37]\\\\d|6[0-79])\\\\d{6}|(?:[2-48]\\\\d|50)\\\\d{3}\",[5,8],0,\"0\"],\"KM\":[\"269\",\"00\",\"[3478]\\\\d{6}\",[7],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[3478]\"]]]],\"KN\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"869$1\",0,\"869\"],\"KP\":[\"850\",\"00|99\",\"85\\\\d{6}|(?:19\\\\d|[2-7])\\\\d{7}\",[8,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-7]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"KR\":[\"82\",\"00(?:[125689]|3(?:[46]5|91)|7(?:00|27|3|55|6[126]))\",\"00[1-9]\\\\d{8,11}|(?:[12]|5\\\\d{3})\\\\d{7}|[13-6]\\\\d{9}|(?:[1-6]\\\\d|80)\\\\d{7}|[3-6]\\\\d{4,5}|(?:00|7)0\\\\d{8}\",[5,6,8,9,10,11,12,13,14],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1-$2\",[\"(?:3[1-3]|[46][1-4]|5[1-5])1\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"1\"]],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1-$2-$3\",[\"[36]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1-$2-$3\",[\"[1346]|5[1-5]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2-$3\",[\"[57]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})(\\\\d{4})\",\"$1-$2-$3\",[\"5\"],\"0$1\"]],\"0\",0,\"0(8(?:[1-46-8]|5\\\\d\\\\d))?\"],\"KW\":[\"965\",\"00\",\"18\\\\d{5}|(?:[2569]\\\\d|41)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3,4})\",\"$1 $2\",[\"[169]|2(?:[235]|4[1-35-9])|52\"]],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[245]\"]]]],\"KY\":[\"1\",\"011\",\"(?:345|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"345$1\",0,\"345\"],\"KZ\":[\"7\",\"810\",\"8\\\\d{13}|[78]\\\\d{9}\",[10,14],0,\"8\",0,0,0,0,\"7\",0,\"8~10\"],\"LA\":[\"856\",\"00\",\"[23]\\\\d{9}|3\\\\d{8}|(?:[235-8]\\\\d|41)\\\\d{6}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2[13]|3[14]|[4-8]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\"],\"LB\":[\"961\",\"00\",\"[27-9]\\\\d{7}|[13-9]\\\\d{6}\",[7,8],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[13-69]|7(?:[2-57]|62|8[0-6]|9[04-9])|8[02-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[27-9]\"]]],\"0\"],\"LC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|758|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-8]\\\\d{6})$|1\",\"758$1\",0,\"758\"],\"LI\":[\"423\",\"00\",\"[68]\\\\d{8}|(?:[2378]\\\\d|90)\\\\d{5}\",[7,9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2379]|8(?:0[09]|7)\",\"[2379]|8(?:0(?:02|9)|7)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"69\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]]],\"0\",0,\"(1001)|0\"],\"LK\":[\"94\",\"00\",\"[1-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[1-689]\"],\"0$1\"]],\"0\"],\"LR\":[\"231\",\"00\",\"(?:[2457]\\\\d|33|88)\\\\d{7}|(?:2\\\\d|[4-6])\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4[67]|[56]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-578]\"],\"0$1\"]],\"0\"],\"LS\":[\"266\",\"00\",\"(?:[256]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2568]\"]]]],\"LT\":[\"370\",\"00\",\"(?:[3469]\\\\d|52|[78]0)\\\\d{6}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"52[0-7]\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0 $1\",1],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"37|4(?:[15]|6[1-8])\"],\"(0-$1)\",1],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[3-6]\"],\"(0-$1)\",1]],\"0\",0,\"[08]\"],\"LU\":[\"352\",\"00\",\"35[013-9]\\\\d{4,8}|6\\\\d{8}|35\\\\d{2,4}|(?:[2457-9]\\\\d|3[0-46-9])\\\\d{2,9}\",[4,5,6,7,8,9,10,11],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"2(?:0[2-689]|[2-9])|[3-57]|8(?:0[2-9]|[13-9])|9(?:0[89]|[2-579])\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"20[2-689]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,5})\",\"$1 $2 $3 $4\",[\"[3-57]|8[13-9]|9(?:0[89]|[2-579])|(?:2|80)[2-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"80[01]|90[015]\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"20\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{1,2})\",\"$1 $2 $3 $4 $5\",[\"20\"]]],0,0,\"(15(?:0[06]|1[12]|[35]5|4[04]|6[26]|77|88|99)\\\\d)\"],\"LV\":[\"371\",\"00\",\"(?:[268]\\\\d|78|90)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2679]|8[01]\"]]]],\"LY\":[\"218\",\"00\",\"[2-9]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MA\":[\"212\",\"00\",\"[5-8]\\\\d{8}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1-$2\",[\"892\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1-$2\",[\"8(?:0[0-7]|9)\"],\"0$1\"],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[5-8]\"],\"0$1\"]],\"0\",0,0,0,0,\"[5-8]\"],\"MC\":[\"377\",\"00\",\"(?:[3489]|[67]\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"4\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[389]\"]],[\"(\\\\d)(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4 $5\",[\"[67]\"],\"0$1\"]],\"0\"],\"MD\":[\"373\",\"00\",\"(?:[235-7]\\\\d|[89]0)\\\\d{6}\",[8],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"22|3\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"[25-7]\"],\"0$1\"]],\"0\"],\"ME\":[\"382\",\"00\",\"(?:20|[3-79]\\\\d)\\\\d{6}|80\\\\d{6,7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"]],\"0\"],\"MF\":[\"590\",\"00\",\"7090\\\\d{5}|(?:[56]9|[89]\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"(?:59(?:0(?:0[079]|[14]3|[27][79]|3[03-7]|5[0-268]|87)|87\\\\d)|80[6-9]\\\\d\\\\d)\\\\d{4}\"],[\"(?:69(?:0\\\\d\\\\d|1(?:2[2-9]|3[0-5]))|7090[0-4])\\\\d{4}\"],[\"80[0-5]\\\\d{6}\"],[\"8[129]\\\\d{7}\"],0,0,0,0,[\"9(?:(?:39[5-7]|76[018])\\\\d|475[0-6])\\\\d{4}\"]]],\"MG\":[\"261\",\"00\",\"[23]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[23]\"],\"0$1\"]],\"0\",0,\"([24-9]\\\\d{6})$|0\",\"20$1\"],\"MH\":[\"692\",\"011\",\"329\\\\d{4}|(?:[256]\\\\d|45)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[2-6]\"]]],\"1\"],\"MK\":[\"389\",\"00\",\"[2-578]\\\\d{7}\",[8],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2|34[47]|4(?:[37]7|5[47]|64)\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[347]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[58]\"],\"0$1\"]],\"0\"],\"ML\":[\"223\",\"00\",\"[24-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24-9]\"]]]],\"MM\":[\"95\",\"00\",\"1\\\\d{5,7}|95\\\\d{6}|(?:[4-7]|9[0-46-9])\\\\d{6,8}|(?:2|8\\\\d)\\\\d{5,8}\",[6,7,8,9,10],[[\"(\\\\d)(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"16|2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"4(?:[2-46]|5[3-5])|5|6(?:[1-689]|7[235-7])|7(?:[0-4]|5[2-7])|8[1-5]|(?:60|86)[23]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[12]|452|678|86\",\"[12]|452|6788|86\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[4-7]|8[1-35]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4,6})\",\"$1 $2 $3\",[\"9(?:2[0-4]|[35-9]|4[137-9])\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"92\"],\"0$1\"],[\"(\\\\d)(\\\\d{5})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"MN\":[\"976\",\"001\",\"[12]\\\\d{7,9}|[5-9]\\\\d{7}\",[8,9,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"11|2[16]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]],[\"(\\\\d{3})(\\\\d{5,6})\",\"$1 $2\",[\"[12]2[1-3]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5,6})\",\"$1 $2\",[\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])\",\"[12](?:27|3[2-8]|4[2-68]|5[1-4689])[0-3]\"],\"0$1\"],[\"(\\\\d{5})(\\\\d{4,5})\",\"$1 $2\",[\"[12]\"],\"0$1\"]],\"0\"],\"MO\":[\"853\",\"00\",\"0800\\\\d{3}|(?:28|[68]\\\\d)\\\\d{6}\",[7,8],[[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[268]\"]]]],\"MP\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:67|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"670$1\",0,\"670\"],\"MQ\":[\"596\",\"00\",\"7091\\\\d{5}|(?:[56]9|[89]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-79]|8(?:0[6-9]|[36])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"MR\":[\"222\",\"00\",\"(?:[2-4]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-48]\"]]]],\"MS\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|664|900)\\\\d{7}\",[10],0,\"1\",0,\"([34]\\\\d{6})$|1\",\"664$1\",0,\"664\"],\"MT\":[\"356\",\"00\",\"3550\\\\d{4}|(?:[2579]\\\\d\\\\d|800)\\\\d{5}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[2357-9]\"]]]],\"MU\":[\"230\",\"0(?:0|[24-7]0|3[03])\",\"(?:[57]|8\\\\d\\\\d)\\\\d{7}|[2-468]\\\\d{6}\",[7,8,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-46]|8[013]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[57]\"]],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"8\"]]],0,0,0,0,0,0,0,\"020\"],\"MV\":[\"960\",\"0(?:0|19)\",\"(?:800|9[0-57-9]\\\\d)\\\\d{7}|[34679]\\\\d{6}\",[7,10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[34679]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]],0,0,0,0,0,0,0,\"00\"],\"MW\":[\"265\",\"00\",\"(?:[1289]\\\\d|31|77)\\\\d{7}|1\\\\d{6}\",[7,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[137-9]\"],\"0$1\"]],\"0\"],\"MX\":[\"52\",\"0[09]\",\"[2-9]\\\\d{9}\",[10],[[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"33|5[56]|81\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"MY\":[\"60\",\"00\",\"1\\\\d{8,9}|(?:3\\\\d|[4-9])\\\\d{7}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"[4-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1-$2 $3\",[\"1(?:[02469]|[378][1-9]|53)|8\",\"1(?:[02469]|[37][1-9]|53|8(?:[1-46-9]|5[7-9]))|8\"],\"0$1\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"3\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1-$2-$3-$4\",[\"1(?:[367]|80)\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1-$2 $3\",[\"15\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1-$2 $3\",[\"1\"],\"0$1\"]],\"0\"],\"MZ\":[\"258\",\"00\",\"(?:2|8\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2|8[2-79]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]]]],\"NA\":[\"264\",\"00\",\"[68]\\\\d{7,8}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"88\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"87\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"NC\":[\"687\",\"00\",\"(?:050|[2-57-9]\\\\d\\\\d)\\\\d{3}\",[6],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1.$2.$3\",[\"[02-57-9]\"]]]],\"NE\":[\"227\",\"00\",\"[027-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"08\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[089]|2[013]|7[0467]\"]]]],\"NF\":[\"672\",\"00\",\"[13]\\\\d{5}\",[6],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"1[0-3]\"]],[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"[13]\"]]],0,0,\"([0-258]\\\\d{4})$\",\"3$1\"],\"NG\":[\"234\",\"009\",\"(?:20|9\\\\d)\\\\d{8}|[78]\\\\d{9,13}\",[10,11,12,13,14],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"20[129]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})(\\\\d{5,6})\",\"$1 $2 $3\",[\"[78]\"],\"0$1\"]],\"0\"],\"NI\":[\"505\",\"00\",\"(?:1800|[25-8]\\\\d{3})\\\\d{4}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[125-8]\"]]]],\"NL\":[\"31\",\"00\",\"(?:[124-7]\\\\d\\\\d|3(?:[02-9]\\\\d|1[0-8]))\\\\d{6}|8\\\\d{6,9}|9\\\\d{6,10}|1\\\\d{4,5}\",[5,6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{4,7})\",\"$1 $2\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"66\"],\"0$1\"],[\"(\\\\d)(\\\\d{8})\",\"$1 $2\",[\"6\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1[16-8]|2[259]|3[124]|4[17-9]|5[124679]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-578]|91\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"9\"],\"0$1\"]],\"0\"],\"NO\":[\"47\",\"00\",\"(?:0|[2-9]\\\\d{3})\\\\d{4}\",[5,8],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[2-79]\"]]],0,0,0,0,0,\"[02-689]|7[0-8]\"],\"NP\":[\"977\",\"00\",\"(?:1\\\\d|9)\\\\d{9}|[1-9]\\\\d{7}\",[8,10,11],[[\"(\\\\d)(\\\\d{7})\",\"$1-$2\",[\"1[2-6]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1-$2\",[\"1[01]|[2-8]|9(?:[1-59]|[67][2-6])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"9\"]]],\"0\"],\"NR\":[\"674\",\"00\",\"(?:222|444|(?:55|8\\\\d)\\\\d|666|777|999)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[24-9]\"]]]],\"NU\":[\"683\",\"00\",\"(?:[4-7]|888\\\\d)\\\\d{3}\",[4,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"8\"]]]],\"NZ\":[\"64\",\"0(?:0|161)\",\"[1289]\\\\d{9}|50\\\\d{5}(?:\\\\d{2,3})?|[27-9]\\\\d{7,8}|(?:[34]\\\\d|6[0-35-9])\\\\d{6}|8\\\\d{4,6}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,8})\",\"$1 $2\",[\"8[1-79]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"50[036-8]|8|90\",\"50(?:[0367]|88)|8|90\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"24|[346]|7[2-57-9]|9[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:10|74)|[589]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"1|2[028]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,5})\",\"$1 $2 $3\",[\"2(?:[169]|7[0-35-9])|7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"00\"],\"OM\":[\"968\",\"00\",\"(?:1505|[279]\\\\d{3}|500)\\\\d{4}|800\\\\d{5,6}\",[7,8,9],[[\"(\\\\d{3})(\\\\d{4,6})\",\"$1 $2\",[\"[58]\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[179]\"]]]],\"PA\":[\"507\",\"00\",\"(?:00800|8\\\\d{3})\\\\d{6}|[68]\\\\d{7}|[1-57-9]\\\\d{6}\",[7,8,10,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[1-57-9]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1-$2\",[\"[68]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]]],\"PE\":[\"51\",\"00|19(?:1[124]|77|90)00\",\"(?:[14-8]|9\\\\d)\\\\d{7}\",[8,9],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"1\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[4-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"]]],\"0\",0,0,0,0,0,0,\"00\",\" Anexo \"],\"PF\":[\"689\",\"00\",\"4\\\\d{5}(?:\\\\d{2})?|8\\\\d{7,8}\",[6,8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"44\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"4|8[7-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"PG\":[\"675\",\"00|140[1-3]\",\"(?:180|[78]\\\\d{3})\\\\d{4}|(?:[2-589]\\\\d|64)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"18|[2-69]|85\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[78]\"]]],0,0,0,0,0,0,0,\"00\"],\"PH\":[\"63\",\"00\",\"(?:[2-7]|9\\\\d)\\\\d{8}|2\\\\d{5}|(?:1800|8)\\\\d{7,9}\",[6,8,9,10,11,12,13],[[\"(\\\\d)(\\\\d{5})\",\"$1 $2\",[\"2\"],\"(0$1)\"],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"3(?:23|39|46)|4(?:2[3-6]|[35]9|4[26]|76)|544|88[245]|(?:52|64|86)2\",\"3(?:230|397|461)|4(?:2(?:35|[46]4|51)|396|4(?:22|63)|59[347]|76[15])|5(?:221|446)|642[23]|8(?:622|8(?:[24]2|5[13]))\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"346|4(?:27|9[35])|883\",\"3469|4(?:279|9(?:30|56))|8834\"],\"(0$1)\"],[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|8[2-8]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]],[\"(\\\\d{4})(\\\\d{1,2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3 $4\",[\"1\"]]],\"0\"],\"PK\":[\"92\",\"00\",\"122\\\\d{6}|[24-8]\\\\d{10,11}|9(?:[013-9]\\\\d{8,10}|2(?:[01]\\\\d\\\\d|2(?:[06-8]\\\\d|1[01]))\\\\d{7})|(?:[2-8]\\\\d{3}|92(?:[0-7]\\\\d|8[1-9]))\\\\d{6}|[24-9]\\\\d{8}|[89]\\\\d{7}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,7})\",\"$1 $2 $3\",[\"[89]0\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"1\"]],[\"(\\\\d{3})(\\\\d{6,7})\",\"$1 $2\",[\"2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:2[2-8]|3[27-9]|4[2-6]|6[3569]|9[25-8])\",\"9(?:2[3-8]|98)|(?:2(?:3[2358]|4[2-4]|9[2-8])|45[3479]|54[2-467]|60[468]|72[236]|8(?:2[2-689]|3[23578]|4[3478]|5[2356])|9(?:22|3[27-9]|4[2-6]|6[3569]|9[25-7]))[2-9]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{7,8})\",\"$1 $2\",[\"(?:2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91)[2-9]\"],\"(0$1)\"],[\"(\\\\d{5})(\\\\d{5})\",\"$1 $2\",[\"58\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{7})\",\"$1 $2\",[\"3\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"2[125]|4[0-246-9]|5[1-35-7]|6[1-8]|7[14]|8[16]|91\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[24-9]\"],\"(0$1)\"]],\"0\"],\"PL\":[\"48\",\"00\",\"(?:6|8\\\\d\\\\d)\\\\d{7}|[1-9]\\\\d{6}(?:\\\\d{2})?|[26]\\\\d{5}\",[6,7,8,9,10],[[\"(\\\\d{5})\",\"$1\",[\"19\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"11|20|64\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"30|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])1\",\"30|(?:1[2-8]|2[2-69]|3[2-4]|4[1-468]|5[24-689]|6[1-3578]|7[14-7]|8[1-79]|9[145])19\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"64\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"21|39|45|5[0137]|6[0469]|7[02389]|8(?:0[14]|8)\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"1[2-8]|[2-7]|8[1-79]|9[145]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"8\"]]]],\"PM\":[\"508\",\"00\",\"[78]\\\\d{8}|[2-9]\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[2-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"],\"0$1\"]],\"0\"],\"PR\":[\"1\",\"011\",\"(?:[589]\\\\d\\\\d|787)\\\\d{7}\",[10],0,\"1\",0,0,0,0,\"787|939\"],\"PS\":[\"970\",\"00\",\"[2489]2\\\\d{6}|(?:1\\\\d|5)\\\\d{8}\",[8,9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[2489]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"PT\":[\"351\",\"00\",\"1693\\\\d{5}|(?:[26-9]\\\\d|30)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2[12]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"16|[236-9]\"]]]],\"PW\":[\"680\",\"01[12]\",\"(?:[24-8]\\\\d\\\\d|345|900)\\\\d{4}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-9]\"]]]],\"PY\":[\"595\",\"00\",\"[36-8]\\\\d{5,8}|4\\\\d{6,8}|59\\\\d{6}|9\\\\d{5,10}|(?:2\\\\d|5[0-8])\\\\d{6,7}\",[6,7,8,9,10,11],[[\"(\\\\d{3})(\\\\d{3,6})\",\"$1 $2\",[\"[2-9]0\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"3[289]|4[246-8]|61|7[1-3]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{3})(\\\\d{4,5})\",\"$1 $2\",[\"2[279]|3[13-5]|4[359]|5|6(?:[34]|7[1-46-8])|7[46-8]|85\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2[14-68]|3[26-9]|4[1246-8]|6(?:1|75)|7[1-35]|8[1-36]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"87\"]],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"9(?:[5-79]|8[1-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-8]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"9\"]]],\"0\"],\"QA\":[\"974\",\"00\",\"800\\\\d{4}|(?:2|800)\\\\d{6}|(?:0080|[3-7])\\\\d{7}\",[7,8,9,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"2[136]|8\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[3-7]\"]]]],\"RE\":[\"262\",\"00\",\"709\\\\d{6}|(?:26|[689]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[26-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,[[\"2631[0-6]\\\\d{4}|26(?:2\\\\d|30|88)\\\\d{5}\"],[\"(?:69(?:2\\\\d\\\\d|3(?:[06][0-6]|1[0-3]|2[0-2]|3[0-39]|4\\\\d|5[0-5]|7[0-37]|8[0-8]|9[0-479]))|7092[0-3])\\\\d{4}\"],[\"80\\\\d{7}\"],[\"89[1-37-9]\\\\d{6}\"],0,0,0,0,[\"9(?:399[0-3]|479[0-6]|76(?:2[278]|3[0-37]))\\\\d{4}\"],[\"8(?:1[019]|2[0156]|84|90)\\\\d{6}\"]]],\"RO\":[\"40\",\"00\",\"(?:[236-8]\\\\d|90)\\\\d{7}|[23]\\\\d{5}\",[6,9],[[\"(\\\\d{3})(\\\\d{3})\",\"$1 $2\",[\"2[3-6]\",\"2[3-6]\\\\d9\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"219|31\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[23]1\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[236-9]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\" int \"],\"RS\":[\"381\",\"00\",\"38[02-9]\\\\d{6,9}|6\\\\d{7,9}|90\\\\d{4,8}|38\\\\d{5,6}|(?:7\\\\d\\\\d|800)\\\\d{3,9}|(?:[12]\\\\d|3[0-79])\\\\d{5,10}\",[6,7,8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3,9})\",\"$1 $2\",[\"(?:2[389]|39)0|[7-9]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{5,10})\",\"$1 $2\",[\"[1-36]\"],\"0$1\"]],\"0\"],\"RU\":[\"7\",\"810\",\"8\\\\d{13}|[347-9]\\\\d{9}\",[10,14],[[\"(\\\\d{4})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-8]|2[1-9])\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:1[23]|[2-9]2))\",\"7(?:1(?:[0-356]2|4[29]|7|8[27])|2(?:13[03-69]|62[013-9]))|72[1-57-9]2\"],\"8 ($1)\",1],[\"(\\\\d{5})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"7(?:1[0-68]|2[1-9])\",\"7(?:1(?:[06][3-6]|[18]|2[35]|[3-5][3-5])|2(?:[13][3-5]|[24-689]|7[457]))\",\"7(?:1(?:0(?:[356]|4[023])|[18]|2(?:3[013-9]|5)|3[45]|43[013-79]|5(?:3[1-8]|4[1-7]|5)|6(?:3[0-35-9]|[4-6]))|2(?:1(?:3[178]|[45])|[24-689]|3[35]|7[457]))|7(?:14|23)4[0-8]|71(?:33|45)[1-79]\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"8 ($1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[349]|8(?:[02-7]|1[1-8])\"],\"8 ($1)\",1],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"8\"],\"8 ($1)\"]],\"8\",0,0,0,0,\"[3489]\",0,\"8~10\"],\"RW\":[\"250\",\"00\",\"(?:06|[27]\\\\d\\\\d|[89]00)\\\\d{6}\",[8,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[7-9]\"],\"0$1\"]],\"0\"],\"SA\":[\"966\",\"00\",\"(?:[15]\\\\d|800|92)\\\\d{7}\",[9,10],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"9\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"5\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]]],\"0\"],\"SB\":[\"677\",\"0[01]\",\"[6-9]\\\\d{6}|[1-6]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"6[89]|7|8[4-9]|9(?:[1-8]|9[0-8])\"]]]],\"SC\":[\"248\",\"010|0[0-2]\",\"(?:[2489]\\\\d|64)\\\\d{5}\",[7],[[\"(\\\\d)(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[246]|9[57]\"]]],0,0,0,0,0,0,0,\"00\"],\"SD\":[\"249\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"SE\":[\"46\",\"00\",\"(?:[26]\\\\d\\\\d|9)\\\\d{9}|[1-9]\\\\d{8}|[1-689]\\\\d{7}|[1-4689]\\\\d{6}|2\\\\d{5}\",[6,7,8,9,10,12],[[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"20\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"9(?:00|39|44|9)\"],\"0$1\",0,\"$1 $2\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3\",[\"[12][136]|3[356]|4[0246]|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d)(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{2})\",\"$1-$2 $3\",[\"1[2457]|2(?:[247-9]|5[0138])|3[0247-9]|4[1357-9]|5[0-35-9]|6(?:[125689]|4[02-57]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{3})(\\\\d{2,3})(\\\\d{3})\",\"$1-$2 $3\",[\"9(?:00|39|44)\"],\"0$1\",0,\"$1 $2 $3\"],[\"(\\\\d{2})(\\\\d{2,3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"1[13689]|2[0136]|3[1356]|4[0246]|54|6[03]|90[1-9]\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"10|7\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"8\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4\",[\"[13-5]|2(?:[247-9]|5[0138])|6(?:[124-689]|7[0-2])|9(?:[125-8]|3[02-5]|4[0-3])\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{3})\",\"$1-$2 $3 $4\",[\"9\"],\"0$1\",0,\"$1 $2 $3 $4\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1-$2 $3 $4 $5\",[\"[26]\"],\"0$1\",0,\"$1 $2 $3 $4 $5\"]],\"0\"],\"SG\":[\"65\",\"0[0-3]\\\\d\",\"(?:(?:1\\\\d|8)\\\\d\\\\d|7000)\\\\d{7}|[3689]\\\\d{7}\",[8,10,11],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[369]|8(?:0[1-9]|[1-9])\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"]],[\"(\\\\d{4})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"1\"]]]],\"SH\":[\"290\",\"00\",\"(?:[256]\\\\d|8)\\\\d{3}\",[4,5],0,0,0,0,0,0,\"[256]\"],\"SI\":[\"386\",\"00|10(?:22|66|88|99)\",\"[1-7]\\\\d{7}|8\\\\d{4,7}|90\\\\d{4,6}\",[5,6,7,8],[[\"(\\\\d{2})(\\\\d{3,6})\",\"$1 $2\",[\"8[09]|9\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"59|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[37][01]|4[0139]|51|6\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[1-57]\"],\"(0$1)\"]],\"0\",0,0,0,0,0,0,\"00\"],\"SJ\":[\"47\",\"00\",\"0\\\\d{4}|(?:[489]\\\\d|79)\\\\d{6}\",[5,8],0,0,0,0,0,0,\"79\"],\"SK\":[\"421\",\"00\",\"[2-689]\\\\d{8}|[2-59]\\\\d{6}|[2-5]\\\\d{5}\",[6,7,9],[[\"(\\\\d)(\\\\d{2})(\\\\d{3,4})\",\"$1 $2 $3\",[\"21\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{2,3})\",\"$1 $2 $3\",[\"[3-5][1-8]1\",\"[3-5][1-8]1[67]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{3})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"2\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[689]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[3-5]\"],\"0$1\"]],\"0\"],\"SL\":[\"232\",\"00\",\"(?:[237-9]\\\\d|66)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[236-9]\"],\"(0$1)\"]],\"0\"],\"SM\":[\"378\",\"00\",\"(?:0549|[5-7]\\\\d)\\\\d{6}\",[8,10],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[5-7]\"]],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"0\"]]],0,0,\"([89]\\\\d{5})$\",\"0549$1\"],\"SN\":[\"221\",\"00\",\"(?:[378]\\\\d|93)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[379]\"]]]],\"SO\":[\"252\",\"00\",\"[346-9]\\\\d{8}|[12679]\\\\d{7}|[1-5]\\\\d{6}|[1348]\\\\d{5}\",[6,7,8,9],[[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"8[125]\"]],[\"(\\\\d{6})\",\"$1\",[\"[134]\"]],[\"(\\\\d)(\\\\d{6})\",\"$1 $2\",[\"[15]|2[0-79]|3[0-46-8]|4[0-7]\"]],[\"(\\\\d)(\\\\d{7})\",\"$1 $2\",[\"(?:2|90)4|[67]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[348]|64|79|90\"]],[\"(\\\\d{2})(\\\\d{5,7})\",\"$1 $2\",[\"1|28|6[0-35-9]|7[67]|9[2-9]\"]]],\"0\"],\"SR\":[\"597\",\"00\",\"(?:[2-5]|[6-9]\\\\d)\\\\d{5}\",[6,7],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1-$2-$3\",[\"56\"]],[\"(\\\\d{3})(\\\\d{3})\",\"$1-$2\",[\"[2-5]\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"[6-9]\"]]]],\"SS\":[\"211\",\"00\",\"[19]\\\\d{8}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[19]\"],\"0$1\"]],\"0\"],\"ST\":[\"239\",\"00\",\"(?:22|9\\\\d)\\\\d{5}\",[7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[29]\"]]]],\"SV\":[\"503\",\"00\",\"[25-7]\\\\d{7}|(?:80\\\\d|900)\\\\d{4}(?:\\\\d{4})?\",[7,8,11],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[89]\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[25-7]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"]]]],\"SX\":[\"1\",\"011\",\"7215\\\\d{6}|(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"(5\\\\d{6})$|1\",\"721$1\",0,\"721\"],\"SY\":[\"963\",\"00\",\"[1-359]\\\\d{8}|[1-5]\\\\d{7}\",[8,9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-4]|5[1-3]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[59]\"],\"0$1\",1]],\"0\"],\"SZ\":[\"268\",\"00\",\"0800\\\\d{4}|(?:[237]\\\\d|900)\\\\d{6}\",[8,9],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[0237]\"]],[\"(\\\\d{5})(\\\\d{4})\",\"$1 $2\",[\"9\"]]]],\"TA\":[\"290\",\"00\",\"8\\\\d{3}\",[4],0,0,0,0,0,0,\"8\"],\"TC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|649|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-479]\\\\d{6})$|1\",\"649$1\",0,\"649\"],\"TD\":[\"235\",\"00|16\",\"(?:22|[3689]\\\\d|77)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[236-9]\"]]],0,0,0,0,0,0,0,\"00\"],\"TG\":[\"228\",\"00\",\"[279]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[279]\"]]]],\"TH\":[\"66\",\"00[1-9]\",\"(?:001800|[2-57]|[689]\\\\d)\\\\d{7}|1\\\\d{7,9}\",[8,9,10,13],[[\"(\\\\d)(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"2\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[13-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"1\"]]],\"0\"],\"TJ\":[\"992\",\"810\",\"(?:[0-57-9]\\\\d|66)\\\\d{7}\",[9],[[\"(\\\\d{6})(\\\\d)(\\\\d{2})\",\"$1 $2 $3\",[\"331\",\"3317\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"44[02-479]|[34]7\"]],[\"(\\\\d{4})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"3(?:[1245]|3[12])\"]],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"\\\\d\"]]],0,0,0,0,0,0,0,\"8~10\"],\"TK\":[\"690\",\"00\",\"[2-47]\\\\d{3,6}\",[4,5,6,7]],\"TL\":[\"670\",\"00\",\"7\\\\d{7}|(?:[2-47]\\\\d|[89]0)\\\\d{5}\",[7,8],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[2-489]|70\"]],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"7\"]]]],\"TM\":[\"993\",\"810\",\"(?:[1-6]\\\\d|71)\\\\d{6}\",[8],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"12\"],\"(8 $1)\"],[\"(\\\\d{3})(\\\\d)(\\\\d{2})(\\\\d{2})\",\"$1 $2-$3-$4\",[\"[1-5]\"],\"(8 $1)\"],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"[67]\"],\"8 $1\"]],\"8\",0,0,0,0,0,0,\"8~10\"],\"TN\":[\"216\",\"00\",\"[2-57-9]\\\\d{7}\",[8],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-57-9]\"]]]],\"TO\":[\"676\",\"00\",\"(?:0800|(?:[5-8]\\\\d\\\\d|999)\\\\d)\\\\d{3}|[2-8]\\\\d{4}\",[5,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1-$2\",[\"[2-4]|50|6[09]|7[0-24-69]|8[05]\"]],[\"(\\\\d{4})(\\\\d{3})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[5-9]\"]]]],\"TR\":[\"90\",\"00\",\"4\\\\d{6}|8\\\\d{11,12}|(?:[2-58]\\\\d\\\\d|900)\\\\d{7}\",[7,10,12,13],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"512|8[01589]|90\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"5(?:[0-579]|61)\",\"5(?:[0-579]|61[06])\",\"5(?:[0-579]|61[06]1)\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[24][1-8]|3[1-9]\"],\"(0$1)\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{6,7})\",\"$1 $2 $3\",[\"80\"],\"0$1\",1]],\"0\"],\"TT\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-46-8]\\\\d{6})$|1\",\"868$1\",0,\"868\"],\"TV\":[\"688\",\"00\",\"(?:2|7\\\\d\\\\d|90)\\\\d{4}\",[5,6,7],[[\"(\\\\d{2})(\\\\d{3})\",\"$1 $2\",[\"2\"]],[\"(\\\\d{2})(\\\\d{4})\",\"$1 $2\",[\"90\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"TW\":[\"886\",\"0(?:0[25-79]|19)\",\"[2-689]\\\\d{8}|7\\\\d{9,10}|[2-8]\\\\d{7}|2\\\\d{6}\",[7,8,9,10,11],[[\"(\\\\d{2})(\\\\d)(\\\\d{4})\",\"$1 $2 $3\",[\"202\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"826\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{2})(\\\\d{3})\",\"$1 $2 $3\",[\"83\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"82\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[25]0|37|49|8[09]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"[23568]|4(?:0[02-48]|[1-478])|7[1-9]\",\"[23568]|4(?:0[2-48]|[1-478])|(?:400|7)[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4,5})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\",0,0,0,0,0,0,0,\"#\"],\"TZ\":[\"255\",\"00[056]\",\"(?:[25-8]\\\\d|41|90)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[24]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"5\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[67]\"],\"0$1\"]],\"0\"],\"UA\":[\"380\",\"00\",\"[89]\\\\d{9}|[3-9]\\\\d{8}\",[9,10],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"6[12][29]|(?:3[1-8]|4[136-8]|5[12457]|6[49])2|(?:56|65)[24]\",\"6[12][29]|(?:35|4[1378]|5[12457]|6[49])2|(?:56|65)[24]|(?:3[1-46-8]|46)2[013-9]\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6[0135689]|7[4-6])|6(?:[12][3-7]|[459])\",\"3[1-8]|4(?:[1367]|[45][6-9]|8[4-6])|5(?:[1-5]|6(?:[015689]|3[02389])|7[4-6])|6(?:[12][3-7]|[459])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[3-7]|89|9[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[89]\"],\"0$1\"]],\"0\",0,0,0,0,0,0,\"0~0\"],\"UG\":[\"256\",\"00[057]\",\"800\\\\d{6}|(?:[29]0|[347]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{4})(\\\\d{5})\",\"$1 $2\",[\"202\",\"2024\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{6})\",\"$1 $2\",[\"[27-9]|4(?:6[45]|[7-9])\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[34]\"],\"0$1\"]],\"0\"],\"US\":[\"1\",\"011\",\"[2-9]\\\\d{9}|3\\\\d{6}\",[10],[[\"(\\\\d{3})(\\\\d{4})\",\"$1-$2\",[\"310\"],0,1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"($1) $2-$3\",[\"[2-9]\"],0,1,\"$1-$2-$3\"]],\"1\",0,0,0,0,0,[[\"(?:274[27]|(?:472|983)[2-47-9])\\\\d{6}|(?:2(?:0[1-35-9]|1[02-9]|2[03-57-9]|3[1459]|4[08]|5[1-46]|6[0279]|7[0269]|8[13])|3(?:0[1-57-9]|1[02-9]|2[013-79]|3[0-24679]|4[167]|5[0-3]|6[01349]|8[056])|4(?:0[124-9]|1[02-579]|2[3-5]|3[0245]|4[023578]|58|6[349]|7[0589]|8[04])|5(?:0[1-57-9]|1[0235-8]|20|3[0149]|4[01]|5[179]|6[1-47]|7[0-5]|8[0256])|6(?:0[1-35-9]|1[024-9]|2[03689]|3[016]|4[0156]|5[01679]|6[0-279]|78|8[0-269])|7(?:0[1-46-8]|1[2-9]|2[04-8]|3[0-2478]|4[0378]|5[47]|6[02359]|7[0-59]|8[156])|8(?:0[1-68]|1[02-8]|2[0168]|3[0-2589]|4[03578]|5[046-9]|6[02-5]|7[028])|9(?:0[1346-9]|1[02-9]|2[0589]|3[0146-8]|4[01357-9]|5[12469]|7[0-3589]|8[04-69]))[2-9]\\\\d{6}\"],[\"\"],[\"8(?:00|33|44|55|66|77|88)[2-9]\\\\d{6}\"],[\"900[2-9]\\\\d{6}\"],[\"52(?:3(?:[2-46-9][02-9]\\\\d|5(?:[02-46-9]\\\\d|5[0-46-9]))|4(?:[2-478][02-9]\\\\d|5(?:[034]\\\\d|2[024-9]|5[0-46-9])|6(?:0[1-9]|[2-9]\\\\d)|9(?:[05-9]\\\\d|2[0-5]|49)))\\\\d{4}|52[34][2-9]1[02-9]\\\\d{4}|5(?:00|2[125-9]|3[23]|44|66|77|88)[2-9]\\\\d{6}\"]]],\"UY\":[\"598\",\"0(?:0|1[3-9]\\\\d)\",\"0004\\\\d{2,9}|[1249]\\\\d{7}|2\\\\d{3,4}|(?:[49]\\\\d|80)\\\\d{5}\",[4,5,6,7,8,9,10,11,12,13],[[\"(\\\\d{4,5})\",\"$1\",[\"21\"]],[\"(\\\\d{3})(\\\\d{3,4})\",\"$1 $2\",[\"0\"]],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[49]0|8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"9\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[124]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"0\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3 $4\",[\"0\"]]],\"0\",0,0,0,0,0,0,\"00\",\" int. \"],\"UZ\":[\"998\",\"00\",\"(?:20|33|[5-9]\\\\d)\\\\d{7}\",[9],[[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"[235-9]\"]]]],\"VA\":[\"39\",\"00\",\"0\\\\d{5,10}|3[0-8]\\\\d{7,10}|55\\\\d{8}|8\\\\d{5}(?:\\\\d{2,4})?|(?:1\\\\d|39)\\\\d{7,8}\",[6,7,8,9,10,11,12],0,0,0,0,0,0,\"06698\"],\"VC\":[\"1\",\"011\",\"(?:[58]\\\\d\\\\d|784|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-7]\\\\d{6})$|1\",\"784$1\",0,\"784\"],\"VE\":[\"58\",\"00\",\"[68]00\\\\d{7}|(?:[24]\\\\d|[59]0)\\\\d{8}\",[10],[[\"(\\\\d{3})(\\\\d{7})\",\"$1-$2\",[\"[24-689]\"],\"0$1\"]],\"0\"],\"VG\":[\"1\",\"011\",\"(?:284|[58]\\\\d\\\\d|900)\\\\d{7}\",[10],0,\"1\",0,\"([2-578]\\\\d{6})$|1\",\"284$1\",0,\"284\"],\"VI\":[\"1\",\"011\",\"[58]\\\\d{9}|(?:34|90)0\\\\d{7}\",[10],0,\"1\",0,\"([2-9]\\\\d{6})$|1\",\"340$1\",0,\"340\"],\"VN\":[\"84\",\"00\",\"[12]\\\\d{9}|[135-9]\\\\d{8}|[16]\\\\d{7}|[16-8]\\\\d{6}\",[7,8,9,10],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"80\"],\"0$1\",1],[\"(\\\\d{4})(\\\\d{4,6})\",\"$1 $2\",[\"1\"],0,1],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"6\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[357-9]\"],\"0$1\",1],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"2[48]\"],\"0$1\",1],[\"(\\\\d{3})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"2\"],\"0$1\",1]],\"0\"],\"VU\":[\"678\",\"00\",\"[57-9]\\\\d{6}|(?:[238]\\\\d|48)\\\\d{3}\",[5,7],[[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"[57-9]\"]]]],\"WF\":[\"681\",\"00\",\"(?:40|72|8\\\\d{4})\\\\d{4}|[89]\\\\d{5}\",[6,9],[[\"(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3\",[\"[47-9]\"]],[\"(\\\\d{3})(\\\\d{2})(\\\\d{2})(\\\\d{2})\",\"$1 $2 $3 $4\",[\"8\"]]]],\"WS\":[\"685\",\"0\",\"(?:[2-6]|8\\\\d{5})\\\\d{4}|[78]\\\\d{6}|[68]\\\\d{5}\",[5,6,7,10],[[\"(\\\\d{5})\",\"$1\",[\"[2-5]|6[1-9]\"]],[\"(\\\\d{3})(\\\\d{3,7})\",\"$1 $2\",[\"[68]\"]],[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"7\"]]]],\"XK\":[\"383\",\"00\",\"2\\\\d{7,8}|3\\\\d{7,11}|(?:4\\\\d\\\\d|[89]00)\\\\d{5}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{5})\",\"$1 $2\",[\"[89]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[2-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"2|39\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7,10})\",\"$1 $2\",[\"3\"],\"0$1\"]],\"0\"],\"YE\":[\"967\",\"00\",\"(?:1|7\\\\d)\\\\d{7}|[1-7]\\\\d{6}\",[7,8,9],[[\"(\\\\d)(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"[1-6]|7(?:[24-6]|8[0-7])\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"7\"],\"0$1\"]],\"0\"],\"YT\":[\"262\",\"00\",\"(?:639\\\\d|7093)\\\\d{5}|(?:26|80|9\\\\d)\\\\d{7}\",[9],0,\"0\",0,0,0,0,0,[[\"26(?:89\\\\d|9(?:0[0-467]|15|5[0-4]|6\\\\d|[78]0))\\\\d{4}\"],[\"(?:639(?:0[0-79]|1[019]|[267]\\\\d|3[09]|40|5[05-9]|9[04-79])|7093[5-7])\\\\d{4}\"],[\"80\\\\d{7}\"],0,0,0,0,0,[\"9(?:(?:39|47)8[01]|769\\\\d)\\\\d{4}\"]]],\"ZA\":[\"27\",\"00\",\"[1-79]\\\\d{8}|8\\\\d{4,9}\",[5,6,7,8,9,10],[[\"(\\\\d{2})(\\\\d{3,4})\",\"$1 $2\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{2,3})\",\"$1 $2 $3\",[\"8[1-4]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"860\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"[1-9]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"8\"],\"0$1\"]],\"0\"],\"ZM\":[\"260\",\"00\",\"800\\\\d{6}|(?:21|[579]\\\\d|63)\\\\d{7}\",[9],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[28]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"[579]\"],\"0$1\"]],\"0\"],\"ZW\":[\"263\",\"00\",\"2(?:[0-57-9]\\\\d{6,8}|6[0-24-9]\\\\d{6,7})|[38]\\\\d{9}|[35-8]\\\\d{8}|[3-6]\\\\d{7}|[1-689]\\\\d{6}|[1-3569]\\\\d{5}|[1356]\\\\d{4}\",[5,6,7,8,9,10],[[\"(\\\\d{3})(\\\\d{3,5})\",\"$1 $2\",[\"2(?:0[45]|2[278]|[49]8)|3(?:[09]8|17)|6(?:[29]8|37|75)|[23][78]|(?:33|5[15]|6[68])[78]\"],\"0$1\"],[\"(\\\\d)(\\\\d{3})(\\\\d{2,4})\",\"$1 $2 $3\",[\"[49]\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{4})\",\"$1 $2\",[\"80\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{7})\",\"$1 $2\",[\"24|8[13-59]|(?:2[05-79]|39|5[45]|6[15-8])2\",\"2(?:02[014]|4|[56]20|[79]2)|392|5(?:42|525)|6(?:[16-8]21|52[013])|8[13-59]\"],\"(0$1)\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"7\"],\"0$1\"],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:12|29)\",\"2(?:1[39]|2[0157]|[378]|[56][14])|3(?:123|29)\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{6})\",\"$1 $2\",[\"8\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3,5})\",\"$1 $2\",[\"1|2(?:0[0-36-9]|12|29|[56])|3(?:1[0-689]|[24-6])|5(?:[0236-9]|1[2-4])|6(?:[013-59]|7[0-46-9])|(?:33|55|6[68])[0-69]|(?:29|3[09]|62)[0-79]\"],\"0$1\"],[\"(\\\\d{2})(\\\\d{3})(\\\\d{3,4})\",\"$1 $2 $3\",[\"29[013-9]|39|54\"],\"0$1\"],[\"(\\\\d{4})(\\\\d{3,5})\",\"$1 $2\",[\"(?:25|54)8\",\"258|5483\"],\"0$1\"]],\"0\"]},\"nonGeographic\":{\"800\":[\"800\",0,\"(?:00|[1-9]\\\\d)\\\\d{6}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"\\\\d\"]]],0,0,0,0,0,0,[0,0,[\"(?:00|[1-9]\\\\d)\\\\d{6}\"]]],\"808\":[\"808\",0,\"[1-9]\\\\d{7}\",[8],[[\"(\\\\d{4})(\\\\d{4})\",\"$1 $2\",[\"[1-9]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,0,[\"[1-9]\\\\d{7}\"]]],\"870\":[\"870\",0,\"7\\\\d{11}|[235-7]\\\\d{8}\",[9,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"[235-7]\"]]],0,0,0,0,0,0,[0,[\"(?:[356]|774[45])\\\\d{8}|7[6-8]\\\\d{7}\"],0,0,0,0,0,0,[\"2\\\\d{8}\",[9]]]],\"878\":[\"878\",0,\"10\\\\d{10}\",[12],[[\"(\\\\d{2})(\\\\d{5})(\\\\d{5})\",\"$1 $2 $3\",[\"1\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"10\\\\d{10}\"]]],\"881\":[\"881\",0,\"6\\\\d{9}|[0-36-9]\\\\d{8}\",[9,10],[[\"(\\\\d)(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\",[\"[0-37-9]\"]],[\"(\\\\d)(\\\\d{3})(\\\\d{5,6})\",\"$1 $2 $3\",[\"6\"]]],0,0,0,0,0,0,[0,[\"6\\\\d{9}|[0-36-9]\\\\d{8}\"]]],\"882\":[\"882\",0,\"[13]\\\\d{6}(?:\\\\d{2,5})?|[19]\\\\d{7}|(?:[25]\\\\d\\\\d|4)\\\\d{7}(?:\\\\d{2})?\",[7,8,9,10,11,12],[[\"(\\\\d{2})(\\\\d{5})\",\"$1 $2\",[\"16|342\"]],[\"(\\\\d{2})(\\\\d{6})\",\"$1 $2\",[\"49\"]],[\"(\\\\d{2})(\\\\d{2})(\\\\d{4})\",\"$1 $2 $3\",[\"1[36]|9\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{3})\",\"$1 $2 $3\",[\"3[23]\"]],[\"(\\\\d{2})(\\\\d{3,4})(\\\\d{4})\",\"$1 $2 $3\",[\"16\"]],[\"(\\\\d{2})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"10|23|3(?:[15]|4[57])|4|5[12]\"]],[\"(\\\\d{3})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"34\"]],[\"(\\\\d{2})(\\\\d{4,5})(\\\\d{5})\",\"$1 $2 $3\",[\"[1-35]\"]]],0,0,0,0,0,0,[0,[\"342\\\\d{4}|(?:337|49)\\\\d{6}|(?:3(?:2|47|7\\\\d{3})|5(?:0\\\\d{3}|2[0-2]))\\\\d{7}\",[7,8,9,10,12]],0,0,0,[\"348[57]\\\\d{7}\",[11]],0,0,[\"1(?:3(?:0[0347]|[13][0139]|2[035]|4[013568]|6[0459]|7[06]|8[15-8]|9[0689])\\\\d{4}|6\\\\d{5,10})|(?:345\\\\d|9[89])\\\\d{6}|(?:10|2(?:3|85\\\\d)|3(?:[15]|[69]\\\\d\\\\d)|4[15-8]|51)\\\\d{8}\"]]],\"883\":[\"883\",0,\"(?:[1-4]\\\\d|51)\\\\d{6,10}\",[8,9,10,11,12],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{2,8})\",\"$1 $2 $3\",[\"[14]|2[24-689]|3[02-689]|51[24-9]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3\",[\"510\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{4})\",\"$1 $2 $3\",[\"21\"]],[\"(\\\\d{4})(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"51[13]\"]],[\"(\\\\d{3})(\\\\d{3})(\\\\d{3})(\\\\d{3})\",\"$1 $2 $3 $4\",[\"[235]\"]]],0,0,0,0,0,0,[0,0,0,0,0,0,0,0,[\"(?:2(?:00\\\\d\\\\d|10)|(?:370[1-9]|51\\\\d0)\\\\d)\\\\d{7}|51(?:00\\\\d{5}|[24-9]0\\\\d{4,7})|(?:1[0-79]|2[24-689]|3[02-689]|4[0-4])0\\\\d{5,9}\"]]],\"888\":[\"888\",0,\"\\\\d{11}\",[11],[[\"(\\\\d{3})(\\\\d{3})(\\\\d{5})\",\"$1 $2 $3\"]],0,0,0,0,0,0,[0,0,0,0,0,0,[\"\\\\d{11}\"]]],\"979\":[\"979\",0,\"[1359]\\\\d{8}\",[9],[[\"(\\\\d)(\\\\d{4})(\\\\d{4})\",\"$1 $2 $3\",[\"[1359]\"]]],0,0,0,0,0,0,[0,0,0,[\"[1359]\\\\d{8}\"]]]}}","// Importing from a \".js\" file is a workaround for Node.js \"ES Modules\"\r\n// importing system which is even uncapable of importing \"*.json\" files.\r\nimport metadata from '../../metadata.min.json.js'\r\n\r\nexport default function withMetadataArgument(func, _arguments) {\r\n\tvar args = Array.prototype.slice.call(_arguments)\r\n\targs.push(metadata)\r\n\treturn func.apply(this, args)\r\n}","// Copy-pasted from:\r\n// https://github.com/substack/semver-compare/blob/master/index.js\r\n//\r\n// Inlining this function because some users reported issues with\r\n// importing from `semver-compare` in a browser with ES6 \"native\" modules.\r\n//\r\n// Fixes `semver-compare` not being able to compare versions with alpha/beta/etc \"tags\".\r\n// https://github.com/catamphetamine/libphonenumber-js/issues/381\r\nexport default function(a, b) {\r\n a = a.split('-')\r\n b = b.split('-')\r\n var pa = a[0].split('.')\r\n var pb = b[0].split('.')\r\n for (var i = 0; i < 3; i++) {\r\n var na = Number(pa[i])\r\n var nb = Number(pb[i])\r\n if (na > nb) return 1\r\n if (nb > na) return -1\r\n if (!isNaN(na) && isNaN(nb)) return 1\r\n if (isNaN(na) && !isNaN(nb)) return -1\r\n }\r\n if (a[1] && b[1]) {\r\n return a[1] > b[1] ? 1 : (a[1] < b[1] ? -1 : 0)\r\n }\r\n return !a[1] && b[1] ? 1 : (a[1] && !b[1] ? -1 : 0)\r\n}","const objectConstructor = {}.constructor;\r\n\r\nexport default function isObject(object) {\r\n return object !== undefined && object !== null && object.constructor === objectConstructor;\r\n}\r\n","import compare from './tools/semver-compare.js'\r\nimport isObject from './helpers/isObject.js'\r\n\r\n// Added \"possibleLengths\" and renamed\r\n// \"country_phone_code_to_countries\" to \"country_calling_codes\".\r\nconst V2 = '1.0.18'\r\n\r\n// Added \"idd_prefix\" and \"default_idd_prefix\".\r\nconst V3 = '1.2.0'\r\n\r\n// Moved `001` country code to \"nonGeographic\" section of metadata.\r\nconst V4 = '1.7.35'\r\n\r\nconst DEFAULT_EXT_PREFIX = ' ext. '\r\n\r\nconst CALLING_CODE_REG_EXP = /^\\d+$/\r\n\r\n/**\r\n * See: https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md\r\n */\r\nexport default class Metadata {\r\n\tconstructor(metadata) {\r\n\t\tvalidateMetadata(metadata)\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, metadata)\r\n\t}\r\n\r\n\tgetCountries() {\r\n\t\treturn Object.keys(this.metadata.countries).filter(_ => _ !== '001')\r\n\t}\r\n\r\n\tgetCountryMetadata(countryCode) {\r\n\t\treturn this.metadata.countries[countryCode]\r\n\t}\r\n\r\n\tnonGeographic() {\r\n\t\tif (this.v1 || this.v2 || this.v3) return\r\n\t\t// `nonGeographical` was a typo.\r\n\t\t// It's present in metadata generated from `1.7.35` to `1.7.37`.\r\n\t\t// The test case could be found by searching for \"nonGeographical\".\r\n\t\treturn this.metadata.nonGeographic || this.metadata.nonGeographical\r\n\t}\r\n\r\n\thasCountry(country) {\r\n\t\treturn this.getCountryMetadata(country) !== undefined\r\n\t}\r\n\r\n\thasCallingCode(callingCode) {\r\n\t\tif (this.getCountryCodesForCallingCode(callingCode)) {\r\n\t\t\treturn true\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tif (this.nonGeographic()[callingCode]) {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn true\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tisNonGeographicCallingCode(callingCode) {\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\treturn this.nonGeographic()[callingCode] ? true : false\r\n\t\t} else {\r\n\t\t\treturn this.getCountryCodesForCallingCode(callingCode) ? false : true\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountry(countryCode) {\r\n\t\treturn this.selectNumberingPlan(countryCode)\r\n\t}\r\n\r\n\tselectNumberingPlan(countryCode, callingCode) {\r\n\t\t// Supports just passing `callingCode` as the first argument.\r\n\t\tif (countryCode && CALLING_CODE_REG_EXP.test(countryCode)) {\r\n\t\t\tcallingCode = countryCode\r\n\t\t\tcountryCode = null\r\n\t\t}\r\n\t\tif (countryCode && countryCode !== '001') {\r\n\t\t\tif (!this.hasCountry(countryCode)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${countryCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getCountryMetadata(countryCode), this)\r\n\t\t} else if (callingCode) {\r\n\t\t\tif (!this.hasCallingCode(callingCode)) {\r\n\t\t\t\tthrow new Error(`Unknown calling code: ${callingCode}`)\r\n\t\t\t}\r\n\t\t\tthis.numberingPlan = new NumberingPlan(this.getNumberingPlanMetadata(callingCode), this)\r\n\t\t} else {\r\n\t\t\tthis.numberingPlan = undefined\r\n\t\t}\r\n\t\treturn this\r\n\t}\r\n\r\n\tgetCountryCodesForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\tif (countryCodes) {\r\n\t\t\t// Metadata before V4 included \"non-geographic entity\" calling codes\r\n\t\t\t// inside `country_calling_codes` (for example, `\"881\":[\"001\"]`).\r\n\t\t\t// Now the semantics of `country_calling_codes` has changed:\r\n\t\t\t// it's specifically for \"countries\" now.\r\n\t\t\t// Older versions of custom metadata will simply skip parsing\r\n\t\t\t// \"non-geographic entity\" phone numbers with new versions\r\n\t\t\t// of this library: it's not considered a bug,\r\n\t\t\t// because such numbers are extremely rare,\r\n\t\t\t// and developers extremely rarely use custom metadata.\r\n\t\t\tif (countryCodes.length === 1 && countryCodes[0].length === 3) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn countryCodes\r\n\t\t}\r\n\t}\r\n\r\n\tgetCountryCodeForCallingCode(callingCode) {\r\n\t\tconst countryCodes = this.getCountryCodesForCallingCode(callingCode)\r\n\t\tif (countryCodes) {\r\n\t\t\treturn countryCodes[0]\r\n\t\t}\r\n\t}\r\n\r\n\tgetNumberingPlanMetadata(callingCode) {\r\n\t\tconst countryCode = this.getCountryCodeForCallingCode(callingCode)\r\n\t\tif (countryCode) {\r\n\t\t\treturn this.getCountryMetadata(countryCode)\r\n\t\t}\r\n\t\tif (this.nonGeographic()) {\r\n\t\t\tconst metadata = this.nonGeographic()[callingCode]\r\n\t\t\tif (metadata) {\r\n\t\t\t\treturn metadata\r\n\t\t\t}\r\n\t\t} else {\r\n\t\t\t// A hacky workaround for old custom metadata (generated before V4).\r\n\t\t\t// In that metadata, there was no concept of \"non-geographic\" metadata\r\n\t\t\t// so metadata for `001` country code was stored along with other countries.\r\n\t\t\t// The test case can be found by searching for:\r\n\t\t\t// \"should work around `nonGeographic` metadata not existing\".\r\n\t\t\tconst countryCodes = this.countryCallingCodes()[callingCode]\r\n\t\t\tif (countryCodes && countryCodes.length === 1 && countryCodes[0] === '001') {\r\n\t\t\t\treturn this.metadata.countries['001']\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tcountryCallingCode() {\r\n\t\treturn this.numberingPlan.callingCode()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tIDDPrefix() {\r\n\t\treturn this.numberingPlan.IDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tdefaultIDDPrefix() {\r\n\t\treturn this.numberingPlan.defaultIDDPrefix()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalNumberPattern() {\r\n\t\treturn this.numberingPlan.nationalNumberPattern()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tpossibleLengths() {\r\n\t\treturn this.numberingPlan.possibleLengths()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tformats() {\r\n\t\treturn this.numberingPlan.formats()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixForParsing() {\r\n\t\treturn this.numberingPlan.nationalPrefixForParsing()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.numberingPlan.nationalPrefixTransformRule()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tleadingDigits() {\r\n\t\treturn this.numberingPlan.leadingDigits()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\thasTypes() {\r\n\t\treturn this.numberingPlan.hasTypes()\r\n\t}\r\n\r\n\t// Deprecated.\r\n\ttype(type) {\r\n\t\treturn this.numberingPlan.type(type)\r\n\t}\r\n\r\n\t// Deprecated.\r\n\text() {\r\n\t\treturn this.numberingPlan.ext()\r\n\t}\r\n\r\n\tcountryCallingCodes() {\r\n\t\tif (this.v1) return this.metadata.country_phone_code_to_countries\r\n\t\treturn this.metadata.country_calling_codes\r\n\t}\r\n\r\n\t// Deprecated.\r\n\tchooseCountryByCountryCallingCode(callingCode) {\r\n\t\treturn this.selectNumberingPlan(callingCode)\r\n\t}\r\n\r\n\thasSelectedNumberingPlan() {\r\n\t\treturn this.numberingPlan !== undefined\r\n\t}\r\n}\r\n\r\nclass NumberingPlan {\r\n\tconstructor(metadata, globalMetadataObject) {\r\n\t\tthis.globalMetadataObject = globalMetadataObject\r\n\t\tthis.metadata = metadata\r\n\t\tsetVersion.call(this, globalMetadataObject.metadata)\r\n\t}\r\n\r\n\tcallingCode() {\r\n\t\treturn this.metadata[0]\r\n\t}\r\n\r\n\t// Formatting information for regions which share\r\n\t// a country calling code is contained by only one region\r\n\t// for performance reasons. For example, for NANPA region\r\n\t// (\"North American Numbering Plan Administration\",\r\n\t// which includes USA, Canada, Cayman Islands, Bahamas, etc)\r\n\t// it will be contained in the metadata for `US`.\r\n\tgetDefaultCountryMetadataForRegion() {\r\n\t\treturn this.globalMetadataObject.getNumberingPlanMetadata(this.callingCode())\r\n\t}\r\n\r\n\t// Is always present.\r\n\tIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[1]\r\n\t}\r\n\r\n\t// Is only present when a country supports multiple IDD prefixes.\r\n\tdefaultIDDPrefix() {\r\n\t\tif (this.v1 || this.v2) return\r\n\t\treturn this.metadata[12]\r\n\t}\r\n\r\n\tnationalNumberPattern() {\r\n\t\tif (this.v1 || this.v2) return this.metadata[1]\r\n\t\treturn this.metadata[2]\r\n\t}\r\n\r\n\t// \"possible length\" data is always present in Google's metadata.\r\n\tpossibleLengths() {\r\n\t\tif (this.v1) return\r\n\t\treturn this.metadata[this.v2 ? 2 : 3]\r\n\t}\r\n\r\n\t_getFormats(metadata) {\r\n\t\treturn metadata[this.v1 ? 2 : this.v2 ? 3 : 4]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// formats are all stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tformats() {\r\n\t\tconst formats = this._getFormats(this.metadata) || this._getFormats(this.getDefaultCountryMetadataForRegion()) || []\r\n\t\treturn formats.map(_ => new Format(_, this))\r\n\t}\r\n\r\n\tnationalPrefix() {\r\n\t\treturn this.metadata[this.v1 ? 3 : this.v2 ? 4 : 5]\r\n\t}\r\n\r\n\t_getNationalPrefixFormattingRule(metadata) {\r\n\t\treturn metadata[this.v1 ? 4 : this.v2 ? 5 : 6]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// national prefix formatting rule is stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._getNationalPrefixFormattingRule(this.metadata) || this._getNationalPrefixFormattingRule(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\t_nationalPrefixForParsing() {\r\n\t\treturn this.metadata[this.v1 ? 5 : this.v2 ? 6 : 7]\r\n\t}\r\n\r\n\tnationalPrefixForParsing() {\r\n\t\t// If `national_prefix_for_parsing` is not set explicitly,\r\n\t\t// then infer it from `national_prefix` (if any)\r\n\t\treturn this._nationalPrefixForParsing() || this.nationalPrefix()\r\n\t}\r\n\r\n\tnationalPrefixTransformRule() {\r\n\t\treturn this.metadata[this.v1 ? 6 : this.v2 ? 7 : 8]\r\n\t}\r\n\r\n\t_getNationalPrefixIsOptionalWhenFormatting() {\r\n\t\treturn !!this.metadata[this.v1 ? 7 : this.v2 ? 8 : 9]\r\n\t}\r\n\r\n\t// For countries of the same region (e.g. NANPA)\r\n\t// \"national prefix is optional when formatting\" flag is\r\n\t// stored in the \"main\" country for that region.\r\n\t// E.g. \"RU\" and \"KZ\", \"US\" and \"CA\".\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn this._getNationalPrefixIsOptionalWhenFormatting(this.metadata) ||\r\n\t\t\tthis._getNationalPrefixIsOptionalWhenFormatting(this.getDefaultCountryMetadataForRegion())\r\n\t}\r\n\r\n\tleadingDigits() {\r\n\t\treturn this.metadata[this.v1 ? 8 : this.v2 ? 9 : 10]\r\n\t}\r\n\r\n\ttypes() {\r\n\t\treturn this.metadata[this.v1 ? 9 : this.v2 ? 10 : 11]\r\n\t}\r\n\r\n\thasTypes() {\r\n\t\t// Versions 1.2.0 - 1.2.4: can be `[]`.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (this.types() && this.types().length === 0) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\t// Versions <= 1.2.4: can be `undefined`.\r\n\t\t// Version >= 1.2.5: can be `0`.\r\n\t\treturn !!this.types()\r\n\t}\r\n\r\n\ttype(type) {\r\n\t\tif (this.hasTypes() && getType(this.types(), type)) {\r\n\t\t\treturn new Type(getType(this.types(), type), this)\r\n\t\t}\r\n\t}\r\n\r\n\text() {\r\n\t\tif (this.v1 || this.v2) return DEFAULT_EXT_PREFIX\r\n\t\treturn this.metadata[13] || DEFAULT_EXT_PREFIX\r\n\t}\r\n}\r\n\r\nclass Format {\r\n\tconstructor(format, metadata) {\r\n\t\tthis._format = format\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\treturn this._format[0]\r\n\t}\r\n\r\n\tformat() {\r\n\t\treturn this._format[1]\r\n\t}\r\n\r\n\tleadingDigitsPatterns() {\r\n\t\treturn this._format[2] || []\r\n\t}\r\n\r\n\tnationalPrefixFormattingRule() {\r\n\t\treturn this._format[3] || this.metadata.nationalPrefixFormattingRule()\r\n\t}\r\n\r\n\tnationalPrefixIsOptionalWhenFormattingInNationalFormat() {\r\n\t\treturn !!this._format[4] || this.metadata.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\tnationalPrefixIsMandatoryWhenFormattingInNationalFormat() {\r\n\t\t// National prefix is omitted if there's no national prefix formatting rule\r\n\t\t// set for this country, or when the national prefix formatting rule\r\n\t\t// contains no national prefix itself, or when this rule is set but\r\n\t\t// national prefix is optional for this phone number format\r\n\t\t// (and it is not enforced explicitly)\r\n\t\treturn this.usesNationalPrefix() && !this.nationalPrefixIsOptionalWhenFormattingInNationalFormat()\r\n\t}\r\n\r\n\t// Checks whether national prefix formatting rule contains national prefix.\r\n\tusesNationalPrefix() {\r\n\t\treturn this.nationalPrefixFormattingRule() &&\r\n\t\t\t// Check that national prefix formatting rule is not a \"dummy\" one.\r\n\t\t\t!FIRST_GROUP_ONLY_PREFIX_PATTERN.test(this.nationalPrefixFormattingRule())\r\n\t\t\t// In compressed metadata, `this.nationalPrefixFormattingRule()` is `0`\r\n\t\t\t// when `national_prefix_formatting_rule` is not present.\r\n\t\t\t// So, `true` or `false` are returned explicitly here, so that\r\n\t\t\t// `0` number isn't returned.\r\n\t\t\t? true\r\n\t\t\t: false\r\n\t}\r\n\r\n\tinternationalFormat() {\r\n\t\treturn this._format[5] || this.format()\r\n\t}\r\n}\r\n\r\n/**\r\n * A pattern that is used to determine if the national prefix formatting rule\r\n * has the first group only, i.e., does not start with the national prefix.\r\n * Note that the pattern explicitly allows for unbalanced parentheses.\r\n */\r\nconst FIRST_GROUP_ONLY_PREFIX_PATTERN = /^\\(?\\$1\\)?$/\r\n\r\nclass Type {\r\n\tconstructor(type, metadata) {\r\n\t\tthis.type = type\r\n\t\tthis.metadata = metadata\r\n\t}\r\n\r\n\tpattern() {\r\n\t\tif (this.metadata.v1) return this.type\r\n\t\treturn this.type[0]\r\n\t}\r\n\r\n\tpossibleLengths() {\r\n\t\tif (this.metadata.v1) return\r\n\t\treturn this.type[1] || this.metadata.possibleLengths()\r\n\t}\r\n}\r\n\r\nfunction getType(types, type) {\r\n\tswitch (type) {\r\n\t\tcase 'FIXED_LINE':\r\n\t\t\treturn types[0]\r\n\t\tcase 'MOBILE':\r\n\t\t\treturn types[1]\r\n\t\tcase 'TOLL_FREE':\r\n\t\t\treturn types[2]\r\n\t\tcase 'PREMIUM_RATE':\r\n\t\t\treturn types[3]\r\n\t\tcase 'PERSONAL_NUMBER':\r\n\t\t\treturn types[4]\r\n\t\tcase 'VOICEMAIL':\r\n\t\t\treturn types[5]\r\n\t\tcase 'UAN':\r\n\t\t\treturn types[6]\r\n\t\tcase 'PAGER':\r\n\t\t\treturn types[7]\r\n\t\tcase 'VOIP':\r\n\t\t\treturn types[8]\r\n\t\tcase 'SHARED_COST':\r\n\t\t\treturn types[9]\r\n\t}\r\n}\r\n\r\nexport function validateMetadata(metadata) {\r\n\tif (!metadata) {\r\n\t\tthrow new Error('[libphonenumber-js] `metadata` argument not passed. Check your arguments.')\r\n\t}\r\n\r\n\t// `country_phone_code_to_countries` was renamed to `country_calling_codes` in `1.0.18`.\r\n\t// For that reason, it's not used in this detection algorithm.\r\n\t// Instead, it detects by `countries: {}` property existence.\r\n\tif (!isObject(metadata) || !isObject(metadata.countries)) {\r\n\t\tthrow new Error(`[libphonenumber-js] \\`metadata\\` argument was passed but it's not a valid metadata. Must be an object having \\`.countries\\` child object property. Got ${isObject(metadata) ? 'an object of shape: { ' + Object.keys(metadata).join(', ') + ' }' : 'a ' + typeOf(metadata) + ': ' + metadata}.`)\r\n\t}\r\n}\r\n\r\n// Babel transforms `typeof` into some \"branches\"\r\n// so istanbul will show this as \"branch not covered\".\r\n/* istanbul ignore next */\r\nconst typeOf = _ => typeof _\r\n\r\n/**\r\n * Returns extension prefix for a country.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string?}\r\n * @example\r\n * // Returns \" ext. \"\r\n * getExtPrefix(\"US\")\r\n */\r\nexport function getExtPrefix(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.selectNumberingPlan(country).ext()\r\n\t}\r\n\treturn DEFAULT_EXT_PREFIX\r\n}\r\n\r\n/**\r\n * Returns \"country calling code\" for a country.\r\n * Throws an error if the country doesn't exist or isn't supported by this library.\r\n * @param {string} country\r\n * @param {object} metadata\r\n * @return {string}\r\n * @example\r\n * // Returns \"44\"\r\n * getCountryCallingCode(\"GB\")\r\n */\r\nexport function getCountryCallingCode(country, metadata) {\r\n\tmetadata = new Metadata(metadata)\r\n\tif (metadata.hasCountry(country)) {\r\n\t\treturn metadata.selectNumberingPlan(country).countryCallingCode()\r\n\t}\r\n\tthrow new Error(`Unknown country: ${country}`)\r\n}\r\n\r\nexport function isSupportedCountry(country, metadata) {\r\n\t// metadata = new Metadata(metadata)\r\n\t// return metadata.hasCountry(country)\r\n\treturn metadata.countries.hasOwnProperty(country)\r\n}\r\n\r\nfunction setVersion(metadata) {\r\n\tconst { version } = metadata\r\n\tif (typeof version === 'number') {\r\n\t\tthis.v1 = version === 1\r\n\t\tthis.v2 = version === 2\r\n\t\tthis.v3 = version === 3\r\n\t\tthis.v4 = version === 4\r\n\t} else {\r\n\t\tif (!version) {\r\n\t\t\tthis.v1 = true\r\n\t\t} else if (compare(version, V3) === -1) {\r\n\t\t\tthis.v2 = true\r\n\t\t} else if (compare(version, V4) === -1) {\r\n\t\t\tthis.v3 = true\r\n\t\t} else {\r\n\t\t\tthis.v4 = true\r\n\t\t}\r\n\t}\r\n}\r\n\r\n// const ISO_COUNTRY_CODE = /^[A-Z]{2}$/\r\n// function isCountryCode(countryCode) {\r\n// \treturn ISO_COUNTRY_CODE.test(countryCodeOrCountryCallingCode)\r\n// }","import Metadata from '../metadata.js'\r\nimport mergeArrays from './mergeArrays.js'\r\n\r\nexport default function checkNumberLength(nationalNumber, country, metadata) {\r\n\treturn checkNumberLengthForType(nationalNumber, country, undefined, metadata)\r\n}\r\n\r\n// Checks whether a number is possible for a certain `country` based on the number length.\r\n//\r\n// This function is not supported by metadata generated with ancient versions of\r\n// `libphonenumber-js` (before version `1.0.18`) which didn't include \"possible lengths\".\r\n//\r\n// There was also a known issue with `checkNumberLength()` function:\r\n// if a number is possible only in a certain `country` among several `countries`\r\n// that share the same \"country calling code\", that function would check\r\n// the possibility of the phone number only in the \"main\" `country` for the \"country calling code\"\r\n// and would not check if it's actually be possible in the speciifc `country`.\r\n//\r\n// For example, \"+1310xxxx\" numbers are valid in Canada.\r\n// However, they are not possible in the US due to being too short.\r\n// Since Canada and the US share the same country calling code — \"+1\" —\r\n// `checkNumberLength()` function used to return not \"IS_POSSIBLE\" for \"+1310xxxx\" numbers.\r\n//\r\n// In such cases, when using \"/max\" metadata, `isValid()` could output `true`\r\n// but at the same time `isPossible()` could output `false`, which was contradictory.\r\n//\r\n// See https://issuetracker.google.com/issues/335892662 for the discusson in Google's issues.\r\n//\r\n// The solution suggested by Google was implemented: an optional `country` argument\r\n// was added to `checkNumberLength()` function. If present, that `country` will be used\r\n// to check phone number length for that specific `country` rather than the \"main\" country\r\n// for the shared \"country calling code\".\r\n//\r\nexport function checkNumberLengthForType(nationalNumber, country, type, metadata) {\r\n\t// If the exact `country` is specified, it's no necessarily already selected in `metadata`.\r\n\t// Most likely, in cases when there're multiple countries corresponding to the same\r\n\t// \"country calling code\", the \"main\" country for that \"country calling code\" will be selected.\r\n\tif (country) {\r\n\t\tmetadata = new Metadata(metadata.metadata)\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t}\r\n\r\n\tconst type_info = metadata.type(type)\r\n\r\n\t// There should always be \"<possiblePengths/>\" set for every type element.\r\n\t// This is declared in the XML schema.\r\n\t// For size efficiency, where a sub-description (e.g. fixed-line)\r\n\t// has the same \"<possiblePengths/>\" as the \"general description\", this is missing,\r\n\t// so we fall back to the \"general description\". Where no numbers of the type\r\n\t// exist at all, there is one possible length (-1) which is guaranteed\r\n\t// not to match the length of any real phone number.\r\n\tlet possible_lengths = type_info && type_info.possibleLengths() || metadata.possibleLengths()\r\n\t// let local_lengths = type_info && type.possibleLengthsLocal() || metadata.possibleLengthsLocal()\r\n\r\n\t// Metadata before version `1.0.18` didn't contain `possible_lengths`.\r\n\tif (!possible_lengths) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (type === 'FIXED_LINE_OR_MOBILE') {\r\n\t\t// No such country in metadata.\r\n\t\t/* istanbul ignore next */\r\n\t\tif (!metadata.type('FIXED_LINE')) {\r\n\t\t\t// The rare case has been encountered where no fixedLine data is available\r\n\t\t\t// (true for some non-geographic entities), so we just check mobile.\r\n\t\t\treturn checkNumberLengthForType(nationalNumber, country, 'MOBILE', metadata)\r\n\t\t}\r\n\r\n\t\tconst mobile_type = metadata.type('MOBILE')\r\n\t\tif (mobile_type) {\r\n\t\t\t// Merge the mobile data in if there was any. \"Concat\" creates a new\r\n\t\t\t// array, it doesn't edit possible_lengths in place, so we don't need a copy.\r\n\t\t\t// Note that when adding the possible lengths from mobile, we have\r\n\t\t\t// to again check they aren't empty since if they are this indicates\r\n\t\t\t// they are the same as the general desc and should be obtained from there.\r\n\t\t\tpossible_lengths = mergeArrays(possible_lengths, mobile_type.possibleLengths())\r\n\t\t\t// The current list is sorted; we need to merge in the new list and\r\n\t\t\t// re-sort (duplicates are okay). Sorting isn't so expensive because\r\n\t\t\t// the lists are very small.\r\n\r\n\t\t\t// if (local_lengths) {\r\n\t\t\t// \tlocal_lengths = mergeArrays(local_lengths, mobile_type.possibleLengthsLocal())\r\n\t\t\t// } else {\r\n\t\t\t// \tlocal_lengths = mobile_type.possibleLengthsLocal()\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\t// If the type doesn't exist then return 'INVALID_LENGTH'.\r\n\telse if (type && !type_info) {\r\n\t\treturn 'INVALID_LENGTH'\r\n\t}\r\n\r\n\tconst actual_length = nationalNumber.length\r\n\r\n\t// In `libphonenumber-js` all \"local-only\" formats are dropped for simplicity.\r\n\t// // This is safe because there is never an overlap beween the possible lengths\r\n\t// // and the local-only lengths; this is checked at build time.\r\n\t// if (local_lengths && local_lengths.indexOf(nationalNumber.length) >= 0)\r\n\t// {\r\n\t// \treturn 'IS_POSSIBLE_LOCAL_ONLY'\r\n\t// }\r\n\r\n\tconst minimum_length = possible_lengths[0]\r\n\r\n\tif (minimum_length === actual_length) {\r\n\t\treturn 'IS_POSSIBLE'\r\n\t}\r\n\r\n\tif (minimum_length > actual_length) {\r\n\t\treturn 'TOO_SHORT'\r\n\t}\r\n\r\n\tif (possible_lengths[possible_lengths.length - 1] < actual_length) {\r\n\t\treturn 'TOO_LONG'\r\n\t}\r\n\r\n\t// We skip the first element since we've already checked it.\r\n\treturn possible_lengths.indexOf(actual_length, 1) >= 0 ? 'IS_POSSIBLE' : 'INVALID_LENGTH'\r\n}","import Metadata from './metadata.js'\r\nimport checkNumberLength from './helpers/checkNumberLength.js'\r\n\r\n/**\r\n * Checks if a phone number is \"possible\" (basically just checks its length).\r\n *\r\n * isPossible(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\r\nexport default function isPossiblePhoneNumber(input, options, metadata) {\r\n\t/* istanbul ignore if */\r\n\tif (options === undefined) {\r\n\t\toptions = {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tif (options.v2) {\r\n\t\tif (!input.countryCallingCode) {\r\n\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t} else {\r\n\t\tif (!input.phone) {\r\n\t\t\treturn false\r\n\t\t}\r\n\t\tif (input.country) {\r\n\t\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.country)\r\n\t\t} else {\r\n\t\t\tif (!input.countryCallingCode) {\r\n\t\t\t\tthrow new Error('Invalid phone number object passed')\r\n\t\t\t}\r\n\t\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t\t}\r\n\t}\r\n\r\n\t// Old metadata (< 1.0.18) had no \"possible length\" data.\r\n\tif (metadata.possibleLengths()) {\r\n\t\treturn isPossibleNumber(input.phone || input.nationalNumber, input.country, metadata)\r\n\t} else {\r\n\t\t// There was a bug between `1.7.35` and `1.7.37` where \"possible_lengths\"\r\n\t\t// were missing for \"non-geographical\" numbering plans.\r\n\t\t// Just assume the number is possible in such cases:\r\n\t\t// it's unlikely that anyone generated their custom metadata\r\n\t\t// in that short period of time (one day).\r\n\t\t// This code can be removed in some future major version update.\r\n\t\tif (input.countryCallingCode && metadata.isNonGeographicCallingCode(input.countryCallingCode)) {\r\n\t\t\t// \"Non-geographic entities\" did't have `possibleLengths`\r\n\t\t\t// due to a bug in metadata generation process.\r\n\t\t\treturn true\r\n\t\t} else {\r\n\t\t\tthrow new Error('Missing \"possibleLengths\" in metadata. Perhaps the metadata has been generated before v1.0.18.');\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isPossibleNumber(nationalNumber, country, metadata) { //, isInternational) {\r\n\tswitch (checkNumberLength(nationalNumber, country, metadata)) {\r\n\t\tcase 'IS_POSSIBLE':\r\n\t\t\treturn true\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t// \treturn !isInternational\r\n\t\tdefault:\r\n\t\t\treturn false\r\n\t}\r\n}","/**\r\n * Checks whether the entire input sequence can be matched\r\n * against the regular expression.\r\n * @return {boolean}\r\n */\r\nexport default function matchesEntirely(text, regularExpressionText) {\r\n\t// If the assigning of the `''` default value is moved to the arguments above,\r\n\t// the code coverage would decrease for some weird reason.\r\n\ttext = text || ''\r\n\treturn new RegExp('^(?:' + regularExpressionText + ')$').test(text)\r\n}","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\n\r\nconst NON_FIXED_LINE_PHONE_TYPES = [\r\n\t'MOBILE',\r\n\t'PREMIUM_RATE',\r\n\t'TOLL_FREE',\r\n\t'SHARED_COST',\r\n\t'VOIP',\r\n\t'PERSONAL_NUMBER',\r\n\t'PAGER',\r\n\t'UAN',\r\n\t'VOICEMAIL'\r\n]\r\n\r\n// Finds out national phone number type (fixed line, mobile, etc)\r\nexport default function getNumberType(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\t// When `parse()` returns an empty object — `{}` —\r\n\t// that means that the phone number is malformed,\r\n\t// so it can't possibly be valid.\r\n\tif (!input.country && !input.countryCallingCode) {\r\n\t\treturn\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// The following is copy-pasted from the original function:\r\n\t// https://github.com/googlei18n/libphonenumber/blob/3ea547d4fbaa2d0b67588904dfa5d3f2557c27ff/javascript/i18n/phonenumbers/phonenumberutil.js#L2835\r\n\r\n\t// Is this national number even valid for this country\r\n\tif (!matchesEntirely(nationalNumber, metadata.nationalNumberPattern())) {\r\n\t\treturn\r\n\t}\r\n\r\n\t// Is it fixed line number\r\n\tif (isNumberTypeEqualTo(nationalNumber, 'FIXED_LINE', metadata)) {\r\n\t\t// Because duplicate regular expressions are removed\r\n\t\t// to reduce metadata size, if \"mobile\" pattern is \"\"\r\n\t\t// then it means it was removed due to being a duplicate of the fixed-line pattern.\r\n\t\t//\r\n\t\tif (metadata.type('MOBILE') && metadata.type('MOBILE').pattern() === '') {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// `MOBILE` type pattern isn't included if it matched `FIXED_LINE` one.\r\n\t\t// For example, for \"US\" country.\r\n\t\t// Old metadata (< `1.0.18`) had a specific \"types\" data structure\r\n\t\t// that happened to be `undefined` for `MOBILE` in that case.\r\n\t\t// Newer metadata (>= `1.0.18`) has another data structure that is\r\n\t\t// not `undefined` for `MOBILE` in that case (it's just an empty array).\r\n\t\t// So this `if` is just for backwards compatibility with old metadata.\r\n\t\tif (!metadata.type('MOBILE')) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\t// Check if the number happens to qualify as both fixed line and mobile.\r\n\t\t// (no such country in the minimal metadata set)\r\n\t\t/* istanbul ignore if */\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, 'MOBILE', metadata)) {\r\n\t\t\treturn 'FIXED_LINE_OR_MOBILE'\r\n\t\t}\r\n\r\n\t\treturn 'FIXED_LINE'\r\n\t}\r\n\r\n\tfor (const type of NON_FIXED_LINE_PHONE_TYPES) {\r\n\t\tif (isNumberTypeEqualTo(nationalNumber, type, metadata)) {\r\n\t\t\treturn type\r\n\t\t}\r\n\t}\r\n}\r\n\r\nexport function isNumberTypeEqualTo(nationalNumber, type, metadata) {\r\n\tconst typeDefinition = metadata.type(type)\r\n\tif (!typeDefinition || !typeDefinition.pattern()) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Check if any possible number lengths are present;\r\n\t// if so, we use them to avoid checking\r\n\t// the validation pattern if they don't match.\r\n\t// If they are absent, this means they match\r\n\t// the general description, which we have\r\n\t// already checked before a specific number type.\r\n\tif (\r\n\t\ttypeDefinition.possibleLengths() &&\r\n\t\ttypeDefinition.possibleLengths().indexOf(nationalNumber.length) < 0\r\n\t) {\r\n\t\treturn false\r\n\t}\r\n\r\n\treturn matchesEntirely(nationalNumber, typeDefinition.pattern())\r\n}","import Metadata from './metadata.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\n\r\n/**\r\n * Checks if a given phone number is valid.\r\n *\r\n * isValid(phoneNumberInstance, { ..., v2: true }, metadata)\r\n *\r\n * isPossible({ phone: '8005553535', country: 'RU' }, { ... }, metadata)\r\n * isPossible({ phone: '8005553535', country: 'RU' }, undefined, metadata)\r\n *\r\n * If the `number` is a string, it will be parsed to an object,\r\n * but only if it contains only valid phone number characters (including punctuation).\r\n * If the `number` is an object, it is used as is.\r\n *\r\n * The optional `defaultCountry` argument is the default country.\r\n * I.e. it does not restrict to just that country,\r\n * e.g. in those cases where several countries share\r\n * the same phone numbering rules (NANPA, Britain, etc).\r\n * For example, even though the number `07624 369230`\r\n * belongs to the Isle of Man (\"IM\" country code)\r\n * calling `isValidNumber('07624369230', 'GB', metadata)`\r\n * still returns `true` because the country is not restricted to `GB`,\r\n * it's just that `GB` is the default one for the phone numbering rules.\r\n * For restricting the country see `isValidNumberForRegion()`\r\n * though restricting a country might not be a good idea.\r\n * https://github.com/googlei18n/libphonenumber/blob/master/FAQ.md#when-should-i-use-isvalidnumberforregion\r\n *\r\n * Examples:\r\n *\r\n * ```js\r\n * isValidNumber('+78005553535', metadata)\r\n * isValidNumber('8005553535', 'RU', metadata)\r\n * isValidNumber('88005553535', 'RU', metadata)\r\n * isValidNumber({ phone: '8005553535', country: 'RU' }, metadata)\r\n * ```\r\n */\r\nexport default function isValidNumber(input, options, metadata)\r\n{\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\tmetadata.selectNumberingPlan(input.country, input.countryCallingCode)\r\n\r\n\t// By default, countries only have type regexps when it's required for\r\n\t// distinguishing different countries having the same `countryCallingCode`.\r\n\tif (metadata.hasTypes()) {\r\n\t\treturn getNumberType(input, options, metadata.metadata) !== undefined\r\n\t}\r\n\r\n\t// If there are no type regexps for this country in metadata then use\r\n\t// `nationalNumberPattern` as a \"better than nothing\" replacement.\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\treturn matchesEntirely(nationalNumber, metadata.nationalNumberPattern())\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Returns a list of countries that the phone number could potentially belong to.\r\n * @param {string} callingCode — Calling code.\r\n * @param {string} nationalNumber — National (significant) number.\r\n * @param {object} metadata — Metadata.\r\n * @return {string[]} A list of possible countries.\r\n */\r\nexport default function getPossibleCountriesForNumber(callingCode, nationalNumber, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\tlet possibleCountries = _metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn []\r\n\t}\r\n\treturn possibleCountries.filter((country) => {\r\n\t\treturn couldNationalNumberBelongToCountry(nationalNumber, country, metadata)\r\n\t})\r\n}\r\n\r\nfunction couldNationalNumberBelongToCountry(nationalNumber, country, metadata) {\r\n\tconst _metadata = new Metadata(metadata)\r\n\t_metadata.selectNumberingPlan(country)\r\n\tif (_metadata.numberingPlan.possibleLengths().indexOf(nationalNumber.length) >= 0) {\r\n\t\treturn true\r\n\t}\r\n\treturn false\r\n}","// The minimum length of the national significant number.\r\nexport const MIN_LENGTH_FOR_NSN = 2\r\n\r\n// The ITU says the maximum length should be 15,\r\n// but one can find longer numbers in Germany.\r\nexport const MAX_LENGTH_FOR_NSN = 17\r\n\r\n// The maximum length of the country calling code.\r\nexport const MAX_LENGTH_COUNTRY_CODE = 3\r\n\r\n// Digits accepted in phone numbers\r\n// (ascii, fullwidth, arabic-indic, and eastern arabic digits).\r\nexport const VALID_DIGITS = '0-9\\uFF10-\\uFF19\\u0660-\\u0669\\u06F0-\\u06F9'\r\n\r\n// `DASHES` will be right after the opening square bracket of the \"character class\"\r\nconst DASHES = '-\\u2010-\\u2015\\u2212\\u30FC\\uFF0D'\r\nconst SLASHES = '\\uFF0F/'\r\nconst DOTS = '\\uFF0E.'\r\nexport const WHITESPACE = ' \\u00A0\\u00AD\\u200B\\u2060\\u3000'\r\nconst BRACKETS = '()\\uFF08\\uFF09\\uFF3B\\uFF3D\\\\[\\\\]'\r\n// export const OPENING_BRACKETS = '(\\uFF08\\uFF3B\\\\\\['\r\nconst TILDES = '~\\u2053\\u223C\\uFF5E'\r\n\r\n// Regular expression of acceptable punctuation found in phone numbers. This\r\n// excludes punctuation found as a leading character only. This consists of dash\r\n// characters, white space characters, full stops, slashes, square brackets,\r\n// parentheses and tildes. Full-width variants are also present.\r\nexport const VALID_PUNCTUATION = `${DASHES}${SLASHES}${DOTS}${WHITESPACE}${BRACKETS}${TILDES}`\r\n\r\nexport const PLUS_CHARS = '+\\uFF0B'\r\n// const LEADING_PLUS_CHARS_PATTERN = new RegExp('^[' + PLUS_CHARS + ']+')","import Metadata from '../metadata.js'\r\nimport { VALID_DIGITS } from '../constants.js'\r\n\r\nconst CAPTURING_DIGIT_PATTERN = new RegExp('([' + VALID_DIGITS + '])')\r\n\r\nexport default function stripIddPrefix(number, country, callingCode, metadata) {\r\n\tif (!country) {\r\n\t\treturn\r\n\t}\r\n\t// Check if the number is IDD-prefixed.\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tconst IDDPrefixPattern = new RegExp(countryMetadata.IDDPrefix())\r\n\tif (number.search(IDDPrefixPattern) !== 0) {\r\n\t\treturn\r\n\t}\r\n\t// Strip IDD prefix.\r\n\tnumber = number.slice(number.match(IDDPrefixPattern)[0].length)\r\n\t// If there're any digits after an IDD prefix,\r\n\t// then those digits are a country calling code.\r\n\t// Since no country code starts with a `0`,\r\n\t// the code below validates that the next digit (if present) is not `0`.\r\n\tconst matchedGroups = number.match(CAPTURING_DIGIT_PATTERN)\r\n\tif (matchedGroups && matchedGroups[1] != null && matchedGroups[1].length > 0) {\r\n\t\tif (matchedGroups[1] === '0') {\r\n\t\t\treturn\r\n\t\t}\r\n\t}\r\n\treturn number\r\n}","/**\r\n * Strips any national prefix (such as 0, 1) present in a\r\n * (possibly incomplete) number provided.\r\n * \"Carrier codes\" are only used in Colombia and Brazil,\r\n * and only when dialing within those countries from a mobile phone to a fixed line number.\r\n * Sometimes it won't actually strip national prefix\r\n * and will instead prepend some digits to the `number`:\r\n * for example, when number `2345678` is passed with `VI` country selected,\r\n * it will return `{ number: \"3402345678\" }`, because `340` area code is prepended.\r\n * @param {string} number — National number digits.\r\n * @param {object} metadata — Metadata with country selected.\r\n * @return {object} `{ nationalNumber: string, nationalPrefix: string? carrierCode: string? }`. Even if a national prefix was extracted, it's not necessarily present in the returned object, so don't rely on its presence in the returned object in order to find out whether a national prefix has been extracted or not.\r\n */\r\nexport default function extractNationalNumberFromPossiblyIncompleteNumber(number, metadata) {\r\n\tif (number && metadata.numberingPlan.nationalPrefixForParsing()) {\r\n\t\t// See METADATA.md for the description of\r\n\t\t// `national_prefix_for_parsing` and `national_prefix_transform_rule`.\r\n\t\t// Attempt to parse the first digits as a national prefix.\r\n\t\tconst prefixPattern = new RegExp('^(?:' + metadata.numberingPlan.nationalPrefixForParsing() + ')')\r\n\t\tconst prefixMatch = prefixPattern.exec(number)\r\n\t\tif (prefixMatch) {\r\n\t\t\tlet nationalNumber\r\n\t\t\tlet carrierCode\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/blob/master/METADATA.md#national_prefix_for_parsing--national_prefix_transform_rule\r\n\t\t\t// If a `national_prefix_for_parsing` has any \"capturing groups\"\r\n\t\t\t// then it means that the national (significant) number is equal to\r\n\t\t\t// those \"capturing groups\" transformed via `national_prefix_transform_rule`,\r\n\t\t\t// and nothing could be said about the actual national prefix:\r\n\t\t\t// what is it and was it even there.\r\n\t\t\t// If a `national_prefix_for_parsing` doesn't have any \"capturing groups\",\r\n\t\t\t// then everything it matches is a national prefix.\r\n\t\t\t// To determine whether `national_prefix_for_parsing` matched any\r\n\t\t\t// \"capturing groups\", the value of the result of calling `.exec()`\r\n\t\t\t// is looked at, and if it has non-undefined values where there're\r\n\t\t\t// \"capturing groups\" in the regular expression, then it means\r\n\t\t\t// that \"capturing groups\" have been matched.\r\n\t\t\t// It's not possible to tell whether there'll be any \"capturing gropus\"\r\n\t\t\t// before the matching process, because a `national_prefix_for_parsing`\r\n\t\t\t// could exhibit both behaviors.\r\n\t\t\tconst capturedGroupsCount = prefixMatch.length - 1\r\n\t\t\tconst hasCapturedGroups = capturedGroupsCount > 0 && prefixMatch[capturedGroupsCount]\r\n\t\t\tif (metadata.nationalPrefixTransformRule() && hasCapturedGroups) {\r\n\t\t\t\tnationalNumber = number.replace(\r\n\t\t\t\t\tprefixPattern,\r\n\t\t\t\t\tmetadata.nationalPrefixTransformRule()\r\n\t\t\t\t)\r\n\t\t\t\t// If there's more than one captured group,\r\n\t\t\t\t// then carrier code is the second one.\r\n\t\t\t\tif (capturedGroupsCount > 1) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// If there're no \"capturing groups\",\r\n\t\t\t// or if there're \"capturing groups\" but no\r\n\t\t\t// `national_prefix_transform_rule`,\r\n\t\t\t// then just strip the national prefix from the number,\r\n\t\t\t// and possibly a carrier code.\r\n\t\t\t// Seems like there could be more.\r\n\t\t\telse {\r\n\t\t\t\t// `prefixBeforeNationalNumber` is the whole substring matched by\r\n\t\t\t\t// the `national_prefix_for_parsing` regular expression.\r\n\t\t\t\t// There seem to be no guarantees that it's just a national prefix.\r\n\t\t\t\t// For example, if there's a carrier code, it's gonna be a\r\n\t\t\t\t// part of `prefixBeforeNationalNumber` too.\r\n\t\t\t\tconst prefixBeforeNationalNumber = prefixMatch[0]\r\n\t\t\t\tnationalNumber = number.slice(prefixBeforeNationalNumber.length)\r\n\t\t\t\t// If there's at least one captured group,\r\n\t\t\t\t// then carrier code is the first one.\r\n\t\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\t\tcarrierCode = prefixMatch[1]\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Tries to guess whether a national prefix was present in the input.\r\n\t\t\t// This is not something copy-pasted from Google's library:\r\n\t\t\t// they don't seem to have an equivalent for that.\r\n\t\t\t// So this isn't an \"officially approved\" way of doing something like that.\r\n\t\t\t// But since there seems no other existing method, this library uses it.\r\n\t\t\tlet nationalPrefix\r\n\t\t\tif (hasCapturedGroups) {\r\n\t\t\t\tconst possiblePositionOfTheFirstCapturedGroup = number.indexOf(prefixMatch[1])\r\n\t\t\t\tconst possibleNationalPrefix = number.slice(0, possiblePositionOfTheFirstCapturedGroup)\r\n\t\t\t\t// Example: an Argentinian (AR) phone number `0111523456789`.\r\n\t\t\t\t// `prefixMatch[0]` is `01115`, and `$1` is `11`,\r\n\t\t\t\t// and the rest of the phone number is `23456789`.\r\n\t\t\t\t// The national number is transformed via `9$1` to `91123456789`.\r\n\t\t\t\t// National prefix `0` is detected being present at the start.\r\n\t\t\t\t// if (possibleNationalPrefix.indexOf(metadata.numberingPlan.nationalPrefix()) === 0) {\r\n\t\t\t\tif (possibleNationalPrefix === metadata.numberingPlan.nationalPrefix()) {\r\n\t\t\t\t\tnationalPrefix = metadata.numberingPlan.nationalPrefix()\r\n\t\t\t\t}\r\n\t\t\t} else {\r\n\t\t\t\tnationalPrefix = prefixMatch[0]\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tnationalPrefix,\r\n\t\t\t\tcarrierCode\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n return {\r\n \tnationalNumber: number\r\n }\r\n}","import Metadata from '../metadata.js'\r\nimport getNumberType from './getNumberType.js'\r\n\r\n// Returns the exact country that the `nationalPhoneNumber` belongs to\r\n// in cases of ambiguity, i.e. when multiple countries share the same \"country calling code\".\r\nexport default function getCountryByNationalNumber(nationalPhoneNumber, {\r\n\tcountries,\r\n\tmetadata\r\n}) {\r\n\t// Re-create `metadata` because it will be selecting a `country`.\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// const matchingCountries = []\r\n\r\n\tfor (const country of countries) {\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t\t// \"Leading digits\" patterns are only defined for about 20% of all countries.\r\n\t\t// By definition, matching \"leading digits\" is a sufficient but not a necessary\r\n\t\t// condition for a phone number to belong to a country.\r\n\t\t// The point of \"leading digits\" check is that it's the fastest one to get a match.\r\n\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/blob/master/METADATA.md#leading_digits\r\n\t\t// I'd suppose that \"leading digits\" patterns are mutually exclusive for different countries\r\n\t\t// because of the intended use of that feature.\r\n\t\tif (metadata.leadingDigits()) {\r\n\t\t\tif (nationalPhoneNumber &&\r\n\t\t\t\tnationalPhoneNumber.search(metadata.leadingDigits()) === 0) {\r\n\t\t\t\treturn country\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Else perform full validation with all of those\r\n\t\t// fixed-line/mobile/etc regular expressions.\r\n\t\telse if (getNumberType({ phone: nationalPhoneNumber, country }, undefined, metadata.metadata)) {\r\n\t\t\t// When multiple countries share the same \"country calling code\",\r\n\t\t\t// type patterns aren't guaranteed to be unique among them.\r\n\t\t\t// For example, both `US` and `CA` have the same pattern for `toll_free` numbers.\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/103#note_1417147572\r\n\t\t\t//\r\n\t\t\t// That means that this `if` condition could be `true` for multiple countries from the list.\r\n\t\t\t// Currently, it just returns the first one, which is also the \"main\" country for the \"country calling code\".\r\n\t\t\t// In an example with `toll_free` numbers above, `\"US\"` would be returned even though\r\n\t\t\t// it could as well be `\"CA\"`.\r\n\t\t\t//\r\n\t\t\t// There was also a time when this attempted to be overly smart\r\n\t\t\t// and kept track of all such multiple matching countries\r\n\t\t\t// and then picked the one that matched the `defaultCountry`, if provided.\r\n\t\t\t// For example, with `toll_free` numbers above, and with `defaultCountry: \"CA\"`,\r\n\t\t\t// it would've returned `\"CA\"` instead of `\"US\"`.\r\n\t\t\t// Later it turned out that such \"overly smart\" behavior turned out to be just confusing,\r\n\t\t\t// so this \"overly smart\" country detection was reverted to returning the \"main\" country\r\n\t\t\t// for the \"country calling code\".\r\n\t\t\t// https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/154\r\n\t\t\t//\r\n\t\t\treturn country\r\n\t\t\t//\r\n\t\t\t// The \"overly smart\" behavior code:\r\n\t\t\t//\r\n\t\t\t// if (defaultCountry) {\r\n\t\t\t// \tif (country === defaultCountry) {\r\n\t\t\t// \t\treturn country\r\n\t\t\t// \t} else {\r\n\t\t\t// \t\tmatchingCountries.push(country)\r\n\t\t\t// \t}\r\n\t\t\t// } else {\r\n\t\t\t// \treturn country\r\n\t\t\t// }\r\n\t\t}\r\n\t}\r\n\r\n\t// // Return the first (\"main\") one of the `matchingCountries`.\r\n\t// if (matchingCountries.length > 0) {\r\n\t// \treturn matchingCountries[0]\r\n\t// }\r\n}","import getCountryByNationalNumber from './getCountryByNationalNumber.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Returns the exact country for the `nationalNumber`\r\n// that belongs to the specified \"country calling code\".\r\nexport default function getCountryByCallingCode(callingCode, {\r\n\tnationalNumber: nationalPhoneNumber,\r\n\tmetadata\r\n}) {\r\n\t/* istanbul ignore if */\r\n\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\tif (metadata.isNonGeographicCallingCode(callingCode)) {\r\n\t\t\treturn '001'\r\n\t\t}\r\n\t}\r\n\tconst possibleCountries = metadata.getCountryCodesForCallingCode(callingCode)\r\n\tif (!possibleCountries) {\r\n\t\treturn\r\n\t}\r\n\t// If there's just one country corresponding to the country code,\r\n\t// then just return it, without further phone number digits validation.\r\n\tif (possibleCountries.length === 1) {\r\n\t\treturn possibleCountries[0]\r\n\t}\r\n\treturn getCountryByNationalNumber(nationalPhoneNumber, {\r\n\t\tcountries: possibleCountries,\r\n\t\tmetadata: metadata.metadata\r\n\t})\r\n}","import extractNationalNumberFromPossiblyIncompleteNumber from './extractNationalNumberFromPossiblyIncompleteNumber.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryByCallingCode from './getCountryByCallingCode.js'\r\n\r\n/**\r\n * Strips national prefix and carrier code from a complete phone number.\r\n * The difference from the non-\"FromCompleteNumber\" function is that\r\n * it won't extract national prefix if the resultant number is too short\r\n * to be a complete number for the selected phone numbering plan.\r\n * @param {string} number — Complete phone number digits.\r\n * @param {string?} country — Country, if known.\r\n * @param {Metadata} metadata — Metadata with a phone numbering plan selected.\r\n * @return {object} `{ nationalNumber: string, carrierCode: string? }`.\r\n */\r\nexport default function extractNationalNumber(number, country, metadata) {\r\n\t// Parsing national prefixes and carrier codes\r\n\t// is only required for local phone numbers\r\n\t// but some people don't understand that\r\n\t// and sometimes write international phone numbers\r\n\t// with national prefixes (or maybe even carrier codes).\r\n\t// http://ucken.blogspot.ru/2016/03/trunk-prefixes-in-skype4b.html\r\n\t// Google's original library forgives such mistakes\r\n\t// and so does this library, because it has been requested:\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/127\r\n\tconst {\r\n\t\tcarrierCode,\r\n\t\tnationalNumber\r\n\t} = extractNationalNumberFromPossiblyIncompleteNumber(\r\n\t\tnumber,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (nationalNumber !== number) {\r\n\t\tif (!shouldHaveExtractedNationalPrefix(number, nationalNumber, metadata)) {\r\n\t\t\t// Don't strip the national prefix.\r\n\t\t\treturn { nationalNumber: number }\r\n\t\t}\r\n\t\t// Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t\t// Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature.\r\n\t\tif (metadata.numberingPlan.possibleLengths()) {\r\n\t\t\t// If an exact `country` is not specified, attempt to detect it from the assumed national number.\r\n\t\t\tif (!country) {\r\n\t\t\t\tcountry = getCountryByCallingCode(metadata.numberingPlan.callingCode(), {\r\n\t\t\t\t\tnationalNumber,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\t// The number remaining after stripping the national prefix and carrier code\r\n\t\t\t// should be long enough to have a possible length for the country.\r\n\t\t\t// Otherwise, don't strip the national prefix and carrier code,\r\n\t\t\t// since the original number could be a valid number.\r\n\t\t\t// This check has been copy-pasted \"as is\" from Google's original library:\r\n\t\t\t// https://github.com/google/libphonenumber/blob/876268eb1ad6cdc1b7b5bef17fc5e43052702d57/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L3236-L3250\r\n\t\t\t// It doesn't check for the \"possibility\" of the original `number`.\r\n\t\t\t// I guess it's fine not checking that one. It works as is anyway.\r\n\t\t\tif (!isPossibleIncompleteNationalNumber(nationalNumber, country, metadata)) {\r\n\t\t\t\t// Don't strip the national prefix.\r\n\t\t\t\treturn { nationalNumber: number }\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { nationalNumber, carrierCode }\r\n}\r\n\r\n// In some countries, the same digit could be a national prefix\r\n// or a leading digit of a valid phone number.\r\n// For example, in Russia, national prefix is `8`,\r\n// and also `800 555 35 35` is a valid number\r\n// in which `8` is not a national prefix, but the first digit\r\n// of a national (significant) number.\r\n// Same's with Belarus:\r\n// `82004910060` is a valid national (significant) number,\r\n// but `2004910060` is not.\r\n// To support such cases (to prevent the code from always stripping\r\n// national prefix), a condition is imposed: a national prefix\r\n// is not extracted when the original number is \"viable\" and the\r\n// resultant number is not, a \"viable\" national number being the one\r\n// that matches `national_number_pattern`.\r\nfunction shouldHaveExtractedNationalPrefix(nationalNumberBefore, nationalNumberAfter, metadata) {\r\n\t// The equivalent in Google's code is:\r\n\t// https://github.com/google/libphonenumber/blob/e326fa1fc4283bb05eb35cb3c15c18f98a31af33/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L2969-L3004\r\n\tif (matchesEntirely(nationalNumberBefore, metadata.nationalNumberPattern()) &&\r\n\t\t!matchesEntirely(nationalNumberAfter, metadata.nationalNumberPattern())) {\r\n\t\treturn false\r\n\t}\r\n\t// This \"is possible\" national number (length) check has been commented out\r\n\t// because it's superceded by the (effectively) same check done in the\r\n\t// `extractNationalNumber()` function after it calls `shouldHaveExtractedNationalPrefix()`.\r\n\t// In other words, why run the same check twice if it could only be run once.\r\n\t// // Check the national (significant) number length after extracting national prefix and carrier code.\r\n\t// // Fixes a minor \"weird behavior\" bug: https://gitlab.com/catamphetamine/libphonenumber-js/-/issues/57\r\n\t// // (Legacy generated metadata (before `1.0.18`) didn't support the \"possible lengths\" feature).\r\n\t// if (metadata.possibleLengths()) {\r\n\t// \tif (isPossibleIncompleteNationalNumber(nationalNumberBefore, metadata) &&\r\n\t// \t\t!isPossibleIncompleteNationalNumber(nationalNumberAfter, metadata)) {\r\n\t// \t\treturn false\r\n\t// \t}\r\n\t// }\r\n\treturn true\r\n}\r\n\r\nfunction isPossibleIncompleteNationalNumber(nationalNumber, country, metadata) {\r\n\tswitch (checkNumberLength(nationalNumber, country, metadata)) {\r\n\t\tcase 'TOO_SHORT':\r\n\t\tcase 'INVALID_LENGTH':\r\n\t\t// This library ignores \"local-only\" phone numbers (for simplicity).\r\n\t\t// See the readme for more info on what are \"local-only\" phone numbers.\r\n\t\t// case 'IS_POSSIBLE_LOCAL_ONLY':\r\n\t\t\treturn false\r\n\t\tdefault:\r\n\t\t\treturn true\r\n\t}\r\n}","import Metadata from '../metadata.js'\r\nimport matchesEntirely from './matchesEntirely.js'\r\nimport extractNationalNumber from './extractNationalNumber.js'\r\nimport checkNumberLength from './checkNumberLength.js'\r\nimport getCountryCallingCode from '../getCountryCallingCode.js'\r\n\r\n/**\r\n * Sometimes some people incorrectly input international phone numbers\r\n * without the leading `+`. This function corrects such input.\r\n * @param {string} number — Phone number digits.\r\n * @param {string} [country] — Exact country of the phone number.\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCode: string?, number: string }`.\r\n */\r\nexport default function extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\tnumber,\r\n\tcountry,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\tconst countryCallingCode = country || defaultCountry\r\n\t\t? getCountryCallingCode(country || defaultCountry, metadata)\r\n\t\t: defaultCallingCode\r\n\r\n\tif (number.indexOf(countryCallingCode) === 0) {\r\n\t\tmetadata = new Metadata(metadata)\r\n\t\tmetadata.selectNumberingPlan(country || defaultCountry, countryCallingCode)\r\n\r\n\t\tconst possibleShorterNumber = number.slice(countryCallingCode.length)\r\n\r\n\t\tconst {\r\n\t\t\tnationalNumber: possibleShorterNationalNumber,\r\n\t\t} = extractNationalNumber(\r\n\t\t\tpossibleShorterNumber,\r\n\t\t\tcountry,\r\n\t\t\tmetadata\r\n\t\t)\r\n\r\n\t\tconst {\r\n\t\t\tnationalNumber\r\n\t\t} = extractNationalNumber(\r\n\t\t\tnumber,\r\n\t\t\tcountry,\r\n\t\t\tmetadata\r\n\t\t)\r\n\r\n\t\t// If the number was not valid before but is valid now,\r\n\t\t// or if it was too long before, we consider the number\r\n\t\t// with the country calling code stripped to be a better result\r\n\t\t// and keep that instead.\r\n\t\t// For example, in Germany (+49), `49` is a valid area code,\r\n\t\t// so if a number starts with `49`, it could be both a valid\r\n\t\t// national German number or an international number without\r\n\t\t// a leading `+`.\r\n\t\tif (\r\n\t\t\t(\r\n\t\t\t\t!matchesEntirely(nationalNumber, metadata.nationalNumberPattern()) &&\r\n\t\t\t\tmatchesEntirely(possibleShorterNationalNumber, metadata.nationalNumberPattern())\r\n\t\t\t)\r\n\t\t\t||\r\n\t\t\tcheckNumberLength(nationalNumber, country, metadata) === 'TOO_LONG'\r\n\t\t) {\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: possibleShorterNumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn { number }\r\n}","import stripIddPrefix from './stripIddPrefix.js'\r\nimport extractCountryCallingCodeFromInternationalNumberWithoutPlusSign from './extractCountryCallingCodeFromInternationalNumberWithoutPlusSign.js'\r\nimport Metadata from '../metadata.js'\r\nimport { MAX_LENGTH_COUNTRY_CODE } from '../constants.js'\r\n\r\n/**\r\n * Converts a phone number digits (possibly with a `+`)\r\n * into a calling code and the rest phone number digits.\r\n * The \"rest phone number digits\" could include\r\n * a national prefix, carrier code, and national\r\n * (significant) number.\r\n * @param {string} number — Phone number digits (possibly with a `+`).\r\n * @param {string} [country] — Country.\r\n * @param {string} [defaultCountry] — Default country.\r\n * @param {string} [defaultCallingCode] — Default calling code (some phone numbering plans are non-geographic).\r\n * @param {object} metadata\r\n * @return {object} `{ countryCallingCodeSource: string?, countryCallingCode: string?, number: string }`\r\n * @example\r\n * // Returns `{ countryCallingCode: \"1\", number: \"2133734253\" }`.\r\n * extractCountryCallingCode('2133734253', null, 'US', null, metadata)\r\n * extractCountryCallingCode('2133734253', null, null, '1', metadata)\r\n * extractCountryCallingCode('+12133734253', null, null, null, metadata)\r\n * extractCountryCallingCode('+12133734253', null, 'RU', null, metadata)\r\n */\r\nexport default function extractCountryCallingCode(\r\n\tnumber,\r\n\tcountry,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tlet isNumberWithIddPrefix\r\n\r\n\t// If this is not an international phone number,\r\n\t// then either extract an \"IDD\" prefix, or extract a\r\n\t// country calling code from a number by autocorrecting it\r\n\t// by prepending a leading `+` in cases when it starts\r\n\t// with the country calling code.\r\n\t// https://wikitravel.org/en/International_dialling_prefix\r\n\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\tif (number[0] !== '+') {\r\n\t\t// Convert an \"out-of-country\" dialing phone number\r\n\t\t// to a proper international phone number.\r\n\t\tconst numberWithoutIDD = stripIddPrefix(number, country || defaultCountry, defaultCallingCode, metadata)\r\n\t\t// If an IDD prefix was stripped then\r\n\t\t// convert the number to international one\r\n\t\t// for subsequent parsing.\r\n\t\tif (numberWithoutIDD && numberWithoutIDD !== number) {\r\n\t\t\tisNumberWithIddPrefix = true\r\n\t\t\tnumber = '+' + numberWithoutIDD\r\n\t\t} else {\r\n\t\t\t// Check to see if the number starts with the country calling code\r\n\t\t\t// for the default country. If so, we remove the country calling code,\r\n\t\t\t// and do some checks on the validity of the number before and after.\r\n\t\t\t// https://github.com/catamphetamine/libphonenumber-js/issues/376\r\n\t\t\tif (country || defaultCountry || defaultCallingCode) {\r\n\t\t\t\tconst {\r\n\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t} = extractCountryCallingCodeFromInternationalNumberWithoutPlusSign(\r\n\t\t\t\t\tnumber,\r\n\t\t\t\t\tcountry,\r\n\t\t\t\t\tdefaultCountry,\r\n\t\t\t\t\tdefaultCallingCode,\r\n\t\t\t\t\tmetadata\r\n\t\t\t\t)\r\n\t\t\t\tif (countryCallingCode) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tcountryCallingCodeSource: 'FROM_NUMBER_WITHOUT_PLUS_SIGN',\r\n\t\t\t\t\t\tcountryCallingCode,\r\n\t\t\t\t\t\tnumber: shorterNumber\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn {\r\n\t\t\t\t// No need to set it to `UNSPECIFIED`. It can be just `undefined`.\r\n\t\t\t\t// countryCallingCodeSource: 'UNSPECIFIED',\r\n\t\t\t\tnumber\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// `number` can only be international at this point.\r\n\r\n\t// Fast abortion: country codes do not begin with a '0'\r\n\tif (number[1] === '0') {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// The thing with country phone codes\r\n\t// is that they are orthogonal to each other\r\n\t// i.e. there's no such country phone code A\r\n\t// for which country phone code B exists\r\n\t// where B starts with A.\r\n\t// Therefore, while scanning digits,\r\n\t// if a valid country code is found,\r\n\t// that means that it is the country code.\r\n\t//\r\n\tlet i = 2\r\n\twhile (i - 1 <= MAX_LENGTH_COUNTRY_CODE && i <= number.length) {\r\n\t\tconst countryCallingCode = number.slice(1, i)\r\n\t\tif (metadata.hasCallingCode(countryCallingCode)) {\r\n\t\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t\t\treturn {\r\n\t\t\t\tcountryCallingCodeSource: isNumberWithIddPrefix ? 'FROM_NUMBER_WITH_IDD' : 'FROM_NUMBER_WITH_PLUS_SIGN',\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\tnumber: number.slice(i)\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\r\n\treturn {}\r\n}\r\n\r\n// The possible values for the returned `countryCallingCodeSource` are:\r\n//\r\n// Copy-pasted from:\r\n// https://github.com/google/libphonenumber/blob/master/resources/phonenumber.proto\r\n//\r\n// // The source from which the country_code is derived. This is not set in the\r\n// // general parsing method, but in the method that parses and keeps raw_input.\r\n// // New fields could be added upon request.\r\n// enum CountryCodeSource {\r\n// // Default value returned if this is not set, because the phone number was\r\n// // created using parse, not parseAndKeepRawInput. hasCountryCodeSource will\r\n// // return false if this is the case.\r\n// UNSPECIFIED = 0;\r\n//\r\n// // The country_code is derived based on a phone number with a leading \"+\",\r\n// // e.g. the French number \"+33 1 42 68 53 00\".\r\n// FROM_NUMBER_WITH_PLUS_SIGN = 1;\r\n//\r\n// // The country_code is derived based on a phone number with a leading IDD,\r\n// // e.g. the French number \"011 33 1 42 68 53 00\", as it is dialled from US.\r\n// FROM_NUMBER_WITH_IDD = 5;\r\n//\r\n// // The country_code is derived based on a phone number without a leading\r\n// // \"+\", e.g. the French number \"33 1 42 68 53 00\" when defaultCountry is\r\n// // supplied as France.\r\n// FROM_NUMBER_WITHOUT_PLUS_SIGN = 10;\r\n//\r\n// // The country_code is derived NOT based on the phone number itself, but\r\n// // from the defaultCountry parameter provided in the parsing function by the\r\n// // clients. This happens mostly for numbers written in the national format\r\n// // (without country code). For example, this would be set when parsing the\r\n// // French number \"01 42 68 53 00\", when defaultCountry is supplied as\r\n// // France.\r\n// FROM_DEFAULT_COUNTRY = 20;\r\n// }","import { VALID_PUNCTUATION } from '../constants.js'\r\n\r\n// Removes brackets and replaces dashes with spaces.\r\n//\r\n// E.g. \"(999) 111-22-33\" -> \"999 111 22 33\"\r\n//\r\n// For some reason Google's metadata contains `<intlFormat/>`s with brackets and dashes.\r\n// Meanwhile, there's no single opinion about using punctuation in international phone numbers.\r\n//\r\n// For example, Google's `<intlFormat/>` for USA is `+1 213-373-4253`.\r\n// And here's a quote from WikiPedia's \"North American Numbering Plan\" page:\r\n// https://en.wikipedia.org/wiki/North_American_Numbering_Plan\r\n//\r\n// \"The country calling code for all countries participating in the NANP is 1.\r\n// In international format, an NANP number should be listed as +1 301 555 01 00,\r\n// where 301 is an area code (Maryland).\"\r\n//\r\n// I personally prefer the international format without any punctuation.\r\n// For example, brackets are remnants of the old age, meaning that the\r\n// phone number part in brackets (so called \"area code\") can be omitted\r\n// if dialing within the same \"area\".\r\n// And hyphens were clearly introduced for splitting local numbers into memorizable groups.\r\n// For example, remembering \"5553535\" is difficult but \"555-35-35\" is much simpler.\r\n// Imagine a man taking a bus from home to work and seeing an ad with a phone number.\r\n// He has a couple of seconds to memorize that number until it passes by.\r\n// If it were spaces instead of hyphens the man wouldn't necessarily get it,\r\n// but with hyphens instead of spaces the grouping is more explicit.\r\n// I personally think that hyphens introduce visual clutter,\r\n// so I prefer replacing them with spaces in international numbers.\r\n// In the modern age all output is done on displays where spaces are clearly distinguishable\r\n// so hyphens can be safely replaced with spaces without losing any legibility.\r\n//\r\nexport default function applyInternationalSeparatorStyle(formattedNumber) {\r\n\treturn formattedNumber.replace(new RegExp(`[${VALID_PUNCTUATION}]+`, 'g'), ' ').trim()\r\n}","import applyInternationalSeparatorStyle from './applyInternationalSeparatorStyle.js'\r\n\r\n// This was originally set to $1 but there are some countries for which the\r\n// first group is not used in the national pattern (e.g. Argentina) so the $1\r\n// group does not match correctly. Therefore, we use `\\d`, so that the first\r\n// group actually used in the pattern will be matched.\r\nexport const FIRST_GROUP_PATTERN = /(\\$\\d)/\r\n\r\nexport default function formatNationalNumberUsingFormat(\r\n\tnumber,\r\n\tformat,\r\n\t{\r\n\t\tuseInternationalFormat,\r\n\t\twithNationalPrefix,\r\n\t\tcarrierCode,\r\n\t\tmetadata\r\n\t}\r\n) {\r\n\tconst formattedNumber = number.replace(\r\n\t\tnew RegExp(format.pattern()),\r\n\t\tuseInternationalFormat\r\n\t\t\t? format.internationalFormat()\r\n\t\t\t: (\r\n\t\t\t\t// This library doesn't use `domestic_carrier_code_formatting_rule`,\r\n\t\t\t\t// because that one is only used when formatting phone numbers\r\n\t\t\t\t// for dialing from a mobile phone, and this is not a dialing library.\r\n\t\t\t\t// carrierCode && format.domesticCarrierCodeFormattingRule()\r\n\t\t\t\t// \t// First, replace the $CC in the formatting rule with the desired carrier code.\r\n\t\t\t\t// \t// Then, replace the $FG in the formatting rule with the first group\r\n\t\t\t\t// \t// and the carrier code combined in the appropriate way.\r\n\t\t\t\t// \t? format.format().replace(FIRST_GROUP_PATTERN, format.domesticCarrierCodeFormattingRule().replace('$CC', carrierCode))\r\n\t\t\t\t// \t: (\r\n\t\t\t\t// \t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t// \t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t// \t\t\t: format.format()\r\n\t\t\t\t// \t)\r\n\t\t\t\twithNationalPrefix && format.nationalPrefixFormattingRule()\r\n\t\t\t\t\t? format.format().replace(FIRST_GROUP_PATTERN, format.nationalPrefixFormattingRule())\r\n\t\t\t\t\t: format.format()\r\n\t\t\t)\r\n\t)\r\n\tif (useInternationalFormat) {\r\n\t\treturn applyInternationalSeparatorStyle(formattedNumber)\r\n\t}\r\n\treturn formattedNumber\r\n}","import Metadata from '../metadata.js'\r\n\r\n/**\r\n * Pattern that makes it easy to distinguish whether a region has a single\r\n * international dialing prefix or not. If a region has a single international\r\n * prefix (e.g. 011 in USA), it will be represented as a string that contains\r\n * a sequence of ASCII digits, and possibly a tilde, which signals waiting for\r\n * the tone. If there are multiple available international prefixes in a\r\n * region, they will be represented as a regex string that always contains one\r\n * or more characters that are not ASCII digits or a tilde.\r\n */\r\nconst SINGLE_IDD_PREFIX_REG_EXP = /^[\\d]+(?:[~\\u2053\\u223C\\uFF5E][\\d]+)?$/\r\n\r\n// If the `country` supports IDD calling, it returns a preferred IDD prefix.\r\n// If the `country` doesn't support IDD calling, it returns `undefined`.\r\nexport default function getIddPrefix(country, callingCode, metadata) {\r\n\tconst countryMetadata = new Metadata(metadata)\r\n\tcountryMetadata.selectNumberingPlan(country, callingCode)\r\n\tif (countryMetadata.defaultIDDPrefix()) {\r\n\t\treturn countryMetadata.defaultIDDPrefix()\r\n\t}\r\n\tif (SINGLE_IDD_PREFIX_REG_EXP.test(countryMetadata.IDDPrefix())) {\r\n\t\treturn countryMetadata.IDDPrefix()\r\n\t}\r\n}\r\n","import { VALID_DIGITS } from '../../constants.js'\r\n\r\n// The RFC 3966 format for extensions.\r\nconst RFC3966_EXTN_PREFIX = ';ext='\r\n\r\n/**\r\n * Helper method for constructing regular expressions for parsing. Creates\r\n * an expression that captures up to max_length digits.\r\n * @return {string} RegEx pattern to capture extension digits.\r\n */\r\nconst getExtensionDigitsPattern = (maxLength) => `([${VALID_DIGITS}]{1,${maxLength}})`\r\n\r\n/**\r\n * Helper initialiser method to create the regular-expression pattern to match\r\n * extensions.\r\n * Copy-pasted from Google's `libphonenumber`:\r\n * https://github.com/google/libphonenumber/blob/55b2646ec9393f4d3d6661b9c82ef9e258e8b829/javascript/i18n/phonenumbers/phonenumberutil.js#L759-L766\r\n * @return {string} RegEx pattern to capture extensions.\r\n */\r\nexport default function createExtensionPattern(purpose) {\r\n\t// We cap the maximum length of an extension based on the ambiguity of the way\r\n\t// the extension is prefixed. As per ITU, the officially allowed length for\r\n\t// extensions is actually 40, but we don't support this since we haven't seen real\r\n\t// examples and this introduces many false interpretations as the extension labels\r\n\t// are not standardized.\r\n\t/** @type {string} */\r\n\tvar extLimitAfterExplicitLabel = '20';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterLikelyLabel = '15';\r\n\t/** @type {string} */\r\n\tvar extLimitAfterAmbiguousChar = '9';\r\n\t/** @type {string} */\r\n\tvar extLimitWhenNotSure = '6';\r\n\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsBetweenNumberAndExtLabel = \"[ \\u00A0\\\\t,]*\";\r\n\t// Optional full stop (.) or colon, followed by zero or more spaces/tabs/commas.\r\n\t/** @type {string} */\r\n\tvar possibleCharsAfterExtLabel = \"[:\\\\.\\uFF0E]?[ \\u00A0\\\\t,-]*\";\r\n\t/** @type {string} */\r\n\tvar optionalExtnSuffix = \"#?\";\r\n\r\n\t// Here the extension is called out in more explicit way, i.e mentioning it obvious\r\n\t// patterns like \"ext.\".\r\n\t/** @type {string} */\r\n\tvar explicitExtLabels =\r\n\t \"(?:e?xt(?:ensi(?:o\\u0301?|\\u00F3))?n?|\\uFF45?\\uFF58\\uFF54\\uFF4E?|\\u0434\\u043E\\u0431|anexo)\";\r\n\t// One-character symbols that can be used to indicate an extension, and less\r\n\t// commonly used or more ambiguous extension labels.\r\n\t/** @type {string} */\r\n\tvar ambiguousExtLabels = \"(?:[x\\uFF58#\\uFF03~\\uFF5E]|int|\\uFF49\\uFF4E\\uFF54)\";\r\n\t// When extension is not separated clearly.\r\n\t/** @type {string} */\r\n\tvar ambiguousSeparator = \"[- ]+\";\r\n\t// This is the same as possibleSeparatorsBetweenNumberAndExtLabel, but not matching\r\n\t// comma as extension label may have it.\r\n\t/** @type {string} */\r\n\tvar possibleSeparatorsNumberExtLabelNoComma = \"[ \\u00A0\\\\t]*\";\r\n\t// \",,\" is commonly used for auto dialling the extension when connected. First\r\n\t// comma is matched through possibleSeparatorsBetweenNumberAndExtLabel, so we do\r\n\t// not repeat it here. Semi-colon works in Iphone and Android also to pop up a\r\n\t// button with the extension number following.\r\n\t/** @type {string} */\r\n\tvar autoDiallingAndExtLabelsFound = \"(?:,{2}|;)\";\r\n\r\n\t/** @type {string} */\r\n\tvar rfcExtn = RFC3966_EXTN_PREFIX\r\n\t + getExtensionDigitsPattern(extLimitAfterExplicitLabel);\r\n\t/** @type {string} */\r\n\tvar explicitExtn = possibleSeparatorsBetweenNumberAndExtLabel + explicitExtLabels\r\n\t + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterExplicitLabel)\r\n\t + optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar ambiguousExtn = possibleSeparatorsBetweenNumberAndExtLabel + ambiguousExtLabels\r\n\t + possibleCharsAfterExtLabel\r\n\t+ getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar americanStyleExtnWithSuffix = ambiguousSeparator\r\n\t+ getExtensionDigitsPattern(extLimitWhenNotSure) + \"#\";\r\n\r\n\t/** @type {string} */\r\n\tvar autoDiallingExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t + autoDiallingAndExtLabelsFound + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterLikelyLabel)\r\n\t+ optionalExtnSuffix;\r\n\t/** @type {string} */\r\n\tvar onlyCommasExtn = possibleSeparatorsNumberExtLabelNoComma\r\n\t + \"(?:,)+\" + possibleCharsAfterExtLabel\r\n\t + getExtensionDigitsPattern(extLimitAfterAmbiguousChar)\r\n\t + optionalExtnSuffix;\r\n\r\n\t// The first regular expression covers RFC 3966 format, where the extension is added\r\n\t// using \";ext=\". The second more generic where extension is mentioned with explicit\r\n\t// labels like \"ext:\". In both the above cases we allow more numbers in extension than\r\n\t// any other extension labels. The third one captures when single character extension\r\n\t// labels or less commonly used labels are used. In such cases we capture fewer\r\n\t// extension digits in order to reduce the chance of falsely interpreting two\r\n\t// numbers beside each other as a number + extension. The fourth one covers the\r\n\t// special case of American numbers where the extension is written with a hash\r\n\t// at the end, such as \"- 503#\". The fifth one is exclusively for extension\r\n\t// autodialling formats which are used when dialling and in this case we accept longer\r\n\t// extensions. The last one is more liberal on the number of commas that acts as\r\n\t// extension labels, so we have a strict cap on the number of digits in such extensions.\r\n\treturn rfcExtn + \"|\"\r\n\t + explicitExtn + \"|\"\r\n\t + ambiguousExtn + \"|\"\r\n\t + americanStyleExtnWithSuffix + \"|\"\r\n\t + autoDiallingExtn + \"|\"\r\n\t + onlyCommasExtn;\r\n}","import {\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tVALID_DIGITS,\r\n\tVALID_PUNCTUATION,\r\n\tPLUS_CHARS\r\n} from '../constants.js'\r\n\r\nimport createExtensionPattern from './extension/createExtensionPattern.js'\r\n\r\n// Regular expression of viable phone numbers. This is location independent.\r\n// Checks we have at least three leading digits, and only valid punctuation,\r\n// alpha characters and digits in the phone number. Does not include extension\r\n// data. The symbol 'x' is allowed here as valid punctuation since it is often\r\n// used as a placeholder for carrier codes, for example in Brazilian phone\r\n// numbers. We also allow multiple '+' characters at the start.\r\n//\r\n// Corresponds to the following:\r\n// [digits]{minLengthNsn}|\r\n// plus_sign*\r\n// (([punctuation]|[star])*[digits]){3,}([punctuation]|[star]|[digits]|[alpha])*\r\n//\r\n// The first reg-ex is to allow short numbers (two digits long) to be parsed if\r\n// they are entered as \"15\" etc, but only if there is no punctuation in them.\r\n// The second expression restricts the number of digits to three or more, but\r\n// then allows them to be in international form, and to have alpha-characters\r\n// and punctuation. We split up the two reg-exes here and combine them when\r\n// creating the reg-ex VALID_PHONE_NUMBER_PATTERN itself so we can prefix it\r\n// with ^ and append $ to each branch.\r\n//\r\n// \"Note VALID_PUNCTUATION starts with a -,\r\n// so must be the first in the range\" (c) Google devs.\r\n// (wtf did they mean by saying that; probably nothing)\r\n//\r\nconst MIN_LENGTH_PHONE_NUMBER_PATTERN = '[' + VALID_DIGITS + ']{' + MIN_LENGTH_FOR_NSN + '}'\r\n//\r\n// And this is the second reg-exp:\r\n// (see MIN_LENGTH_PHONE_NUMBER_PATTERN for a full description of this reg-exp)\r\n//\r\nexport const VALID_PHONE_NUMBER =\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){3,}' +\r\n\t'[' +\r\n\t\tVALID_PUNCTUATION +\r\n\t\tVALID_DIGITS +\r\n\t']*'\r\n\r\n// This regular expression isn't present in Google's `libphonenumber`\r\n// and is only used to determine whether the phone number being input\r\n// is too short for it to even consider it a \"valid\" number.\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nconst VALID_PHONE_NUMBER_START_REG_EXP = new RegExp(\r\n\t'^' +\r\n\t'[' + PLUS_CHARS + ']{0,1}' +\r\n\t'(?:' +\r\n\t\t'[' + VALID_PUNCTUATION + ']*' +\r\n\t\t'[' + VALID_DIGITS + ']' +\r\n\t'){1,2}' +\r\n\t'$'\r\n, 'i')\r\n\r\nexport const VALID_PHONE_NUMBER_WITH_EXTENSION =\r\n\tVALID_PHONE_NUMBER +\r\n\t// Phone number extensions\r\n\t'(?:' + createExtensionPattern() + ')?'\r\n\r\n// The combined regular expression for valid phone numbers:\r\n//\r\nconst VALID_PHONE_NUMBER_PATTERN = new RegExp(\r\n\t// Either a short two-digit-only phone number\r\n\t'^' +\r\n\t\tMIN_LENGTH_PHONE_NUMBER_PATTERN +\r\n\t'$' +\r\n\t'|' +\r\n\t// Or a longer fully parsed phone number (min 3 characters)\r\n\t'^' +\r\n\t\tVALID_PHONE_NUMBER_WITH_EXTENSION +\r\n\t'$'\r\n, 'i')\r\n\r\n// Checks to see if the string of characters could possibly be a phone number at\r\n// all. At the moment, checks to see that the string begins with at least 2\r\n// digits, ignoring any punctuation commonly found in phone numbers. This method\r\n// does not require the number to be normalized in advance - but does assume\r\n// that leading non-number symbols have been removed, such as by the method\r\n// `extract_possible_number`.\r\n//\r\nexport default function isViablePhoneNumber(number) {\r\n\treturn number.length >= MIN_LENGTH_FOR_NSN &&\r\n\t\tVALID_PHONE_NUMBER_PATTERN.test(number)\r\n}\r\n\r\n// This is just a way to differentiate between a really invalid phone\r\n// number like \"abcde\" and a valid phone number that a user has just\r\n// started inputting, like \"+1\" or \"1\": both these cases would be\r\n// considered `NOT_A_NUMBER` by Google's `libphonenumber`, but this\r\n// library can provide a more detailed error message — whether it's\r\n// really \"not a number\", or is it just a start of a valid phone number.\r\nexport function isViablePhoneNumberStart(number) {\r\n\treturn VALID_PHONE_NUMBER_START_REG_EXP.test(number)\r\n}","import isViablePhoneNumber from './isViablePhoneNumber.js'\r\n\r\n// https://www.ietf.org/rfc/rfc3966.txt\r\n\r\n/**\r\n * @param {string} text - Phone URI (RFC 3966).\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nexport function parseRFC3966(text) {\r\n\tlet number\r\n\tlet ext\r\n\r\n\t// Replace \"tel:\" with \"tel=\" for parsing convenience.\r\n\ttext = text.replace(/^tel:/, 'tel=')\r\n\r\n\tfor (const part of text.split(';')) {\r\n\t\tconst [name, value] = part.split('=')\r\n\t\tswitch (name) {\r\n\t\t\tcase 'tel':\r\n\t\t\t\tnumber = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'ext':\r\n\t\t\t\text = value\r\n\t\t\t\tbreak\r\n\t\t\tcase 'phone-context':\r\n\t\t\t\t// Only \"country contexts\" are supported.\r\n\t\t\t\t// \"Domain contexts\" are ignored.\r\n\t\t\t\tif (value[0] === '+') {\r\n\t\t\t\t\tnumber = value + number\r\n\t\t\t\t}\r\n\t\t\t\tbreak\r\n\t\t}\r\n\t}\r\n\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst result = { number }\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * @param {object} - `{ ?number, ?extension }`.\r\n * @return {string} Phone URI (RFC 3966).\r\n */\r\nexport function formatRFC3966({ number, ext }) {\r\n\tif (!number) {\r\n\t\treturn ''\r\n\t}\r\n\tif (number[0] !== '+') {\r\n\t\tthrow new Error(`\"formatRFC3966()\" expects \"number\" to be in E.164 format.`)\r\n\t}\r\n\treturn `tel:${number}${ext ? ';ext=' + ext : ''}`\r\n}","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport formatNationalNumberUsingFormat from './helpers/formatNationalNumberUsingFormat.js'\r\nimport Metadata, { getCountryCallingCode } from './metadata.js'\r\nimport getIddPrefix from './helpers/getIddPrefix.js'\r\nimport { formatRFC3966 } from './helpers/RFC3966.js'\r\n\r\nconst DEFAULT_OPTIONS = {\r\n\tformatExtension: (formattedNumber, extension, metadata) => `${formattedNumber}${metadata.ext()}${extension}`\r\n}\r\n\r\n/**\r\n * Formats a phone number.\r\n *\r\n * format(phoneNumberInstance, 'INTERNATIONAL', { ..., v2: true }, metadata)\r\n * format(phoneNumberInstance, 'NATIONAL', { ..., v2: true }, metadata)\r\n *\r\n * format({ phone: '8005553535', country: 'RU' }, 'INTERNATIONAL', { ... }, metadata)\r\n * format({ phone: '8005553535', country: 'RU' }, 'NATIONAL', undefined, metadata)\r\n *\r\n * @param {object|PhoneNumber} input — If `options.v2: true` flag is passed, the `input` should be a `PhoneNumber` instance. Otherwise, it should be an object of shape `{ phone: '...', country: '...' }`.\r\n * @param {string} format\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {string}\r\n */\r\nexport default function formatNumber(input, format, options, metadata) {\r\n\t// Apply default options.\r\n\tif (options) {\r\n\t\t// Using ES6 \"rest spread\" syntax here didn't work with `babel`/`istanbul`\r\n\t\t// for some weird reason: this line of code would cause the code coverage\r\n\t\t// to show as not 100%. That's because `babel`/`istanbul`, for some weird reason,\r\n\t\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\r\n\t\t//\r\n\t\t// options = { ...DEFAULT_OPTIONS, ...options }\r\n\t\t//\r\n\t\toptions = merge({}, DEFAULT_OPTIONS, options)\r\n\t} else {\r\n\t\toptions = DEFAULT_OPTIONS\r\n\t}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Normally, the `input` object is supposed to be a `PhoneNumber` class instance.\r\n\t// Also, according to the `PhoneNumber` class source code, `country` can't be \"001\".\r\n\t// It means that normally `input.country` or `input.countryCallingCode` is supposed\r\n\t// to be present because either of the two is always required to exist in a `PhoneNumber` instance.\r\n\t// This means that realistically, it's gonna step into either the first `if`\r\n\t// or the following `else if`, and normally it won't even reach the legacy-compatibility\r\n\t// `else return input.phone || ''` part.\r\n\t// So normally, it won't ever return an empty string here.\r\n\tif (input.country && input.country !== '001') {\r\n\t\t// Validate `input.country`.\r\n\t\tif (!metadata.hasCountry(input.country)) {\r\n\t\t\tthrow new Error(`Unknown country: ${input.country}`)\r\n\t\t}\r\n\t\tmetadata.selectNumberingPlan(input.country)\r\n\t}\r\n\telse if (input.countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(input.countryCallingCode)\r\n\t}\r\n\telse return input.phone || ''\r\n\r\n\tconst countryCallingCode = metadata.countryCallingCode()\r\n\r\n\tconst nationalNumber = options.v2 ? input.nationalNumber : input.phone\r\n\r\n\t// This variable should have been declared inside `case`s\r\n\t// but Babel has a bug and it says \"duplicate variable declaration\".\r\n\tlet number\r\n\r\n\tswitch (format) {\r\n\t\tcase 'NATIONAL':\r\n\t\t\t// Normally, the `input` object is supposed to be a `PhoneNumber` class instance,\r\n\t\t\t// and a `PhoneNumber` class instance is always required to have a `nationalNumber`.\r\n\t\t\t// This means that the `if (!nationalNumber)` below is just for legacy-compatibility\r\n\t\t\t// and it normally can't really happen, so normally it won't ever return an empty string here.\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn ''\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, input.carrierCode, 'NATIONAL', metadata, options)\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'INTERNATIONAL':\r\n\t\t\t// Legacy argument support.\r\n\t\t\t// (`{ country: ..., phone: '' }`)\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\treturn `+${countryCallingCode}`\r\n\t\t\t}\r\n\t\t\tnumber = formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata, options)\r\n\t\t\tnumber = `+${countryCallingCode} ${number}`\r\n\t\t\treturn addExtension(number, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tcase 'E.164':\r\n\t\t\t// `E.164` doesn't define \"phone number extensions\".\r\n\t\t\treturn `+${countryCallingCode}${nationalNumber}`\r\n\r\n\t\tcase 'RFC3966':\r\n\t\t\treturn formatRFC3966({\r\n\t\t\t\tnumber: `+${countryCallingCode}${nationalNumber}`,\r\n\t\t\t\text: input.ext\r\n\t\t\t})\r\n\r\n\t\t// For reference, here's Google's IDD formatter:\r\n\t\t// https://github.com/google/libphonenumber/blob/32719cf74e68796788d1ca45abc85dcdc63ba5b9/java/libphonenumber/src/com/google/i18n/phonenumbers/PhoneNumberUtil.java#L1546\r\n\t\t// Not saying that this IDD formatter replicates it 1:1, but it seems to work.\r\n\t\t// Who would even need to format phone numbers in IDD format anyway?\r\n\t\tcase 'IDD':\r\n\t\t\t// If the required `fromCountry` parameter is not passed, it will return `undefined`.\r\n\t\t\tif (!options.fromCountry) {\r\n\t\t\t\treturn\r\n\t\t\t\t// throw new Error('`fromCountry` option not passed for IDD-prefixed formatting.')\r\n\t\t\t}\r\n\t\t\tconst formattedNumber = formatIDD(\r\n\t\t\t\tnationalNumber,\r\n\t\t\t\tinput.carrierCode,\r\n\t\t\t\tcountryCallingCode,\r\n\t\t\t\toptions.fromCountry,\r\n\t\t\t\tmetadata\r\n\t\t\t)\r\n\t\t\t// If the country of the phone number doesn't support IDD calling, it will return `undefined`.\r\n\t\t\tif (!formattedNumber) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\treturn addExtension(formattedNumber, input.ext, metadata, options.formatExtension)\r\n\r\n\t\tdefault:\r\n\t\t\tthrow new Error(`Unknown \"format\" argument passed to \"formatNumber()\": \"${format}\"`)\r\n\t}\r\n}\r\n\r\nfunction formatNationalNumber(number, carrierCode, formatAs, metadata, options) {\r\n\tconst format = chooseFormatForNumber(metadata.formats(), number)\r\n\tif (!format) {\r\n\t\treturn number\r\n\t}\r\n\treturn formatNationalNumberUsingFormat(\r\n\t\tnumber,\r\n\t\tformat,\r\n\t\t{\r\n\t\t\tuseInternationalFormat: formatAs === 'INTERNATIONAL',\r\n\t\t\twithNationalPrefix: format.nationalPrefixIsOptionalWhenFormattingInNationalFormat() && (options && options.nationalPrefix === false) ? false : true,\r\n\t\t\tcarrierCode,\r\n\t\t\tmetadata\r\n\t\t}\r\n\t)\r\n}\r\n\r\nexport function chooseFormatForNumber(availableFormats, nationalNumber) {\r\n\t// Using a `for ... of` loop here didn't work with `babel`/`istanbul`:\r\n\t// for some weird reason, it showed code coverage less than 100%.\r\n\t// That's because `babel`/`istanbul`, for some weird reason,\r\n\t// apparently doesn't know how to properly exclude Babel polyfills from code coverage.\r\n\t//\r\n\t// for (const format of availableFormats) { ... }\r\n\t//\r\n\treturn pickFirstMatchingElement(availableFormats, (format) => {\r\n\t\t// Validate leading digits.\r\n\t\t// The test case for \"else path\" could be found by searching for\r\n\t\t// \"format.leadingDigitsPatterns().length === 0\".\r\n\t\tif (format.leadingDigitsPatterns().length > 0) {\r\n\t\t\t// The last leading_digits_pattern is used here, as it is the most detailed\r\n\t\t\tconst lastLeadingDigitsPattern = format.leadingDigitsPatterns()[format.leadingDigitsPatterns().length - 1]\r\n\t\t\t// If leading digits don't match then move on to the next phone number format\r\n\t\t\tif (nationalNumber.search(lastLeadingDigitsPattern) !== 0) {\r\n\t\t\t\treturn false\r\n\t\t\t}\r\n\t\t}\r\n\t\t// Check that the national number matches the phone number format regular expression\r\n\t\treturn matchesEntirely(nationalNumber, format.pattern())\r\n\t})\r\n}\r\n\r\nfunction addExtension(formattedNumber, ext, metadata, formatExtension) {\r\n\treturn ext ? formatExtension(formattedNumber, ext, metadata) : formattedNumber\r\n}\r\n\r\nfunction formatIDD(\r\n\tnationalNumber,\r\n\tcarrierCode,\r\n\tcountryCallingCode,\r\n\tfromCountry,\r\n\tmetadata\r\n) {\r\n\tconst fromCountryCallingCode = getCountryCallingCode(fromCountry, metadata.metadata)\r\n\t// When calling within the same country calling code.\r\n\tif (fromCountryCallingCode === countryCallingCode) {\r\n\t\tconst formattedNumber = formatNationalNumber(nationalNumber, carrierCode, 'NATIONAL', metadata)\r\n\t\t// For NANPA regions, return the national format for these regions\r\n\t\t// but prefix it with the country calling code.\r\n\t\tif (countryCallingCode === '1') {\r\n\t\t\treturn countryCallingCode + ' ' + formattedNumber\r\n\t\t}\r\n\t\t// If regions share a country calling code, the country calling code need\r\n\t\t// not be dialled. This also applies when dialling within a region, so this\r\n\t\t// if clause covers both these cases. Technically this is the case for\r\n\t\t// dialling from La Reunion to other overseas departments of France (French\r\n\t\t// Guiana, Martinique, Guadeloupe), but not vice versa - so we don't cover\r\n\t\t// this edge case for now and for those cases return the version including\r\n\t\t// country calling code. Details here:\r\n\t\t// http://www.petitfute.com/voyage/225-info-pratiques-reunion\r\n\t\t//\r\n\t\treturn formattedNumber\r\n\t}\r\n\tconst iddPrefix = getIddPrefix(fromCountry, undefined, metadata.metadata)\r\n\tif (iddPrefix) {\r\n\t\treturn `${iddPrefix} ${countryCallingCode} ${formatNationalNumber(nationalNumber, null, 'INTERNATIONAL', metadata)}`\r\n\t}\r\n}\r\n\r\nfunction merge(...objects) {\r\n\tlet i = 1\r\n\twhile (i < objects.length) {\r\n\t\tif (objects[i]) {\r\n\t\t\tfor (const key in objects[i]) {\r\n\t\t\t\tobjects[0][key] = objects[i][key]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n\treturn objects[0]\r\n}\r\n\r\nfunction pickFirstMatchingElement(elements, testFunction) {\r\n\tlet i = 0\r\n\twhile (i < elements.length) {\r\n\t\tif (testFunction(elements[i])) {\r\n\t\t\treturn elements[i]\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}","import Metadata, { validateMetadata } from './metadata.js'\r\nimport isPossibleNumber from './isPossible.js'\r\nimport isValidNumber from './isValid.js'\r\nimport getNumberType from './helpers/getNumberType.js'\r\nimport getPossibleCountriesForNumber from './helpers/getPossibleCountriesForNumber.js'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport isObject from './helpers/isObject.js'\r\nimport formatNumber from './format.js'\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\nexport default class PhoneNumber {\r\n\t/**\r\n\t * @param {string} countryOrCountryCallingCode\r\n\t * @param {string} nationalNumber\r\n\t * @param {object} metadata — Metadata JSON\r\n\t * @return {PhoneNumber}\r\n\t */\r\n\tconstructor(countryOrCountryCallingCode, nationalNumber, metadata) {\r\n\t\t// Validate `countryOrCountryCallingCode` argument.\r\n\t\tif (!countryOrCountryCallingCode) {\r\n\t\t\tthrow new TypeError('First argument is required')\r\n\t\t}\r\n\t\tif (typeof countryOrCountryCallingCode !== 'string') {\r\n\t\t\tthrow new TypeError('First argument must be a string')\r\n\t\t}\r\n\r\n\t\t// In case of public API use: `constructor(number, metadata)`.\r\n\t\t// Transform the arguments from `constructor(number, metadata)` to\r\n\t\t// `constructor(countryOrCountryCallingCode, nationalNumber, metadata)`.\r\n\t\tif (countryOrCountryCallingCode[0] === '+' && !nationalNumber) {\r\n\t\t\tthrow new TypeError('`metadata` argument not passed')\r\n\t\t}\r\n\t\tif (isObject(nationalNumber) && isObject(nationalNumber.countries)) {\r\n\t\t\tmetadata = nationalNumber\r\n\t\t\tconst e164Number = countryOrCountryCallingCode\r\n\t\t\tif (!E164_NUMBER_REGEXP.test(e164Number)) {\r\n\t\t\t\tthrow new Error('Invalid `number` argument passed: must consist of a \"+\" followed by digits')\r\n\t\t\t}\r\n\t\t\tconst { countryCallingCode, number } = extractCountryCallingCode(e164Number, undefined, undefined, undefined, metadata)\r\n\t\t\tnationalNumber = number\r\n\t\t\tcountryOrCountryCallingCode = countryCallingCode\r\n\t\t\tif (!nationalNumber) {\r\n\t\t\t\tthrow new Error('Invalid `number` argument passed: too short')\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// Validate `nationalNumber` argument.\r\n\t\tif (!nationalNumber) {\r\n\t\t\tthrow new TypeError('`nationalNumber` argument is required')\r\n\t\t}\r\n\t\tif (typeof nationalNumber !== 'string') {\r\n\t\t\tthrow new TypeError('`nationalNumber` argument must be a string')\r\n\t\t}\r\n\r\n\t\t// Validate `metadata` argument.\r\n\t\tvalidateMetadata(metadata)\r\n\r\n\t\t// Initialize properties.\r\n\t\tconst { country, countryCallingCode } = getCountryAndCountryCallingCode(\r\n\t\t\tcountryOrCountryCallingCode,\r\n\t\t\tmetadata\r\n\t\t)\r\n\t\tthis.country = country\r\n\t\tthis.countryCallingCode = countryCallingCode\r\n\t\tthis.nationalNumber = nationalNumber\r\n\t\tthis.number = '+' + this.countryCallingCode + this.nationalNumber\r\n\t\t// Exclude `metadata` property output from `PhoneNumber.toString()`\r\n\t\t// so that it doesn't clutter the console output of Node.js.\r\n\t\t// Previously, when Node.js did `console.log(new PhoneNumber(...))`,\r\n\t\t// it would output the whole internal structure of the `metadata` object.\r\n\t\tthis.getMetadata = () => metadata\r\n\t}\r\n\r\n\tsetExt(ext) {\r\n\t\tthis.ext = ext\r\n\t}\r\n\r\n\tgetPossibleCountries() {\r\n\t\tif (this.country) {\r\n\t\t\treturn [this.country]\r\n\t\t}\r\n\t\treturn getPossibleCountriesForNumber(\r\n\t\t\tthis.countryCallingCode,\r\n\t\t\tthis.nationalNumber,\r\n\t\t\tthis.getMetadata()\r\n\t\t)\r\n\t}\r\n\r\n\tisPossible() {\r\n\t\treturn isPossibleNumber(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tisValid() {\r\n\t\treturn isValidNumber(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tisNonGeographic() {\r\n\t\tconst metadata = new Metadata(this.getMetadata())\r\n\t\treturn metadata.isNonGeographicCallingCode(this.countryCallingCode)\r\n\t}\r\n\r\n\tisEqual(phoneNumber) {\r\n\t\treturn this.number === phoneNumber.number && this.ext === phoneNumber.ext\r\n\t}\r\n\r\n\t// This function was originally meant to be an equivalent for `validatePhoneNumberLength()`,\r\n\t// but later it was found out that it doesn't include the possible `TOO_SHORT` result\r\n\t// returned from `parsePhoneNumberWithError()` in the original `validatePhoneNumberLength()`,\r\n\t// so eventually I simply commented out this method from the `PhoneNumber` class\r\n\t// and just left the `validatePhoneNumberLength()` function, even though that one would require\r\n\t// and additional step to also validate the actual country / calling code of the phone number.\r\n\t// validateLength() {\r\n\t// \tconst metadata = new Metadata(this.getMetadata())\r\n\t// \tmetadata.selectNumberingPlan(this.countryCallingCode)\r\n\t// \tconst result = checkNumberLength(this.nationalNumber, metadata)\r\n\t// \tif (result !== 'IS_POSSIBLE') {\r\n\t// \t\treturn result\r\n\t// \t}\r\n\t// }\r\n\r\n\tgetType() {\r\n\t\treturn getNumberType(this, { v2: true }, this.getMetadata())\r\n\t}\r\n\r\n\tformat(format, options) {\r\n\t\treturn formatNumber(\r\n\t\t\tthis,\r\n\t\t\tformat,\r\n\t\t\toptions ? { ...options, v2: true } : { v2: true },\r\n\t\t\tthis.getMetadata()\r\n\t\t)\r\n\t}\r\n\r\n\tformatNational(options) {\r\n\t\treturn this.format('NATIONAL', options)\r\n\t}\r\n\r\n\tformatInternational(options) {\r\n\t\treturn this.format('INTERNATIONAL', options)\r\n\t}\r\n\r\n\tgetURI(options) {\r\n\t\treturn this.format('RFC3966', options)\r\n\t}\r\n}\r\n\r\nconst isCountryCode = (value) => /^[A-Z]{2}$/.test(value)\r\n\r\nfunction getCountryAndCountryCallingCode(countryOrCountryCallingCode, metadataJson) {\r\n\tlet country\r\n\tlet countryCallingCode\r\n\r\n\tconst metadata = new Metadata(metadataJson)\r\n\t// If country code is passed then derive `countryCallingCode` from it.\r\n\t// Also store the country code as `.country`.\r\n\tif (isCountryCode(countryOrCountryCallingCode)) {\r\n\t\tcountry = countryOrCountryCallingCode\r\n\t\tmetadata.selectNumberingPlan(country)\r\n\t\tcountryCallingCode = metadata.countryCallingCode()\r\n\t} else {\r\n\t\tcountryCallingCode = countryOrCountryCallingCode\r\n\t\t/* istanbul ignore if */\r\n\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\tif (metadata.isNonGeographicCallingCode(countryCallingCode)) {\r\n\t\t\t\tcountry = '001'\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode\r\n\t}\r\n}\r\n\r\nconst E164_NUMBER_REGEXP = /^\\+\\d+$/","// https://stackoverflow.com/a/46971044/970769\r\n// \"Breaking changes in Typescript 2.1\"\r\n// \"Extending built-ins like Error, Array, and Map may no longer work.\"\r\n// \"As a recommendation, you can manually adjust the prototype immediately after any super(...) calls.\"\r\n// https://github.com/Microsoft/TypeScript-wiki/blob/main/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\nexport default class ParseError extends Error {\r\n constructor(code) {\r\n super(code)\r\n // Set the prototype explicitly.\r\n // Any subclass of FooError will have to manually set the prototype as well.\r\n Object.setPrototypeOf(this, ParseError.prototype)\r\n this.name = this.constructor.name\r\n }\r\n}","import createExtensionPattern from './createExtensionPattern.js'\r\n\r\n// Regexp of all known extension prefixes used by different regions followed by\r\n// 1 or more valid digits, for use when parsing.\r\nconst EXTN_PATTERN = new RegExp('(?:' + createExtensionPattern() + ')$', 'i')\r\n\r\n// Strips any extension (as in, the part of the number dialled after the call is\r\n// connected, usually indicated with extn, ext, x or similar) from the end of\r\n// the number, and returns it.\r\nexport default function extractExtension(number) {\r\n\tconst start = number.search(EXTN_PATTERN)\r\n\tif (start < 0) {\r\n\t\treturn {}\r\n\t}\r\n\t// If we find a potential extension, and the number preceding this is a viable\r\n\t// number, we assume it is an extension.\r\n\tconst numberWithoutExtension = number.slice(0, start)\r\n\tconst matches = number.match(EXTN_PATTERN)\r\n\tlet i = 1\r\n\twhile (i < matches.length) {\r\n\t\tif (matches[i]) {\r\n\t\t\treturn {\r\n\t\t\t\tnumber: numberWithoutExtension,\r\n\t\t\t\text: matches[i]\r\n\t\t\t}\r\n\t\t}\r\n\t\ti++\r\n\t}\r\n}","// These mappings map a character (key) to a specific digit that should\r\n// replace it for normalization purposes. Non-European digits that\r\n// may be used in phone numbers are mapped to a European equivalent.\r\n//\r\n// E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n//\r\nexport const DIGITS = {\r\n\t'0': '0',\r\n\t'1': '1',\r\n\t'2': '2',\r\n\t'3': '3',\r\n\t'4': '4',\r\n\t'5': '5',\r\n\t'6': '6',\r\n\t'7': '7',\r\n\t'8': '8',\r\n\t'9': '9',\r\n\t'\\uFF10': '0', // Fullwidth digit 0\r\n\t'\\uFF11': '1', // Fullwidth digit 1\r\n\t'\\uFF12': '2', // Fullwidth digit 2\r\n\t'\\uFF13': '3', // Fullwidth digit 3\r\n\t'\\uFF14': '4', // Fullwidth digit 4\r\n\t'\\uFF15': '5', // Fullwidth digit 5\r\n\t'\\uFF16': '6', // Fullwidth digit 6\r\n\t'\\uFF17': '7', // Fullwidth digit 7\r\n\t'\\uFF18': '8', // Fullwidth digit 8\r\n\t'\\uFF19': '9', // Fullwidth digit 9\r\n\t'\\u0660': '0', // Arabic-indic digit 0\r\n\t'\\u0661': '1', // Arabic-indic digit 1\r\n\t'\\u0662': '2', // Arabic-indic digit 2\r\n\t'\\u0663': '3', // Arabic-indic digit 3\r\n\t'\\u0664': '4', // Arabic-indic digit 4\r\n\t'\\u0665': '5', // Arabic-indic digit 5\r\n\t'\\u0666': '6', // Arabic-indic digit 6\r\n\t'\\u0667': '7', // Arabic-indic digit 7\r\n\t'\\u0668': '8', // Arabic-indic digit 8\r\n\t'\\u0669': '9', // Arabic-indic digit 9\r\n\t'\\u06F0': '0', // Eastern-Arabic digit 0\r\n\t'\\u06F1': '1', // Eastern-Arabic digit 1\r\n\t'\\u06F2': '2', // Eastern-Arabic digit 2\r\n\t'\\u06F3': '3', // Eastern-Arabic digit 3\r\n\t'\\u06F4': '4', // Eastern-Arabic digit 4\r\n\t'\\u06F5': '5', // Eastern-Arabic digit 5\r\n\t'\\u06F6': '6', // Eastern-Arabic digit 6\r\n\t'\\u06F7': '7', // Eastern-Arabic digit 7\r\n\t'\\u06F8': '8', // Eastern-Arabic digit 8\r\n\t'\\u06F9': '9' // Eastern-Arabic digit 9\r\n}\r\n\r\nexport function parseDigit(character) {\r\n\treturn DIGITS[character]\r\n}\r\n\r\n/**\r\n * Parses phone number digits from a string.\r\n * Drops all punctuation leaving only digits.\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * parseDigits('8 (800) 555')\r\n * // Outputs '8800555'.\r\n * ```\r\n */\r\nexport default function parseDigits(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tconst digit = parseDigit(character)\r\n\t\tif (digit) {\r\n\t\t\tresult += digit\r\n\t\t}\r\n\t}\r\n\treturn result\r\n}","import { parseDigit } from './helpers/parseDigits.js'\r\n\r\n/**\r\n * Parses phone number characters from a string.\r\n * Drops all punctuation leaving only digits and the leading `+` sign (if any).\r\n * Also converts wide-ascii and arabic-indic numerals to conventional numerals.\r\n * E.g. in Iraq they don't write `+442323234` but rather `+٤٤٢٣٢٣٢٣٤`.\r\n * @param {string} string\r\n * @return {string}\r\n * @example\r\n * ```js\r\n * // Outputs '8800555'.\r\n * parseIncompletePhoneNumber('8 (800) 555')\r\n * // Outputs '+7800555'.\r\n * parseIncompletePhoneNumber('+7 800 555')\r\n * ```\r\n */\r\nexport default function parseIncompletePhoneNumber(string) {\r\n\tlet result = ''\r\n\t// Using `.split('')` here instead of normal `for ... of`\r\n\t// because the importing application doesn't neccessarily include an ES6 polyfill.\r\n\t// The `.split('')` approach discards \"exotic\" UTF-8 characters\r\n\t// (the ones consisting of four bytes) but digits\r\n\t// (including non-European ones) don't fall into that range\r\n\t// so such \"exotic\" characters would be discarded anyway.\r\n\tfor (const character of string.split('')) {\r\n\t\tresult += parsePhoneNumberCharacter(character, result) || ''\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses next character while parsing phone number digits (including a `+`)\r\n * from text: discards everything except `+` and digits, and `+` is only allowed\r\n * at the start of a phone number.\r\n * For example, is used in `react-phone-number-input` where it uses\r\n * [`input-format`](https://gitlab.com/catamphetamine/input-format).\r\n * @param {string} character - Yet another character from raw input string.\r\n * @param {string?} prevParsedCharacters - Previous parsed characters.\r\n * @param {function?} eventListener - An optional \"on event\" function.\r\n * @return {string?} The parsed character.\r\n */\r\nexport function parsePhoneNumberCharacter(character, prevParsedCharacters, eventListener) {\r\n\t// Only allow a leading `+`.\r\n\tif (character === '+') {\r\n\t\t// If this `+` is not the first parsed character\r\n\t\t// then discard it.\r\n\t\tif (prevParsedCharacters) {\r\n\t\t\t// `eventListener` argument was added to this `export`ed function on Dec 26th, 2023.\r\n\t\t\t// Any 3rd-party code that used to `import` and call this function before that\r\n\t\t\t// won't be passing any `eventListener` argument.\r\n\t\t\t//\r\n\t\t\t// The addition of the `eventListener` argument was to fix the slightly-weird behavior\r\n\t\t\t// of parsing an input string when the user inputs something like `\"2+7\"\r\n\t\t\t// https://github.com/catamphetamine/react-phone-number-input/issues/437\r\n\t\t\t//\r\n\t\t\t// If the parser encounters an unexpected `+` in a string being parsed\r\n\t\t\t// then it simply discards that out-of-place `+` and any following characters.\r\n\t\t\t//\r\n\t\t\tif (typeof eventListener === 'function') {\r\n\t\t\t\teventListener('end')\r\n\t\t\t}\r\n\t\t\treturn\r\n\t\t}\r\n\t\treturn '+'\r\n\t}\r\n\t// Allow digits.\r\n\treturn parseDigit(character)\r\n}","// When phone numbers are written in `RFC3966` format — `\"tel:+12133734253\"` —\r\n// they can have their \"calling code\" part written separately in a `phone-context` parameter.\r\n// Example: `\"tel:12133734253;phone-context=+1\"`.\r\n// This function parses the full phone number from the local number and the `phone-context`\r\n// when the `phone-context` contains a `+` sign.\r\n\r\nimport {\r\n VALID_DIGITS,\r\n // PLUS_CHARS\r\n} from '../constants.js'\r\n\r\nexport const PLUS_SIGN = '+'\r\n\r\nconst RFC3966_VISUAL_SEPARATOR_ = '[\\\\-\\\\.\\\\(\\\\)]?'\r\n\r\nconst RFC3966_PHONE_DIGIT_ = '(' + '[' + VALID_DIGITS + ']' + '|' + RFC3966_VISUAL_SEPARATOR_ + ')'\r\n\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_ =\r\n\t'^' +\r\n\t'\\\\' +\r\n\tPLUS_SIGN +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'[' + VALID_DIGITS + ']' +\r\n\tRFC3966_PHONE_DIGIT_ +\r\n\t'*' +\r\n\t'$'\r\n\r\n/**\r\n * Regular expression of valid global-number-digits for the phone-context\r\n * parameter, following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_ = new RegExp(RFC3966_GLOBAL_NUMBER_DIGITS_, 'g')\r\n\r\n// In this port of Google's library, we don't accept alpha characters in phone numbers.\r\n// const ALPHANUM_ = VALID_ALPHA_ + VALID_DIGITS\r\nconst ALPHANUM_ = VALID_DIGITS\r\n\r\nconst RFC3966_DOMAINLABEL_ = '[' + ALPHANUM_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst VALID_ALPHA_ = 'a-zA-Z'\r\nconst RFC3966_TOPLABEL_ = '[' + VALID_ALPHA_ + ']+((\\\\-)*[' + ALPHANUM_ + '])*'\r\n\r\nconst RFC3966_DOMAINNAME_ = '^(' + RFC3966_DOMAINLABEL_ + '\\\\.)*' + RFC3966_TOPLABEL_ + '\\\\.?$'\r\n\r\n/**\r\n * Regular expression of valid domainname for the phone-context parameter,\r\n * following the syntax defined in RFC3966.\r\n */\r\nconst RFC3966_DOMAINNAME_PATTERN_ = new RegExp(RFC3966_DOMAINNAME_, 'g')\r\n\r\nexport const RFC3966_PREFIX_ = 'tel:'\r\nexport const RFC3966_PHONE_CONTEXT_ = ';phone-context='\r\nexport const RFC3966_ISDN_SUBADDRESS_ = ';isub='\r\n\r\n/**\r\n * Extracts the value of the phone-context parameter of `numberToExtractFrom`,\r\n * following the syntax defined in RFC3966.\r\n *\r\n * @param {string} numberToExtractFrom\r\n * @return {string|null} the extracted string (possibly empty), or `null` if no phone-context parameter is found.\r\n */\r\nexport default function extractPhoneContext(numberToExtractFrom) {\r\n\tconst indexOfPhoneContext = numberToExtractFrom.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t// If no phone-context parameter is present\r\n\tif (indexOfPhoneContext < 0) {\r\n\t\treturn null\r\n\t}\r\n\r\n\tconst phoneContextStart = indexOfPhoneContext + RFC3966_PHONE_CONTEXT_.length\r\n\t// If phone-context parameter is empty\r\n\tif (phoneContextStart >= numberToExtractFrom.length) {\r\n\t\treturn ''\r\n\t}\r\n\r\n\tconst phoneContextEnd = numberToExtractFrom.indexOf(';', phoneContextStart)\r\n\t// If phone-context is not the last parameter\r\n\tif (phoneContextEnd >= 0) {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart, phoneContextEnd)\r\n\t} else {\r\n\t\treturn numberToExtractFrom.substring(phoneContextStart)\r\n\t}\r\n}\r\n\r\n/**\r\n * Returns whether the value of phoneContext follows the syntax defined in RFC3966.\r\n *\r\n * @param {string|null} phoneContext\r\n * @return {boolean}\r\n */\r\nexport function isPhoneContextValid(phoneContext) {\r\n\tif (phoneContext === null) {\r\n\t\treturn true\r\n\t}\r\n\r\n\tif (phoneContext.length === 0) {\r\n\t\treturn false\r\n\t}\r\n\r\n\t// Does phone-context value match pattern of global-number-digits or domainname.\r\n\treturn RFC3966_GLOBAL_NUMBER_DIGITS_PATTERN_.test(phoneContext) ||\r\n\t\tRFC3966_DOMAINNAME_PATTERN_.test(phoneContext)\r\n}","import extractPhoneContext, {\r\n\tisPhoneContextValid,\r\n\tPLUS_SIGN,\r\n\tRFC3966_PREFIX_,\r\n\tRFC3966_PHONE_CONTEXT_,\r\n\tRFC3966_ISDN_SUBADDRESS_\r\n} from './extractPhoneContext.js'\r\n\r\nimport ParseError from '../ParseError.js'\r\n\r\n/**\r\n * @param {string} numberToParse\r\n * @param {string} nationalNumber\r\n * @return {}\r\n */\r\nexport default function extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(numberToParse, {\r\n\textractFormattedPhoneNumber\r\n}) {\r\n\tconst phoneContext = extractPhoneContext(numberToParse)\r\n\tif (!isPhoneContextValid(phoneContext)) {\r\n\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t}\r\n\r\n\tlet phoneNumberString\r\n\r\n\tif (phoneContext === null) {\r\n\t\t// Extract a possible number from the string passed in.\r\n\t\t// (this strips leading characters that could not be the start of a phone number)\r\n\t\tphoneNumberString = extractFormattedPhoneNumber(numberToParse) || ''\r\n\t} else {\r\n\t\tphoneNumberString = ''\r\n\r\n\t\t// If the phone context contains a phone number prefix, we need to capture\r\n\t\t// it, whereas domains will be ignored.\r\n\t\tif (phoneContext.charAt(0) === PLUS_SIGN) {\r\n\t\t\tphoneNumberString += phoneContext\r\n\t\t}\r\n\r\n\t\t// Now append everything between the \"tel:\" prefix and the phone-context.\r\n\t\t// This should include the national number, an optional extension or\r\n\t\t// isdn-subaddress component. Note we also handle the case when \"tel:\" is\r\n\t\t// missing, as we have seen in some of the phone number inputs.\r\n\t\t// In that case, we append everything from the beginning.\r\n\t\tconst indexOfRfc3966Prefix = numberToParse.indexOf(RFC3966_PREFIX_)\r\n\t\tlet indexOfNationalNumber\r\n\t\t// RFC 3966 \"tel:\" prefix is preset at this stage because\r\n\t\t// `isPhoneContextValid()` requires it to be present.\r\n\t\t/* istanbul ignore else */\r\n\t\tif (indexOfRfc3966Prefix >= 0) {\r\n\t\t\tindexOfNationalNumber = indexOfRfc3966Prefix + RFC3966_PREFIX_.length\r\n\t\t} else {\r\n\t\t\tindexOfNationalNumber = 0\r\n\t\t}\r\n\t\tconst indexOfPhoneContext = numberToParse.indexOf(RFC3966_PHONE_CONTEXT_)\r\n\t\tphoneNumberString += numberToParse.substring(indexOfNationalNumber, indexOfPhoneContext)\r\n\t}\r\n\r\n\t// Delete the isdn-subaddress and everything after it if it is present.\r\n\t// Note extension won't appear at the same time with isdn-subaddress\r\n\t// according to paragraph 5.3 of the RFC3966 spec.\r\n\tconst indexOfIsdn = phoneNumberString.indexOf(RFC3966_ISDN_SUBADDRESS_)\r\n\tif (indexOfIsdn > 0) {\r\n\t\tphoneNumberString = phoneNumberString.substring(0, indexOfIsdn)\r\n\t}\r\n\t// If both phone context and isdn-subaddress are absent but other\r\n\t// parameters are present, the parameters are left in nationalNumber.\r\n\t// This is because we are concerned about deleting content from a potential\r\n\t// number string when there is no strong evidence that the number is\r\n\t// actually written in RFC3966.\r\n\r\n\tif (phoneNumberString !== '') {\r\n\t\treturn phoneNumberString\r\n\t}\r\n}","// This is a port of Google Android `libphonenumber`'s\r\n// `phonenumberutil.js` of December 31th, 2018.\r\n//\r\n// https://github.com/googlei18n/libphonenumber/commits/master/javascript/i18n/phonenumbers/phonenumberutil.js\r\n\r\nimport {\r\n\tVALID_DIGITS,\r\n\tPLUS_CHARS,\r\n\tMIN_LENGTH_FOR_NSN,\r\n\tMAX_LENGTH_FOR_NSN\r\n} from './constants.js'\r\n\r\nimport ParseError from './ParseError.js'\r\nimport Metadata from './metadata.js'\r\nimport isViablePhoneNumber, { isViablePhoneNumberStart } from './helpers/isViablePhoneNumber.js'\r\nimport extractExtension from './helpers/extension/extractExtension.js'\r\nimport parseIncompletePhoneNumber from './parseIncompletePhoneNumber.js'\r\nimport getCountryCallingCode from './getCountryCallingCode.js'\r\nimport { isPossibleNumber } from './isPossible.js'\r\n// import { parseRFC3966 } from './helpers/RFC3966.js'\r\nimport PhoneNumber from './PhoneNumber.js'\r\nimport matchesEntirely from './helpers/matchesEntirely.js'\r\nimport extractCountryCallingCode from './helpers/extractCountryCallingCode.js'\r\nimport extractNationalNumber from './helpers/extractNationalNumber.js'\r\n// import stripIddPrefix from './helpers/stripIddPrefix.js'\r\nimport getCountryByCallingCode from './helpers/getCountryByCallingCode.js'\r\nimport extractFormattedPhoneNumberFromPossibleRfc3966NumberUri from './helpers/extractFormattedPhoneNumberFromPossibleRfc3966NumberUri.js'\r\n\r\n// We don't allow input strings for parsing to be longer than 250 chars.\r\n// This prevents malicious input from consuming CPU.\r\nconst MAX_INPUT_STRING_LENGTH = 250\r\n\r\n// This consists of the plus symbol, digits, and arabic-indic digits.\r\nconst PHONE_NUMBER_START_PATTERN = new RegExp('[' + PLUS_CHARS + VALID_DIGITS + ']')\r\n\r\n// Regular expression of trailing characters that we want to remove.\r\n// A trailing `#` is sometimes used when writing phone numbers with extensions in US.\r\n// Example: \"+1 (645) 123 1234-910#\" number has extension \"910\".\r\nconst AFTER_PHONE_NUMBER_END_PATTERN = new RegExp('[^' + VALID_DIGITS + '#' + ']+$')\r\n\r\nconst USE_NON_GEOGRAPHIC_COUNTRY_CODE = false\r\n\r\n// Examples:\r\n//\r\n// ```js\r\n// parse('8 (800) 555-35-35', 'RU')\r\n// parse('8 (800) 555-35-35', 'RU', metadata)\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } })\r\n// parse('8 (800) 555-35-35', { country: { default: 'RU' } }, metadata)\r\n// parse('+7 800 555 35 35')\r\n// parse('+7 800 555 35 35', metadata)\r\n// ```\r\n//\r\n\r\n/**\r\n * Parses a phone number.\r\n *\r\n * parse('123456789', { defaultCountry: 'RU', v2: true }, metadata)\r\n * parse('123456789', { defaultCountry: 'RU' }, metadata)\r\n * parse('123456789', undefined, metadata)\r\n *\r\n * @param {string} input\r\n * @param {object} [options]\r\n * @param {object} metadata\r\n * @return {object|PhoneNumber?} If `options.v2: true` flag is passed, it returns a `PhoneNumber?` instance. Otherwise, returns an object of shape `{ phone: '...', country: '...' }` (or just `{}` if no phone number was parsed).\r\n */\r\nexport default function parse(text, options, metadata) {\r\n\t// If assigning the `{}` default value is moved to the arguments above,\r\n\t// code coverage would decrease for some weird reason.\r\n\toptions = options || {}\r\n\r\n\tmetadata = new Metadata(metadata)\r\n\r\n\t// Validate `defaultCountry`.\r\n\tif (options.defaultCountry && !metadata.hasCountry(options.defaultCountry)) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\tthrow new Error(`Unknown country: ${options.defaultCountry}`)\r\n\t}\r\n\r\n\t// Parse the phone number.\r\n\tconst { number: formattedPhoneNumber, ext, error } = parseInput(text, options.v2, options.extract)\r\n\r\n\t// If the phone number is not viable then return nothing.\r\n\tif (!formattedPhoneNumber) {\r\n\t\tif (options.v2) {\r\n\t\t\tif (error === 'TOO_SHORT') {\r\n\t\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t\t}\r\n\t\t\tthrow new ParseError('NOT_A_NUMBER')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\tconst {\r\n\t\tcountry,\r\n\t\tnationalNumber,\r\n\t\tcountryCallingCode,\r\n\t\tcountryCallingCodeSource,\r\n\t\tcarrierCode\r\n\t} = parsePhoneNumber(\r\n\t\tformattedPhoneNumber,\r\n\t\toptions.defaultCountry,\r\n\t\toptions.defaultCallingCode,\r\n\t\tmetadata\r\n\t)\r\n\r\n\tif (!metadata.hasSelectedNumberingPlan()) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('INVALID_COUNTRY')\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\tif (!nationalNumber || nationalNumber.length < MIN_LENGTH_FOR_NSN) {\r\n\t\t// Won't throw here because the regexp already demands length > 1.\r\n\t\t/* istanbul ignore if */\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_SHORT')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\t// Validate national (significant) number length.\r\n\t//\r\n\t// A sidenote:\r\n\t//\r\n\t// They say that sometimes national (significant) numbers\r\n\t// can be longer than `MAX_LENGTH_FOR_NSN` (e.g. in Germany).\r\n\t// https://github.com/googlei18n/libphonenumber/blob/7e1748645552da39c4e1ba731e47969d97bdb539/resources/phonenumber.proto#L36\r\n\t// Such numbers will just be discarded.\r\n\t//\r\n\tif (nationalNumber.length > MAX_LENGTH_FOR_NSN) {\r\n\t\tif (options.v2) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\t// Google's demo just throws an error in this case.\r\n\t\treturn {}\r\n\t}\r\n\r\n\tif (options.v2) {\r\n\t\tconst phoneNumber = new PhoneNumber(\r\n\t\t\tcountryCallingCode,\r\n\t\t\tnationalNumber,\r\n\t\t\tmetadata.metadata\r\n\t\t)\r\n\t\tif (country) {\r\n\t\t\tphoneNumber.country = country\r\n\t\t}\r\n\t\tif (carrierCode) {\r\n\t\t\tphoneNumber.carrierCode = carrierCode\r\n\t\t}\r\n\t\tif (ext) {\r\n\t\t\tphoneNumber.ext = ext\r\n\t\t}\r\n\t\tphoneNumber.__countryCallingCodeSource = countryCallingCodeSource\r\n\t\treturn phoneNumber\r\n\t}\r\n\r\n\t// Check if national phone number pattern matches the number.\r\n\t// National number pattern is different for each country,\r\n\t// even for those ones which are part of the \"NANPA\" group.\r\n\tconst valid = (options.extended ? metadata.hasSelectedNumberingPlan() : country) ?\r\n\t\tmatchesEntirely(nationalNumber, metadata.nationalNumberPattern()) :\r\n\t\tfalse\r\n\r\n\tif (!options.extended) {\r\n\t\treturn valid ? result(country, nationalNumber, ext) : {}\r\n\t}\r\n\r\n\t// isInternational: countryCallingCode !== undefined\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcarrierCode,\r\n\t\tvalid,\r\n\t\tpossible: valid ? true : (\r\n\t\t\toptions.extended === true &&\r\n\t\t\tmetadata.possibleLengths() &&\r\n\t\t\tisPossibleNumber(nationalNumber, country, metadata) ? true : false\r\n\t\t),\r\n\t\tphone: nationalNumber,\r\n\t\text\r\n\t}\r\n}\r\n\r\n/**\r\n * Extracts a formatted phone number from text.\r\n * Doesn't guarantee that the extracted phone number\r\n * is a valid phone number (for example, doesn't validate its length).\r\n * @param {string} text\r\n * @param {boolean} [extract] — If `false`, then will parse the entire `text` as a phone number.\r\n * @param {boolean} [throwOnError] — By default, it won't throw if the text is too long.\r\n * @return {string}\r\n * @example\r\n * // Returns \"(213) 373-4253\".\r\n * extractFormattedPhoneNumber(\"Call (213) 373-4253 for assistance.\")\r\n */\r\nfunction extractFormattedPhoneNumber(text, extract, throwOnError) {\r\n\tif (!text) {\r\n\t\treturn\r\n\t}\r\n\tif (text.length > MAX_INPUT_STRING_LENGTH) {\r\n\t\tif (throwOnError) {\r\n\t\t\tthrow new ParseError('TOO_LONG')\r\n\t\t}\r\n\t\treturn\r\n\t}\r\n\tif (extract === false) {\r\n\t\treturn text\r\n\t}\r\n\t// Attempt to extract a possible number from the string passed in\r\n\tconst startsAt = text.search(PHONE_NUMBER_START_PATTERN)\r\n\tif (startsAt < 0) {\r\n\t\treturn\r\n\t}\r\n\treturn text\r\n\t\t// Trim everything to the left of the phone number\r\n\t\t.slice(startsAt)\r\n\t\t// Remove trailing non-numerical characters\r\n\t\t.replace(AFTER_PHONE_NUMBER_END_PATTERN, '')\r\n}\r\n\r\n/**\r\n * @param {string} text - Input.\r\n * @param {boolean} v2 - Legacy API functions don't pass `v2: true` flag.\r\n * @param {boolean} [extract] - Whether to extract a phone number from `text`, or attempt to parse the entire text as a phone number.\r\n * @return {object} `{ ?number, ?ext }`.\r\n */\r\nfunction parseInput(text, v2, extract) {\r\n\t// // Parse RFC 3966 phone number URI.\r\n\t// if (text && text.indexOf('tel:') === 0) {\r\n\t// \treturn parseRFC3966(text)\r\n\t// }\r\n\t// let number = extractFormattedPhoneNumber(text, extract, v2)\r\n\tlet number = extractFormattedPhoneNumberFromPossibleRfc3966NumberUri(text, {\r\n\t\textractFormattedPhoneNumber: (text) => extractFormattedPhoneNumber(text, extract, v2)\r\n\t})\r\n\t// If the phone number is not viable, then abort.\r\n\tif (!number) {\r\n\t\treturn {}\r\n\t}\r\n\tif (!isViablePhoneNumber(number)) {\r\n\t\tif (isViablePhoneNumberStart(number)) {\r\n\t\t\treturn { error: 'TOO_SHORT' }\r\n\t\t}\r\n\t\treturn {}\r\n\t}\r\n\t// Attempt to parse extension first, since it doesn't require region-specific\r\n\t// data and we want to have the non-normalised number here.\r\n\tconst withExtensionStripped = extractExtension(number)\r\n\tif (withExtensionStripped.ext) {\r\n\t\treturn withExtensionStripped\r\n\t}\r\n\treturn { number }\r\n}\r\n\r\n/**\r\n * Creates `parse()` result object.\r\n */\r\nfunction result(country, nationalNumber, ext) {\r\n\tconst result = {\r\n\t\tcountry,\r\n\t\tphone: nationalNumber\r\n\t}\r\n\tif (ext) {\r\n\t\tresult.ext = ext\r\n\t}\r\n\treturn result\r\n}\r\n\r\n/**\r\n * Parses a viable phone number.\r\n * @param {string} formattedPhoneNumber — Example: \"(213) 373-4253\".\r\n * @param {string} [defaultCountry]\r\n * @param {string} [defaultCallingCode]\r\n * @param {Metadata} metadata\r\n * @return {object} Returns `{ country: string?, countryCallingCode: string?, nationalNumber: string? }`.\r\n */\r\nfunction parsePhoneNumber(\r\n\tformattedPhoneNumber,\r\n\tdefaultCountry,\r\n\tdefaultCallingCode,\r\n\tmetadata\r\n) {\r\n\t// Extract calling code from phone number.\r\n\tlet { countryCallingCodeSource, countryCallingCode, number } = extractCountryCallingCode(\r\n\t\tparseIncompletePhoneNumber(formattedPhoneNumber),\r\n\t\tundefined,\r\n\t\tdefaultCountry,\r\n\t\tdefaultCallingCode,\r\n\t\tmetadata.metadata\r\n\t)\r\n\r\n\t// The exact country of the phone number\r\n\tlet country\r\n\r\n\t// If `formattedPhoneNumber` is passed in \"international\" format,\r\n\t// choose a country by `countryCallingCode`.\r\n\tif (countryCallingCode) {\r\n\t\tmetadata.selectNumberingPlan(countryCallingCode)\r\n\t}\r\n\t// Else, if `formattedPhoneNumber` is passed in \"national\" format,\r\n\t// then `number` is defined and `countryCallingCode` is `undefined`.\r\n\telse if (number && (defaultCountry || defaultCallingCode)) {\r\n\t\tmetadata.selectNumberingPlan(defaultCountry, defaultCallingCode)\r\n\t\tif (defaultCountry) {\r\n\t\t\tcountry = defaultCountry\r\n\t\t} else {\r\n\t\t\t/* istanbul ignore if */\r\n\t\t\tif (USE_NON_GEOGRAPHIC_COUNTRY_CODE) {\r\n\t\t\t\tif (metadata.isNonGeographicCallingCode(defaultCallingCode)) {\r\n\t\t\t\t\tcountry = '001'\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tcountryCallingCode = defaultCallingCode || getCountryCallingCode(defaultCountry, metadata.metadata)\r\n\t}\r\n\telse return {}\r\n\r\n\tif (!number) {\r\n\t\treturn {\r\n\t\t\tcountryCallingCodeSource,\r\n\t\t\tcountryCallingCode\r\n\t\t}\r\n\t}\r\n\r\n\tconst {\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t} = extractNationalNumber(\r\n\t\tparseIncompletePhoneNumber(number),\r\n\t\tcountry,\r\n\t\tmetadata\r\n\t)\r\n\r\n\t// Sometimes there are several countries\r\n\t// corresponding to the same country phone code\r\n\t// (e.g. NANPA countries all having `1` country phone code).\r\n\t// Therefore, to reliably determine the exact country,\r\n\t// national (significant) number should have been parsed first.\r\n\t//\r\n\t// When `metadata.json` is generated, all \"ambiguous\" country phone codes\r\n\t// get their countries populated with the full set of\r\n\t// \"phone number type\" regular expressions.\r\n\t//\r\n\tconst exactCountry = getCountryByCallingCode(countryCallingCode, {\r\n\t\tnationalNumber,\r\n\t\tmetadata\r\n\t})\r\n\tif (exactCountry) {\r\n\t\tcountry = exactCountry\r\n\t\t/* istanbul ignore if */\r\n\t\tif (exactCountry === '001') {\r\n\t\t\t// Can't happen with `USE_NON_GEOGRAPHIC_COUNTRY_CODE` being `false`.\r\n\t\t\t// If `USE_NON_GEOGRAPHIC_COUNTRY_CODE` is set to `true` for some reason,\r\n\t\t\t// then remove the \"istanbul ignore if\".\r\n\t\t} else {\r\n\t\t\tmetadata.selectNumberingPlan(country)\r\n\t\t}\r\n\t}\r\n\r\n\treturn {\r\n\t\tcountry,\r\n\t\tcountryCallingCode,\r\n\t\tcountryCallingCodeSource,\r\n\t\tnationalNumber,\r\n\t\tcarrierCode\r\n\t}\r\n}","import parse from './parse.js'\r\n\r\nexport default function parsePhoneNumberWithError(text, options, metadata) {\r\n\treturn parse(text, { ...options, v2: true }, metadata)\r\n}","import isObject from './helpers/isObject.js'\r\n\r\n// Extracts the following properties from function arguments:\r\n// * input `text`\r\n// * `options` object\r\n// * `metadata` JSON\r\nexport default function normalizeArguments(args) {\r\n\tconst [arg_1, arg_2, arg_3, arg_4] = Array.prototype.slice.call(args)\r\n\r\n\tlet text\r\n\tlet options\r\n\tlet metadata\r\n\r\n\t// If the phone number is passed as a string.\r\n\t// `parsePhoneNumber('88005553535', ...)`.\r\n\tif (typeof arg_1 === 'string') {\r\n\t\ttext = arg_1\r\n\t}\r\n\telse throw new TypeError('A text for parsing must be a string.')\r\n\r\n\t// If \"default country\" argument is being passed then move it to `options`.\r\n\t// `parsePhoneNumber('88005553535', 'RU', [options], metadata)`.\r\n\tif (!arg_2 || typeof arg_2 === 'string')\r\n\t{\r\n\t\tif (arg_4) {\r\n\t\t\toptions = arg_3\r\n\t\t\tmetadata = arg_4\r\n\t\t} else {\r\n\t\t\toptions = undefined\r\n\t\t\tmetadata = arg_3\r\n\t\t}\r\n\r\n\t\tif (arg_2) {\r\n\t\t\toptions = { defaultCountry: arg_2, ...options }\r\n\t\t}\r\n\t}\r\n\t// `defaultCountry` is not passed.\r\n\t// Example: `parsePhoneNumber('+78005553535', [options], metadata)`.\r\n\telse if (isObject(arg_2))\r\n\t{\r\n\t\tif (arg_3) {\r\n\t\t\toptions = arg_2\r\n\t\t\tmetadata = arg_3\r\n\t\t} else {\r\n\t\t\tmetadata = arg_2\r\n\t\t}\r\n\t}\r\n\telse throw new Error(`Invalid second argument: ${arg_2}`)\r\n\r\n\treturn {\r\n\t\ttext,\r\n\t\toptions,\r\n\t\tmetadata\r\n\t}\r\n}","import parsePhoneNumberWithError from './parsePhoneNumberWithError_.js'\r\nimport ParseError from './ParseError.js'\r\nimport { isSupportedCountry } from './metadata.js'\r\n\r\nexport default function parsePhoneNumber(text, options, metadata) {\r\n\t// Validate `defaultCountry`.\r\n\tif (options && options.defaultCountry && !isSupportedCountry(options.defaultCountry, metadata)) {\r\n\t\toptions = {\r\n\t\t\t...options,\r\n\t\t\tdefaultCountry: undefined\r\n\t\t}\r\n\t}\r\n\t// Parse phone number.\r\n\ttry {\r\n\t\treturn parsePhoneNumberWithError(text, options, metadata)\r\n\t} catch (error) {\r\n\t\t/* istanbul ignore else */\r\n\t\tif (error instanceof ParseError) {\r\n\t\t\t//\r\n\t\t} else {\r\n\t\t\tthrow error\r\n\t\t}\r\n\t}\r\n}\r\n","import normalizeArguments from './normalizeArguments.js'\r\nimport parsePhoneNumber_ from './parsePhoneNumber_.js'\r\n\r\nexport default function parsePhoneNumber() {\r\n\tconst { text, options, metadata } = normalizeArguments(arguments)\r\n\treturn parsePhoneNumber_(text, options, metadata)\r\n}\r\n","import withMetadataArgument from './withMetadataArgument.js'\r\nimport { default as _parsePhoneNumber } from '../../core/index.js'\r\n\r\nexport function parsePhoneNumber() {\r\n\treturn withMetadataArgument(_parsePhoneNumber, arguments)\r\n}","// Utility function to read a specific cookie value\nexport function getCookieValue(name: string): string | undefined {\n if (typeof document === 'undefined') return undefined;\n\n const cookies = document.cookie.split(';');\n for (const cookie of cookies) {\n const trimmedCookie = cookie.trim();\n const eqIndex = trimmedCookie.indexOf('=');\n if (eqIndex === -1) continue;\n\n const cookieName = trimmedCookie.substring(0, eqIndex);\n const cookieValue = trimmedCookie.substring(eqIndex + 1);\n\n if (cookieName === name) {\n return cookieValue;\n }\n }\n\n return undefined;\n}\n\n/**\n * Structured validation error returned by the backend's workflow-expression\n * validator (CEL / Jinja schema checks). See WorkflowValidationErrorResponse\n * in workflowValidationTypes.ts for the public-facing shape.\n */\nexport interface ApiValidationError {\n field: string;\n kind: 'cel_syntax' | 'cel_schema' | 'jinja_syntax' | 'jinja_schema';\n message: string;\n offendingPath: string | null;\n location: {\n start: number;\n end: number;\n line: number;\n column: number;\n length: number;\n } | null;\n suggestion: string | null;\n}\n\nfunction isApiValidationError(value: unknown): value is ApiValidationError {\n if (!value || typeof value !== 'object') return false;\n const v = value as Record<string, unknown>;\n return (\n typeof v.field === 'string' && typeof v.kind === 'string' && typeof v.message === 'string'\n );\n}\n\nexport class ApiError extends Error {\n statusCode: number;\n /** Legacy string-array errors — kept for non-validation callers. */\n errors?: string[];\n /**\n * Structured workflow-expression validation errors (CEL/Jinja).\n * Populated when the backend returns a WorkflowValidationErrorResponse.\n */\n validationErrors?: ApiValidationError[];\n\n constructor(\n message: string,\n statusCode: number,\n errors?: string[],\n validationErrors?: ApiValidationError[]\n ) {\n super(message);\n this.statusCode = statusCode;\n this.errors = errors;\n this.validationErrors = validationErrors;\n }\n}\n\n/**\n * Handler for enhanced authentication requirement (RFC 9470 Step-Up Authentication).\n * Called when a 401 response includes WWW-Authenticate header with\n * error=\"insufficient_user_authentication\".\n * Should return a promise that resolves with the new auth token after re-auth.\n */\nexport type EnhancedAuthHandler = () => Promise<string>;\n\n/**\n * Info parsed from WWW-Authenticate header for org auth requirement.\n */\nexport interface OrgAuthInfo {\n orgUuid: string;\n cookieName: string;\n authUrl: string;\n}\n\n/**\n * Handler for organization authentication requirement.\n * Called when a 401 response includes WWW-Authenticate header with realm=\"org\".\n * The handler should redirect the user to the auth URL for consent/SSO.\n * Returns a promise that resolves when the user should retry (after page reload with cookie).\n */\nexport type OrgAuthHandler = (info: OrgAuthInfo) => Promise<void>;\n\n/**\n * Check if a WWW-Authenticate header indicates step-up authentication is required.\n * Per RFC 9470, this is indicated by error=\"insufficient_user_authentication\".\n */\nfunction requiresStepUpAuth(wwwAuthenticate: string | null): boolean {\n if (!wwwAuthenticate) return false;\n return wwwAuthenticate.includes('error=\"insufficient_user_authentication\"');\n}\n\n/**\n * Parse org auth info from WWW-Authenticate header.\n * Returns null if this is not an org auth challenge.\n * Expected format: Bearer realm=\"org\", org_uuid=\"...\", cookie_name=\"...\", auth_url=\"...\"\n */\nfunction parseOrgAuthChallenge(wwwAuthenticate: string | null): OrgAuthInfo | null {\n if (!wwwAuthenticate) return null;\n if (!wwwAuthenticate.includes('realm=\"org\"')) return null;\n\n // Parse the key-value pairs from the header\n const orgUuidMatch = wwwAuthenticate.match(/org_uuid=\"([^\"]+)\"/);\n const cookieNameMatch = wwwAuthenticate.match(/cookie_name=\"([^\"]+)\"/);\n const authUrlMatch = wwwAuthenticate.match(/auth_url=\"([^\"]+)\"/);\n\n if (!orgUuidMatch?.[1] || !cookieNameMatch?.[1] || !authUrlMatch?.[1]) {\n // Don't log the raw header value — it embeds org_uuid + auth_url.\n console.warn('Invalid org auth challenge header: missing required fields');\n return null;\n }\n\n return {\n orgUuid: orgUuidMatch[1],\n cookieName: cookieNameMatch[1],\n authUrl: authUrlMatch[1],\n };\n}\n\nexport class BaseApiClient {\n protected baseUrl: string;\n protected apiKey: string | undefined;\n protected isCrossDomain: boolean;\n protected fetchFunction: typeof fetch;\n private enhancedAuthHandler?: EnhancedAuthHandler;\n private enhancedAuthInProgress: Promise<string> | null = null;\n private orgAuthHandler?: OrgAuthHandler;\n private orgAuthInProgress: Promise<void> | null = null;\n private actingMemberUuid?: string;\n private orgToken?: string;\n /**\n * The org_uuid that issued the current orgToken. Tracked so we can detect\n * a 401 challenge from a *different* org and re-fire the handler — the\n * orgToken is an opaque JWE we cannot decrypt client-side, so without this\n * the original guard `!this.orgToken` would prevent re-auth across orgs and\n * surface as a silent 401 in multi-org CLI workflows.\n */\n private orgTokenOrgUuid?: string;\n\n constructor(apiKey: string | undefined, baseUrl: string, customFetch?: typeof fetch) {\n this.baseUrl = baseUrl;\n this.apiKey = apiKey;\n // console.log('[BaseApiClient] constructor - baseUrl:', baseUrl);\n // Bind fetch to its proper context (window in browser, global in Node)\n this.fetchFunction =\n customFetch || (typeof window !== 'undefined' ? fetch.bind(window) : fetch);\n\n // Determine if we're making cross-domain requests by comparing current origin to API origin\n const apiUrlParsed = new URL(baseUrl);\n const currentOrigin = typeof window !== 'undefined' ? window.location.origin : '';\n this.isCrossDomain = currentOrigin !== '' && currentOrigin !== apiUrlParsed.origin;\n // console.log('[BaseApiClient] isCrossDomain:', this.isCrossDomain, 'currentOrigin:', currentOrigin, 'apiOrigin:', apiUrlParsed.origin);\n }\n\n /**\n * Set the handler for enhanced authentication requirements (RFC 9470 Step-Up Auth).\n * This handler is called when a 401 response includes WWW-Authenticate header\n * with error=\"insufficient_user_authentication\".\n */\n setEnhancedAuthHandler(handler: EnhancedAuthHandler | undefined) {\n this.enhancedAuthHandler = handler;\n }\n\n /**\n * Set the handler for organization authentication requirements.\n * This handler is called when a 401 response includes WWW-Authenticate header\n * with realm=\"org\". The handler should redirect the user to complete org auth.\n */\n setOrgAuthHandler(handler: OrgAuthHandler | undefined) {\n this.orgAuthHandler = handler;\n }\n\n /**\n * Update the API key (used after successful re-authentication).\n */\n updateApiKey(newApiKey: string) {\n this.apiKey = newApiKey;\n }\n\n /**\n * Set the acting member UUID for member identity switching.\n * When set, all API requests will include the X-Acting-Member header.\n * The backend will validate that the authenticated account owns this member\n * and use it as the effective identity for the request.\n */\n setActingMember(memberUuid: string | undefined) {\n this.actingMemberUuid = memberUuid;\n }\n\n /**\n * Get the current acting member UUID.\n */\n getActingMember(): string | undefined {\n return this.actingMemberUuid;\n }\n\n /**\n * Set the org token for cross-domain requests.\n * When set, all API requests will include the X-Org-Token header,\n * allowing org-level SSO verification without cookies.\n *\n * `orgUuid` is the org that issued the token; passing it lets the 401\n * handler detect a stale token when a subsequent request targets a\n * different org and re-fire the org-auth handler instead of silently\n * 401-ing. Callers without that context (legacy / unknown) may omit it.\n */\n setOrgToken(token: string | undefined, orgUuid?: string) {\n this.orgToken = token;\n this.orgTokenOrgUuid = token ? orgUuid : undefined;\n }\n\n protected async fetch<T>(endpoint: string, options?: RequestInit): Promise<T> {\n try {\n const headers = new Headers({\n // Don't set Content-Type for FormData — the browser must set it\n // with the multipart boundary automatically.\n ...(options?.body instanceof FormData ? {} : { 'Content-Type': 'application/json' }),\n ...((options?.headers as Record<string, string>) || {}),\n });\n\n if (this.apiKey) {\n headers.set('Authorization', `Bearer ${this.apiKey}`);\n } else if (this.isCrossDomain) {\n // For cross-domain requests, try to use the requestToken cookie\n const requestToken = getCookieValue('requestToken');\n if (requestToken) {\n headers.set('Authorization', `Bearer ${requestToken}`);\n }\n }\n\n // Include X-Acting-Member header for member identity switching\n if (this.actingMemberUuid) {\n headers.set('X-Acting-Member', this.actingMemberUuid);\n }\n\n // Include X-Org-Token header for cross-domain org auth\n if (this.orgToken) {\n headers.set('X-Org-Token', this.orgToken);\n }\n\n // console.warn(\"Calling with apiKey:\", this.apiKey)\n const fullUrl = `${this.baseUrl}/api/v2/${endpoint}`;\n // console.log('[BaseApiClient] fetch - URL:', fullUrl, 'baseUrl:', this.baseUrl, 'endpoint:', endpoint);\n\n const response = await this.fetchFunction(fullUrl, {\n ...options,\n ...(this.apiKey ? {} : { credentials: 'include' }),\n ...(this.isCrossDomain ? { mode: 'cors' } : {}),\n headers,\n });\n\n if (!response.ok) {\n // Check for step-up auth requirement per RFC 9470 (superuser 2FA re-auth needed)\n if (\n response.status === 401 &&\n requiresStepUpAuth(response.headers.get('WWW-Authenticate')) &&\n this.enhancedAuthHandler\n ) {\n // If re-auth is already in progress, wait for it\n if (this.enhancedAuthInProgress) {\n await this.enhancedAuthInProgress;\n } else {\n // Trigger re-auth and wait for completion\n this.enhancedAuthInProgress = this.enhancedAuthHandler();\n try {\n const newToken = await this.enhancedAuthInProgress;\n this.apiKey = newToken;\n } finally {\n this.enhancedAuthInProgress = null;\n }\n }\n // Retry the request with the new token\n try {\n return await this.fetch<T>(endpoint, options);\n } catch (retryError) {\n this.orgToken = undefined;\n this.orgTokenOrgUuid = undefined;\n throw retryError;\n }\n }\n\n if (response.status === 401) {\n const orgAuthInfo = parseOrgAuthChallenge(response.headers.get('WWW-Authenticate'));\n // If the challenge targets a different org than our current\n // token, the token is stale (e.g. switching from Org A to Org\n // B mid-session). Clear it so the handler re-fires below.\n if (\n orgAuthInfo &&\n this.orgToken &&\n this.orgTokenOrgUuid &&\n this.orgTokenOrgUuid !== orgAuthInfo.orgUuid\n ) {\n this.orgToken = undefined;\n this.orgTokenOrgUuid = undefined;\n }\n if (orgAuthInfo && !this.orgToken) {\n // Anchored so unexpected cookie names fail loud rather than\n // silently mapping to a name that reads empty.\n const requestCookieName = orgAuthInfo.cookieName.replace(\n /^orgToken/,\n 'requestOrgToken'\n );\n const cachedOrgToken = getCookieValue(requestCookieName);\n if (cachedOrgToken) {\n this.orgToken = cachedOrgToken;\n this.orgTokenOrgUuid = orgAuthInfo.orgUuid;\n try {\n return await this.fetch<T>(endpoint, options);\n } catch (retryError) {\n this.orgToken = undefined;\n this.orgTokenOrgUuid = undefined;\n throw retryError;\n }\n }\n\n if (this.orgAuthHandler) {\n if (!this.orgAuthInProgress) {\n const handler = this.orgAuthHandler;\n this.orgAuthInProgress = (async () => {\n try {\n await handler(orgAuthInfo);\n } finally {\n this.orgAuthInProgress = null;\n }\n })();\n }\n await this.orgAuthInProgress;\n // Prefer cookie (browser). Fall back to this.orgToken which\n // non-browser handlers (e.g. CLI) set directly via setOrgToken().\n const postHandlerToken = getCookieValue(requestCookieName) ?? this.orgToken;\n if (!postHandlerToken) {\n throw new ApiError(\n 'Organization authentication did not issue a token',\n 401\n );\n }\n this.orgToken = postHandlerToken;\n this.orgTokenOrgUuid = orgAuthInfo.orgUuid;\n try {\n return await this.fetch<T>(endpoint, options);\n } catch (retryError) {\n this.orgToken = undefined;\n this.orgTokenOrgUuid = undefined;\n throw retryError;\n }\n }\n }\n }\n\n const errorData = await response.json().catch(() => ({}));\n\n // Handle unauthorized errors for account endpoint\n if (response.status === 401 && endpoint === 'account') {\n throw new Error('unauthorized');\n }\n\n // Handle structured validation errors (Pydantic array format)\n if (Array.isArray(errorData.detail)) {\n const formattedErrors = errorData.detail\n .map((error: any) => {\n const location = error.loc.join(' > ');\n return `${location}: ${error.msg}`;\n })\n .join('\\n');\n throw new ApiError(`Validation Error:\\n${formattedErrors}`, response.status);\n }\n\n // Handle validation errors with errors array (new format)\n if (errorData.errors && Array.isArray(errorData.errors)) {\n // Structured workflow-expression validation errors — objects with\n // { field, kind, message, offendingPath, location }. Build a\n // readable message and preserve the structured payload.\n if (errorData.errors.length > 0 && isApiValidationError(errorData.errors[0])) {\n const validationErrors: ApiValidationError[] =\n errorData.errors.filter(isApiValidationError);\n const [first] = validationErrors;\n if (first) {\n const extra =\n validationErrors.length > 1\n ? ` (+${validationErrors.length - 1} more)`\n : '';\n const readable = `${first.field}: ${first.message}${extra}`;\n throw new ApiError(\n readable,\n response.status,\n validationErrors.map((e) => `${e.field}: ${e.message}`),\n validationErrors\n );\n }\n }\n\n // Legacy string-array errors.\n const stringErrors: string[] = errorData.errors.filter(\n (e: unknown): e is string => typeof e === 'string'\n );\n const details = stringErrors.join('; ');\n const message = errorData.detail\n ? `${errorData.detail}: ${details}`\n : `Validation failed: ${details}`;\n throw new ApiError(message, response.status, stringErrors);\n }\n\n // Handle structured errors (with error: true or with code property)\n const structuredError = errorData.detail || errorData;\n if (\n structuredError &&\n typeof structuredError === 'object' &&\n (structuredError.error === true || structuredError.code)\n ) {\n const message = structuredError.message || structuredError.code || 'Unknown error';\n const error = new ApiError(message, response.status);\n // Attach the full error data for frontend handling\n (error as any).errorData = structuredError;\n throw error;\n }\n\n // Handle simple error messages\n const errorMessage =\n typeof errorData.detail === 'string'\n ? errorData.detail\n : errorData.message || response.statusText;\n throw new ApiError(errorMessage, response.status);\n }\n\n // Handle 204 No Content - no JSON body to parse\n if (response.status === 204) {\n return undefined as any;\n }\n\n return response.json();\n } catch (error) {\n console.warn(error);\n throw error;\n }\n }\n\n protected async fetchRaw(\n endpoint: string,\n options?: RequestInit,\n allowedErrorStatuses: number[] = []\n ): Promise<Response> {\n try {\n const headers = new Headers({\n ...((options?.headers as Record<string, string>) || {}),\n });\n\n if (this.apiKey) {\n headers.set('Authorization', `Bearer ${this.apiKey}`);\n } else if (this.isCrossDomain) {\n // For cross-domain requests, try to use the requestToken cookie\n const requestToken = getCookieValue('requestToken');\n if (requestToken) {\n headers.set('Authorization', `Bearer ${requestToken}`);\n }\n }\n\n // Include X-Acting-Member header for member identity switching\n if (this.actingMemberUuid) {\n headers.set('X-Acting-Member', this.actingMemberUuid);\n }\n\n // Include X-Org-Token header for cross-domain org auth\n if (this.orgToken) {\n headers.set('X-Org-Token', this.orgToken);\n }\n\n const response = await this.fetchFunction(`${this.baseUrl}/api/v2/${endpoint}`, {\n ...options,\n ...(this.apiKey ? {} : { credentials: 'include' }),\n ...(this.isCrossDomain ? { mode: 'cors' } : {}),\n headers,\n });\n\n if (!response.ok) {\n // Check for step-up auth requirement per RFC 9470 (superuser 2FA re-auth needed)\n if (\n response.status === 401 &&\n requiresStepUpAuth(response.headers.get('WWW-Authenticate')) &&\n this.enhancedAuthHandler\n ) {\n // If re-auth is already in progress, wait for it\n if (this.enhancedAuthInProgress) {\n await this.enhancedAuthInProgress;\n } else {\n // Trigger re-auth and wait for completion\n this.enhancedAuthInProgress = this.enhancedAuthHandler();\n try {\n const newToken = await this.enhancedAuthInProgress;\n this.apiKey = newToken;\n } finally {\n this.enhancedAuthInProgress = null;\n }\n }\n // Retry the request with the new token\n try {\n return await this.fetchRaw(endpoint, options, allowedErrorStatuses);\n } catch (retryError) {\n this.orgToken = undefined;\n this.orgTokenOrgUuid = undefined;\n throw retryError;\n }\n }\n\n // Mirror of the org-auth branch in fetch() above; see comments there.\n if (response.status === 401) {\n const orgAuthInfo = parseOrgAuthChallenge(response.headers.get('WWW-Authenticate'));\n if (\n orgAuthInfo &&\n this.orgToken &&\n this.orgTokenOrgUuid &&\n this.orgTokenOrgUuid !== orgAuthInfo.orgUuid\n ) {\n this.orgToken = undefined;\n this.orgTokenOrgUuid = undefined;\n }\n if (orgAuthInfo && !this.orgToken) {\n const requestCookieName = orgAuthInfo.cookieName.replace(\n /^orgToken/,\n 'requestOrgToken'\n );\n const cachedOrgToken = getCookieValue(requestCookieName);\n if (cachedOrgToken) {\n this.orgToken = cachedOrgToken;\n this.orgTokenOrgUuid = orgAuthInfo.orgUuid;\n try {\n return await this.fetchRaw(endpoint, options, allowedErrorStatuses);\n } catch (retryError) {\n this.orgToken = undefined;\n this.orgTokenOrgUuid = undefined;\n throw retryError;\n }\n }\n\n if (this.orgAuthHandler) {\n if (!this.orgAuthInProgress) {\n const handler = this.orgAuthHandler;\n this.orgAuthInProgress = (async () => {\n try {\n await handler(orgAuthInfo);\n } finally {\n this.orgAuthInProgress = null;\n }\n })();\n }\n await this.orgAuthInProgress;\n // Prefer cookie (browser). Fall back to this.orgToken which\n // non-browser handlers (e.g. CLI) set directly via setOrgToken().\n const postHandlerToken = getCookieValue(requestCookieName) ?? this.orgToken;\n if (!postHandlerToken) {\n throw new ApiError(\n 'Organization authentication did not issue a token',\n 401\n );\n }\n this.orgToken = postHandlerToken;\n this.orgTokenOrgUuid = orgAuthInfo.orgUuid;\n try {\n return await this.fetchRaw(endpoint, options, allowedErrorStatuses);\n } catch (retryError) {\n this.orgToken = undefined;\n this.orgTokenOrgUuid = undefined;\n throw retryError;\n }\n }\n }\n }\n\n if (allowedErrorStatuses.includes(response.status)) {\n return response;\n }\n\n const errorText = await response.text().catch(() => '');\n throw new ApiError(errorText || response.statusText, response.status);\n }\n\n return response;\n } catch (error) {\n console.warn(error);\n throw error;\n }\n }\n\n /**\n * Fetch from root path (not prefixed with /api/v2/)\n * Used for OAuth and other non-API endpoints\n */\n protected async fetchRoot<T>(path: string, options?: RequestInit): Promise<T> {\n try {\n const headers = new Headers({\n ...(options?.body instanceof FormData ? {} : { 'Content-Type': 'application/json' }),\n ...((options?.headers as Record<string, string>) || {}),\n });\n\n if (this.apiKey) {\n headers.set('Authorization', `Bearer ${this.apiKey}`);\n } else if (this.isCrossDomain) {\n const requestToken = getCookieValue('requestToken');\n if (requestToken) {\n headers.set('Authorization', `Bearer ${requestToken}`);\n }\n }\n\n // Include X-Acting-Member header for member identity switching\n if (this.actingMemberUuid) {\n headers.set('X-Acting-Member', this.actingMemberUuid);\n }\n\n // Include X-Org-Token header for cross-domain org auth\n if (this.orgToken) {\n headers.set('X-Org-Token', this.orgToken);\n }\n\n const fullUrl = `${this.baseUrl}/${path}`;\n\n const response = await this.fetchFunction(fullUrl, {\n ...options,\n ...(this.apiKey ? {} : { credentials: 'include' }),\n ...(this.isCrossDomain ? { mode: 'cors' } : {}),\n headers,\n });\n\n if (!response.ok) {\n if (response.status === 404) {\n return null as T;\n }\n const errorData = await response.json().catch(() => ({}));\n const errorMessage = errorData.detail || errorData.message || response.statusText;\n throw new ApiError(errorMessage, response.status);\n }\n\n if (response.status === 204) {\n return undefined as T;\n }\n\n return response.json();\n } catch (error) {\n console.warn(error);\n throw error;\n }\n }\n}\n","import type { AbilityTypesResponse } from '../types/ability-types';\nimport { BaseApiClient } from './base';\n\n/**\n * API client for ability types.\n * Abilities are now managed inline with their parent objects (workflows, tasks).\n */\nexport class AbilitiesApi extends BaseApiClient {\n /**\n * List all available ability types from the registry.\n */\n async getAbilityTypes(wid: string): Promise<AbilityTypesResponse> {\n return this.fetch<AbilityTypesResponse>(`w/${wid}/abilities/types`);\n }\n}\n","import { BaseApiClient } from './base';\nimport type {\n AccessGrant,\n CreateAccessGrantRequest,\n PaginatedResponse,\n ResolveGrantRequest,\n RevokeGrantRequest,\n} from '../types';\n\nexport class AccessGrantsApi extends BaseApiClient {\n /** List access grants received by the current member. */\n async getMyReceivedGrants(\n wid: string,\n params?: { status?: string; page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<AccessGrant>> {\n const searchParams = new URLSearchParams();\n if (params?.status) searchParams.set('status', params.status);\n if (params?.page) searchParams.set('page', params.page.toString());\n if (params?.pageSize) searchParams.set('page_size', params.pageSize.toString());\n const qs = searchParams.toString();\n return this.fetch<PaginatedResponse<AccessGrant>>(\n `w/${wid}/access-grants/my/received${qs ? `?${qs}` : ''}`\n );\n }\n\n /** List access grants given by the current member. */\n async getMyGivenGrants(\n wid: string,\n params?: { status?: string; page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<AccessGrant>> {\n const searchParams = new URLSearchParams();\n if (params?.status) searchParams.set('status', params.status);\n if (params?.page) searchParams.set('page', params.page.toString());\n if (params?.pageSize) searchParams.set('page_size', params.pageSize.toString());\n const qs = searchParams.toString();\n return this.fetch<PaginatedResponse<AccessGrant>>(\n `w/${wid}/access-grants/my/given${qs ? `?${qs}` : ''}`\n );\n }\n\n /** Get a single access grant by UUID. */\n async getAccessGrant(wid: string, uuid: string): Promise<AccessGrant> {\n return this.fetch<AccessGrant>(`w/${wid}/access-grants/${uuid}`);\n }\n\n /** Create a new access grant for a resource. */\n async createAccessGrant(wid: string, data: CreateAccessGrantRequest): Promise<AccessGrant> {\n return this.fetch<AccessGrant>(`w/${wid}/access-grants`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Resolve a pending access grant by approving or denying it. */\n async resolveAccessGrant(\n wid: string,\n uuid: string,\n data: ResolveGrantRequest\n ): Promise<AccessGrant> {\n return this.fetch<AccessGrant>(`w/${wid}/access-grants/${uuid}/resolve`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Revoke a previously approved access grant. */\n async revokeAccessGrant(\n wid: string,\n uuid: string,\n data: RevokeGrantRequest\n ): Promise<AccessGrant> {\n return this.fetch<AccessGrant>(`w/${wid}/access-grants/${uuid}/revoke`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** List all access grants with optional filtering by status, resource type, and resource ID. */\n async getAccessGrants(\n wid: string,\n params?: {\n status?: string;\n resourceType?: string;\n resourceId?: number;\n page?: number;\n pageSize?: number;\n }\n ): Promise<PaginatedResponse<AccessGrant>> {\n const searchParams = new URLSearchParams();\n if (params?.status) searchParams.set('status', params.status);\n if (params?.resourceType) searchParams.set('resource_type', params.resourceType);\n if (params?.resourceId) searchParams.set('resource_id', params.resourceId.toString());\n if (params?.page) searchParams.set('page', params.page.toString());\n if (params?.pageSize) searchParams.set('page_size', params.pageSize.toString());\n const qs = searchParams.toString();\n return this.fetch<PaginatedResponse<AccessGrant>>(\n `w/${wid}/access-grants${qs ? `?${qs}` : ''}`\n );\n }\n\n /** Get all access grants for a specific member. */\n async getMemberGrants(wid: string, memberId: number): Promise<AccessGrant[]> {\n const resp = await this.fetch<PaginatedResponse<AccessGrant>>(\n `w/${wid}/access-grants/member/${memberId}`\n );\n return resp.items;\n }\n}\n","import { BaseApiClient } from './base';\nimport type {\n AgentTaskMessageResponse,\n AgentTaskResponse,\n CancelAgentTaskResponse,\n GetAgentTaskMessagesParams,\n ListAgentTasksParams,\n} from '../types';\n\nexport class AgentTasksApi extends BaseApiClient {\n async getAgentTasks(wid: string, params?: ListAgentTasksParams): Promise<AgentTaskResponse[]> {\n const searchParams = new URLSearchParams();\n if (params?.status) searchParams.set('status', params.status);\n if (params?.agentMemberId != null)\n searchParams.set('agent_member_id', String(params.agentMemberId));\n if (params?.parentTaskId != null)\n searchParams.set('parent_task_id', String(params.parentTaskId));\n if (params?.limit != null) searchParams.set('limit', String(params.limit));\n const qs = searchParams.toString();\n return this.fetch<AgentTaskResponse[]>(`w/${wid}/agent-tasks${qs ? `?${qs}` : ''}`);\n }\n\n async getAgentTask(wid: string, taskUuid: string): Promise<AgentTaskResponse> {\n return this.fetch<AgentTaskResponse>(`w/${wid}/agent-tasks/${taskUuid}`);\n }\n\n async cancelAgentTask(wid: string, taskUuid: string): Promise<CancelAgentTaskResponse> {\n return this.fetch<CancelAgentTaskResponse>(`w/${wid}/agent-tasks/${taskUuid}/cancel`, {\n method: 'POST',\n });\n }\n\n async getAgentTaskMessages(\n wid: string,\n taskUuid: string,\n params?: GetAgentTaskMessagesParams\n ): Promise<AgentTaskMessageResponse[]> {\n const searchParams = new URLSearchParams();\n if (params?.limit != null) searchParams.set('limit', String(params.limit));\n const qs = searchParams.toString();\n return this.fetch<AgentTaskMessageResponse[]>(\n `w/${wid}/agent-tasks/${taskUuid}/messages${qs ? `?${qs}` : ''}`\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport {\n Agent,\n CreateAgentRequest,\n UpdateAgentRequest,\n PaginatedResponse,\n SortOrder,\n} from '../types';\n\nexport type AgentSortField = 'createdAt' | 'updatedAt' | 'name';\n\nexport class AgentsApi extends BaseApiClient {\n /** List agents in a workspace with optional pagination, sorting, and search. */\n async getAgents(\n wid: string,\n options: {\n page?: number;\n pageSize?: number;\n sortBy?: AgentSortField;\n sortOrder?: SortOrder;\n search?: string;\n includeArchived?: boolean;\n } = {}\n ): Promise<PaginatedResponse<Agent>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.search) params.append('search', options.search);\n if (options.includeArchived)\n params.append('includeArchived', options.includeArchived.toString());\n\n return this.fetch<PaginatedResponse<Agent>>(\n `w/${wid}/agents${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Get a single agent by ID. */\n async getAgent(wid: string, id: number): Promise<Agent> {\n return this.fetch<Agent>(`w/${wid}/agents/${id}`);\n }\n\n /** Create a new agent in a workspace. */\n async createAgent(wid: string, agent: CreateAgentRequest): Promise<Agent> {\n return this.fetch<Agent>(`w/${wid}/agents`, {\n method: 'POST',\n body: JSON.stringify(agent),\n });\n }\n\n /** Update an existing agent. */\n async updateAgent(wid: string, id: number, agent: UpdateAgentRequest): Promise<Agent> {\n return this.fetch<Agent>(`w/${wid}/agents/${id}`, {\n method: 'PUT',\n body: JSON.stringify(agent),\n });\n }\n\n /** Delete an agent by ID, optionally forcing deletion of agents with active references. */\n async deleteAgent(wid: string, id: number, force?: boolean): Promise<void> {\n const params = force ? '?force=true' : '';\n return this.fetch(`w/${wid}/agents/${id}${params}`, {\n method: 'DELETE',\n });\n }\n\n /** Archive an agent, hiding it from default listings. */\n async archiveAgent(wid: string, id: number): Promise<Agent> {\n return this.fetch<Agent>(`w/${wid}/agents/${id}/archive`, {\n method: 'POST',\n });\n }\n\n /** Restore an archived agent back to active status. */\n async unarchiveAgent(wid: string, id: number): Promise<Agent> {\n return this.fetch<Agent>(`w/${wid}/agents/${id}/unarchive`, {\n method: 'POST',\n });\n }\n}\n","import type {\n AIModelsResponse,\n AllModelsResponse,\n VoiceModelsResponse,\n} from '../types/ai-model-types';\nimport { BaseApiClient } from './base';\n\n/**\n * API client for AI model-related operations.\n */\nexport class AIModelsApi extends BaseApiClient {\n /**\n * Get available chat AI models\n */\n async getChatModels(provider?: string): Promise<AIModelsResponse> {\n const searchParams = new URLSearchParams();\n if (provider) searchParams.append('provider', provider);\n\n const queryString = searchParams.toString();\n const url = queryString ? `ai-models/chat?${queryString}` : 'ai-models/chat';\n\n return this.fetch<AIModelsResponse>(url);\n }\n\n /**\n * Get available realtime AI models\n */\n async getRealtimeModels(provider?: string): Promise<AIModelsResponse> {\n const searchParams = new URLSearchParams();\n if (provider) searchParams.append('provider', provider);\n\n const queryString = searchParams.toString();\n const url = queryString ? `ai-models/realtime?${queryString}` : 'ai-models/realtime';\n\n return this.fetch<AIModelsResponse>(url);\n }\n\n /**\n * Get available voice models with metadata\n */\n async getVoiceModels(provider?: string): Promise<VoiceModelsResponse> {\n const searchParams = new URLSearchParams();\n if (provider) searchParams.append('provider', provider);\n\n const queryString = searchParams.toString();\n const url = queryString ? `ai-models/voices?${queryString}` : 'ai-models/voices';\n\n return this.fetch<VoiceModelsResponse>(url);\n }\n\n /**\n * Get all AI models with full metadata including multipliers\n * Returns models grouped by type (chat, realtime, image, stt, tts)\n */\n async getAllModels(provider?: string, includeUnavailable = false): Promise<AllModelsResponse> {\n const searchParams = new URLSearchParams();\n if (provider) searchParams.append('provider', provider);\n if (includeUnavailable) searchParams.append('include_unavailable', 'true');\n\n const queryString = searchParams.toString();\n const url = queryString ? `ai-models/all?${queryString}` : 'ai-models/all';\n\n return this.fetch<AllModelsResponse>(url);\n }\n\n /**\n * Get available image generation models\n */\n async getImageModels(provider?: string): Promise<AIModelsResponse> {\n const searchParams = new URLSearchParams();\n if (provider) searchParams.append('provider', provider);\n\n const queryString = searchParams.toString();\n const url = queryString ? `ai-models/image?${queryString}` : 'ai-models/image';\n\n return this.fetch<AIModelsResponse>(url);\n }\n\n /**\n * Get available speech-to-text models\n */\n async getSTTModels(provider?: string): Promise<AIModelsResponse> {\n const searchParams = new URLSearchParams();\n if (provider) searchParams.append('provider', provider);\n\n const queryString = searchParams.toString();\n const url = queryString ? `ai-models/stt?${queryString}` : 'ai-models/stt';\n\n return this.fetch<AIModelsResponse>(url);\n }\n\n /**\n * Get available text-to-speech models\n */\n async getTTSModels(provider?: string): Promise<AIModelsResponse> {\n const searchParams = new URLSearchParams();\n if (provider) searchParams.append('provider', provider);\n\n const queryString = searchParams.toString();\n const url = queryString ? `ai-models/tts?${queryString}` : 'ai-models/tts';\n\n return this.fetch<AIModelsResponse>(url);\n }\n}\n","import { ApiKey, ApiKeyCreated, ApiKeyFormData } from '../types';\nimport { BaseApiClient } from './base';\n\nexport class ApiKeysApi extends BaseApiClient {\n // Workspace-specific API key methods\n\n /** List all API keys for a workspace. */\n async getApiKeys(wid: string): Promise<ApiKey[]> {\n return this.fetch<ApiKey[]>(`w/${wid}/api-keys`);\n }\n\n /** Create a new API key for a workspace. */\n async createApiKey(wid: string, apiKey: ApiKeyFormData): Promise<ApiKeyCreated> {\n return this.fetch<ApiKeyCreated>(`w/${wid}/api-keys`, {\n method: 'POST',\n body: JSON.stringify(apiKey),\n });\n }\n\n /** Revoke a workspace API key. */\n async revokeApiKey(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/api-keys/${id}`, {\n method: 'DELETE',\n });\n }\n\n // Global (account-level) API key methods\n\n /** List all account-level API keys. */\n async getGlobalApiKeys(): Promise<ApiKey[]> {\n return this.fetch<ApiKey[]>(`account/api-keys`);\n }\n\n /** Create a new account-level API key. */\n async createGlobalApiKey(apiKey: ApiKeyFormData): Promise<ApiKeyCreated> {\n return this.fetch<ApiKeyCreated>(`account/api-keys`, {\n method: 'POST',\n body: JSON.stringify(apiKey),\n });\n }\n\n /** Revoke an account-level API key. */\n async revokeGlobalApiKey(id: number): Promise<void> {\n return this.fetch(`account/api-keys/${id}`, {\n method: 'DELETE',\n });\n }\n}\n","import {\n App,\n AppCredentialResponse,\n AppListResponse,\n CreateAppRequest,\n UpdateAppRequest,\n} from '../types';\nimport { BaseApiClient } from './base';\n\nexport class AppsApi extends BaseApiClient {\n /**\n * List apps - either public apps, account's apps, or all apps visible to a workspace\n */\n async listApps(params?: {\n public?: boolean;\n workspaceUuid?: string;\n builderId?: number;\n }): Promise<AppListResponse> {\n const queryParams = new URLSearchParams();\n if (params?.public) queryParams.append('public', 'true');\n if (params?.workspaceUuid !== undefined)\n queryParams.append('workspace_uuid', params.workspaceUuid);\n if (params?.builderId !== undefined)\n queryParams.append('builder_id', params.builderId.toString());\n const queryString = queryParams.toString();\n return this.fetch<AppListResponse>(`apps${queryString ? `?${queryString}` : ''}`);\n }\n\n /**\n * Create a new app\n */\n async createApp(request: CreateAppRequest): Promise<App> {\n return this.fetch<App>('apps', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Get details of a specific app\n */\n async getApp(appId: string): Promise<App> {\n return this.fetch<App>(`apps/${appId}`);\n }\n\n /**\n * Get app by client ID (for OAuth flows)\n */\n async getAppByClientId(clientId: string): Promise<App> {\n return this.fetch<App>(`apps/by-client-id/${clientId}`);\n }\n\n /**\n * Update an app\n */\n async updateApp(appId: string, request: UpdateAppRequest): Promise<App> {\n return this.fetch<App>(`apps/${appId}`, {\n method: 'PUT',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Delete an app\n */\n async deleteApp(appId: string): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(`apps/${appId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Regenerate client secret for an app\n */\n async regenerateClientSecret(appId: string): Promise<AppCredentialResponse> {\n return this.fetch<AppCredentialResponse>(`apps/${appId}/regenerate-secret`, {\n method: 'POST',\n });\n }\n}\n","import {\n Assignment,\n AssignmentsQueryParams,\n AssignmentTask,\n ChatMessage,\n CreateAssignmentFormData,\n ExecuteToolResponse,\n OperatorTaskDetailResponse,\n PaginatedResponse,\n ToolsResponse,\n UpdateAssignmentFormData,\n} from '../types';\nimport { BaseApiClient } from './base';\n\nexport class AssignmentsApi extends BaseApiClient {\n /** List assignments with optional filtering, pagination, and sorting. */\n async getAssignments(\n wid: string,\n options: AssignmentsQueryParams = {}\n ): Promise<PaginatedResponse<Assignment>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.mine) params.append('mine', options.mine.toString());\n if (options.taskId) params.append('taskId', options.taskId.toString());\n if (options.memberId !== undefined)\n params.append('memberId', options.memberId.toString());\n if (options.status) params.append('status', options.status);\n\n return this.fetch<PaginatedResponse<Assignment>>(\n `w/${wid}/assignments${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Get a single assignment by ID. */\n async getAssignment(wid: string, id: number): Promise<Assignment> {\n return this.fetch<Assignment>(`w/${wid}/assignments/${id}`);\n }\n\n /** Get all chat messages for an assignment. */\n async getAssignmentMessages(wid: string, id: number): Promise<ChatMessage[]> {\n return this.fetch<ChatMessage[]>(`w/${wid}/assignments/${id}/messages`);\n }\n\n /** Update an assignment by ID. */\n async updateAssignment(\n wid: string,\n id: number,\n assignment: UpdateAssignmentFormData\n ): Promise<Assignment> {\n return this.fetch<Assignment>(`w/${wid}/assignments/${id}`, {\n method: 'PUT',\n body: JSON.stringify(assignment),\n });\n }\n\n /** Delete an assignment by ID. */\n async deleteAssignment(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/assignments/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Get a specific task within an assignment. */\n async getAssignmentTask(\n wid: string,\n id: number,\n assignmentTaskId: number\n ): Promise<AssignmentTask> {\n return this.fetch<AssignmentTask>(`w/${wid}/assignments/${id}/tasks/${assignmentTaskId}`);\n }\n\n /** Set the current active task for an assignment. */\n async selectCurrentAssignmentTask(\n wid: string,\n id: number,\n assignmentTaskId: number\n ): Promise<void> {\n return this.fetch(`w/${wid}/assignments/${id}/tasks/${assignmentTaskId}/select`, {\n method: 'PUT',\n });\n }\n\n /** Create a new assignment for a member. */\n async createAssignment(wid: string, data: CreateAssignmentFormData): Promise<Assignment> {\n return this.fetch<Assignment>(`w/${wid}/assignments`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Get the current task detail for an assignment from the operator perspective. */\n async getAssignmentTaskDetail(\n wid: string,\n assignmentId: number\n ): Promise<OperatorTaskDetailResponse> {\n return this.fetch<OperatorTaskDetailResponse>(\n `w/${wid}/assignments/${assignmentId}/current-task-detail`\n );\n }\n\n /** Get the CEL expression evaluation context for an assignment. */\n async getAssignmentCelContext(\n wid: string,\n assignmentId: number\n ): Promise<Record<string, unknown>> {\n return this.fetch<Record<string, unknown>>(\n `w/${wid}/assignments/${assignmentId}/cel-context`\n );\n }\n\n /** Cancel an active assignment with an optional reason. */\n async cancelAssignment(\n wid: string,\n id: number,\n data?: { reason?: string }\n ): Promise<Assignment> {\n return this.fetch<Assignment>(`w/${wid}/assignments/${id}/cancel`, {\n method: 'POST',\n body: JSON.stringify(data ?? {}),\n });\n }\n\n /** List available tools for an assignment. */\n async getAssignmentTools(wid: string, assignmentId: number): Promise<ToolsResponse> {\n return this.fetch<ToolsResponse>(`w/${wid}/assignments/${assignmentId}/tools`);\n }\n\n /** Execute a tool within an assignment context. */\n async executeAssignmentTool(\n wid: string,\n assignmentId: number,\n toolName: string,\n parameters: Record<string, unknown> = {}\n ): Promise<ExecuteToolResponse> {\n return this.fetch<ExecuteToolResponse>(`w/${wid}/assignments/${assignmentId}/execute-tool`, {\n method: 'POST',\n body: JSON.stringify({ toolName, parameters }),\n });\n }\n}\n","import { BaseApiClient } from './base';\n\nexport interface TTSPreviewRequest {\n voiceModel: string; // Canonical voice model ID (e.g., \"openai:voice:ash\", \"elevenlabs:voice:dan\")\n phrase?: string;\n}\n\nexport interface ThinkingSoundPreviewRequest {\n sound: string; // Sound name (e.g., \"typing\", \"strumming\")\n volume?: number | null; // Volume level (0-100). Missing or null means full volume.\n}\n\nexport class VoiceApi extends BaseApiClient {\n /** Generate a text-to-speech audio preview for a given voice model. */\n async previewTTS(wid: string, request: TTSPreviewRequest): Promise<ArrayBuffer> {\n const response = await this.fetchRaw(`w/${wid}/agents/tts-preview`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(request),\n });\n return response.arrayBuffer();\n }\n\n /** Generate a thinking sound audio preview. */\n async previewThinkingSound(\n wid: string,\n request: ThinkingSoundPreviewRequest\n ): Promise<ArrayBuffer> {\n const response = await this.fetchRaw(`w/${wid}/agents/thinking-sound-preview`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify(request),\n });\n return response.arrayBuffer();\n }\n}\n","import {\n Account,\n AccountFormData,\n CreateSignupResponse,\n DomainMapping,\n VerifyCodeResponse,\n RequestMagicLinkResponse,\n ValidateMagicLinkResponse,\n} from '../types';\nimport {\n AdminAccountOrgMembership,\n SMSLoginResponse,\n TwoFactorStatus,\n TOTPSetupResponse,\n TwoFactorOperationResponse,\n RecoveryCodesResponse,\n SetupTOTPRequest,\n VerifyTOTPSetupRequest,\n SetupWebAuthnRequest,\n VerifyWebAuthnSetupRequest,\n GenerateRecoveryCodesRequest,\n UpdateTwoFactorMethodRequest,\n CredentialType,\n CredentialChangeRequestResponse,\n CredentialChangeVerifyResponse,\n PendingCredentialChange,\n CancelCredentialChangeResponse,\n CredentialChangeInviteDetails,\n CredentialChangeInviteConfirmResponse,\n SessionExchangeRequest,\n SessionExchangeResponse,\n} from '../types/account-types';\nimport { BaseApiClient } from './base';\nimport { parsePhoneNumberFromString } from 'libphonenumber-js';\n\n/**\n * Sanitize phone number to E164 format for backend API calls\n * Converts user-friendly formats like \"+1 207 299 0551\" to \"+12072990551\"\n */\nfunction sanitizePhoneForBackend(phoneNumber: string): string {\n try {\n // Try parsing with explicit country first\n let parsed = parsePhoneNumberFromString(phoneNumber);\n\n // If no country code detected, try with US (+1) as default\n if (!parsed) {\n parsed = parsePhoneNumberFromString(phoneNumber, 'US');\n }\n\n if (parsed && parsed.isValid()) {\n return parsed.format('E.164');\n }\n } catch {\n // If parsing fails, return original (backend will handle validation)\n }\n\n return phoneNumber;\n}\n\nexport class AuthApi extends BaseApiClient {\n /** Get the authenticated user's account. */\n async getUserAccount(): Promise<Account> {\n return this.fetch<Account>('account');\n }\n\n /** Update the authenticated user's account information. */\n async updateUserAccount(info: AccountFormData): Promise<Account> {\n return this.fetch('account', {\n method: 'POST',\n body: JSON.stringify(info),\n });\n }\n\n /** Initiate SMS login by sending a verification code to the given phone number. */\n async login(\n phoneNumber: string,\n wid?: string,\n organizationUuid?: string\n ): Promise<SMSLoginResponse> {\n const params = new URLSearchParams();\n if (wid) params.append('wid', wid);\n const body: any = { phoneNumber: sanitizePhoneForBackend(phoneNumber) };\n if (organizationUuid) body.organizationUuid = organizationUuid;\n return await this.fetch<SMSLoginResponse>(`auth/login?${params.toString()}`, {\n method: 'POST',\n body: JSON.stringify(body),\n });\n }\n\n /** Resend the SMS verification code to the given phone number. */\n async resendCode(phoneNumber: string, organizationUuid?: string): Promise<SMSLoginResponse> {\n const body: any = { phoneNumber: sanitizePhoneForBackend(phoneNumber) };\n if (organizationUuid) body.organizationUuid = organizationUuid;\n return await this.fetch<SMSLoginResponse>('auth/resend-code', {\n method: 'POST',\n body: JSON.stringify(body),\n });\n }\n\n /** Verify an SMS code and complete authentication, handling 2FA if required. */\n async verifyCodeWith2FA(\n phoneNumber: string,\n code: string,\n organizationUuid?: string\n ): Promise<VerifyCodeResponse> {\n // Verify code with backend API then complete auth locally if no 2FA required\n const verifyResponse = await this.fetch<VerifyCodeResponse>('auth/verify-with-2fa', {\n method: 'POST',\n body: JSON.stringify({\n phoneNumber: sanitizePhoneForBackend(phoneNumber),\n code,\n organizationUuid,\n }),\n });\n\n // If 2FA is not required, set the auth cookies using the local complete endpoint\n if (!verifyResponse.requiresTwoFactor && verifyResponse.token) {\n const completeResponse = await fetch(`/api/auth/complete`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n token: verifyResponse.token,\n orgUuid: organizationUuid, // Pass org UUID for per-org cookie\n }),\n });\n\n if (!completeResponse.ok) {\n const output = await completeResponse.text();\n console.error(`Error completing auth: ${output}`);\n throw new Error('Failed to complete authentication');\n }\n }\n\n return verifyResponse;\n }\n\n /** Log in with email and password credentials. */\n async emailPasswordLogin(\n email: string,\n password: string,\n organizationUuid?: string\n ): Promise<VerifyCodeResponse> {\n return await this.fetch<VerifyCodeResponse>(`auth/email-password-login`, {\n method: 'POST',\n body: JSON.stringify({ email, password, organizationUuid }),\n });\n }\n\n /** Sign up a new account with email and password. */\n async emailPasswordSignup(\n email: string,\n password: string,\n name?: string,\n organizationUuid?: string\n ): Promise<VerifyCodeResponse> {\n return await this.fetch<VerifyCodeResponse>(`auth/email-password-signup`, {\n method: 'POST',\n body: JSON.stringify({ email, password, name, organizationUuid }),\n });\n }\n\n /** Change the current account password by providing the existing password. */\n async changePassword(\n currentPassword: string,\n newPassword: string\n ): Promise<{ success: boolean; message: string }> {\n return await this.fetch<{ success: boolean; message: string }>(`auth/change-password`, {\n method: 'POST',\n body: JSON.stringify({ currentPassword, newPassword }),\n });\n }\n\n /** Set a password for an account that does not yet have one. */\n async setPassword(newPassword: string): Promise<{ success: boolean; message: string }> {\n return await this.fetch<{ success: boolean; message: string }>(`auth/set-password`, {\n method: 'POST',\n body: JSON.stringify({ newPassword }),\n });\n }\n\n /** Check whether the current account has a password set. */\n async getPasswordStatus(): Promise<{ hasPassword: boolean }> {\n return await this.fetch<{ hasPassword: boolean }>(`auth/password-status`);\n }\n\n /** Log out the current session by clearing auth cookies. */\n async logout(): Promise<{ success: boolean }> {\n // this is fetched locally in order to clear the cookie\n const response = await fetch(`/api/auth/logout`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n });\n\n if (!response.ok) {\n throw new Error('Failed to logout');\n }\n\n return await response.json();\n }\n\n /** Request a cross-domain authentication token for single sign-on across domains. */\n async requestCrossDomainToken(): Promise<{ token: string }> {\n return this.fetch<{ token: string }>('auth/cross-domain-token', {\n method: 'POST',\n });\n }\n\n /** Exchange a cross-domain token for an authenticated session token. */\n async exchangeToken(token: string): Promise<{ token: string }> {\n return this.fetch<{ token: string }>('auth/exchange-token', {\n method: 'POST',\n body: JSON.stringify({ token }),\n });\n }\n\n /** Exchange a global Account login for an opaque org-scoped session handle. */\n async exchangeSession(request: SessionExchangeRequest): Promise<SessionExchangeResponse> {\n return this.fetch<SessionExchangeResponse>('auth/session-exchange', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /** Get the organization and workspace mapping for a custom domain. */\n async getDomainMapping(customDomain: string): Promise<DomainMapping> {\n return this.fetch<DomainMapping>(`s/mapping/${customDomain}`);\n }\n\n /** Create a new signup with member and data records for a workspace. */\n async createSignup(\n wid: string,\n data: {\n member?: {\n email?: string;\n phone?: string;\n role?: string;\n name?: string;\n description?: string;\n tosAccepted?: boolean;\n };\n data?: Record<\n string,\n {\n externalId?: string;\n values: Record<string, any>;\n }\n >;\n origin?: string;\n }\n ): Promise<CreateSignupResponse> {\n return this.fetch<CreateSignupResponse>(`w/${wid}/create-signup`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n // ===== MAGIC LINK AUTHENTICATION METHODS =====\n\n /** Request a magic link to be sent to the given email address for passwordless login. */\n async requestMagicLink(\n email: string,\n organizationUuid?: string,\n redirectUrl?: string\n ): Promise<RequestMagicLinkResponse> {\n return await this.fetch<RequestMagicLinkResponse>(`auth/request-magic-link`, {\n method: 'POST',\n body: JSON.stringify({ email, organizationUuid, redirectUrl }),\n });\n }\n\n /** Validate a magic link token and optional OTP to complete authentication. */\n async validateMagicLink(token: string, otp?: string): Promise<ValidateMagicLinkResponse> {\n const body: { token: string; otp?: string } = { token };\n if (otp) {\n body.otp = otp;\n }\n return await this.fetch<ValidateMagicLinkResponse>(`auth/validate-magic-link`, {\n method: 'POST',\n body: JSON.stringify(body),\n });\n }\n\n // ===== EMAIL VERIFICATION METHODS =====\n\n /** Send a verification code to the given email address for login. */\n async sendEmailVerification(\n email: string,\n organizationUuid?: string\n ): Promise<SMSLoginResponse> {\n return await this.fetch<SMSLoginResponse>(`auth/send-email-verification`, {\n method: 'POST',\n body: JSON.stringify({ email, organizationUuid }),\n });\n }\n\n /** Verify an email code and complete authentication, handling 2FA if required. */\n async verifyEmail(\n email: string,\n code: string,\n organizationUuid?: string\n ): Promise<VerifyCodeResponse> {\n // Verify email with backend API then complete auth locally if no 2FA required\n const verifyResponse = await this.fetch<VerifyCodeResponse>(`auth/verify-email`, {\n method: 'POST',\n body: JSON.stringify({ email, code, organizationUuid }),\n });\n\n // If 2FA is not required, set the auth cookies using the local complete endpoint\n if (!verifyResponse.requiresTwoFactor && verifyResponse.token) {\n const completeResponse = await fetch(`/api/auth/complete`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n token: verifyResponse.token,\n orgUuid: organizationUuid, // Pass org UUID for per-org cookie\n }),\n });\n\n if (!completeResponse.ok) {\n throw new Error('Failed to complete authentication');\n }\n }\n\n return verifyResponse;\n }\n\n // ===== TWO-FACTOR AUTHENTICATION METHODS =====\n\n /** Get the current two-factor authentication status and configured methods. */\n async getTwoFactorStatus(): Promise<TwoFactorStatus> {\n return this.fetch<TwoFactorStatus>('auth/2fa/status');\n }\n\n /** Initiate TOTP two-factor setup and receive the secret and QR code URI. */\n async setupTOTP(data: SetupTOTPRequest): Promise<TOTPSetupResponse> {\n return this.fetch<TOTPSetupResponse>('auth/2fa/totp/setup', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Verify a TOTP code to complete two-factor setup. */\n async verifyTOTPSetup(data: VerifyTOTPSetupRequest): Promise<TwoFactorOperationResponse> {\n return this.fetch<TwoFactorOperationResponse>('auth/2fa/totp/verify', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Initiate WebAuthn (passkey/security key) two-factor setup. */\n async setupWebAuthn(data: SetupWebAuthnRequest): Promise<any> {\n return this.fetch<any>('auth/2fa/webauthn/setup', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Verify a WebAuthn assertion to complete two-factor setup. */\n async verifyWebAuthnSetup(\n data: VerifyWebAuthnSetupRequest\n ): Promise<TwoFactorOperationResponse> {\n return this.fetch<TwoFactorOperationResponse>('auth/2fa/webauthn/verify', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Generate new two-factor recovery codes, invalidating any existing ones. */\n async generateRecoveryCodes(\n data: GenerateRecoveryCodesRequest = {}\n ): Promise<RecoveryCodesResponse> {\n return this.fetch<RecoveryCodesResponse>('auth/2fa/recovery-codes/generate', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Disable a specific two-factor authentication method. */\n async disableTwoFactorMethod(methodId: number): Promise<TwoFactorOperationResponse> {\n return this.fetch<TwoFactorOperationResponse>(`auth/2fa/methods/${methodId}`, {\n method: 'DELETE',\n });\n }\n\n /** Update settings for a two-factor authentication method. */\n async updateTwoFactorMethod(\n data: UpdateTwoFactorMethodRequest\n ): Promise<TwoFactorOperationResponse> {\n return this.fetch<TwoFactorOperationResponse>(`auth/2fa/methods/${data.methodId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n // ===== TWO-FACTOR AUTHENTICATION LOGIN METHODS =====\n\n /** Verify a TOTP code during login to complete two-factor authentication. */\n async verifyTOTPAuth(\n tempToken: string,\n code: string\n ): Promise<{ token: string; accountId: number }> {\n return this.fetch<{ token: string; accountId: number }>('auth/2fa/auth/totp', {\n method: 'POST',\n body: JSON.stringify({\n temp_token: tempToken,\n code,\n }),\n });\n }\n\n /** Verify a recovery code during login to complete two-factor authentication. */\n async verifyRecoveryCodeAuth(\n tempToken: string,\n code: string\n ): Promise<{ token: string; accountId: number }> {\n return this.fetch<{ token: string; accountId: number }>('auth/2fa/auth/recovery', {\n method: 'POST',\n body: JSON.stringify({\n temp_token: tempToken,\n code,\n }),\n });\n }\n\n /** Get WebAuthn credential request options for two-factor login verification. */\n async getWebAuthnAuthOptions(tempToken: string): Promise<{\n credentialRequestOptions: {\n challenge: string;\n timeout: number;\n rpId: string;\n allowCredentials: Array<{ id: string; type: string }>;\n userVerification: string;\n };\n }> {\n return this.fetch<{\n credentialRequestOptions: {\n challenge: string;\n timeout: number;\n rpId: string;\n allowCredentials: Array<{ id: string; type: string }>;\n userVerification: string;\n };\n }>('auth/2fa/webauthn/options', {\n method: 'POST',\n body: JSON.stringify({\n temp_token: tempToken,\n }),\n });\n }\n\n /** Verify a WebAuthn assertion during login to complete two-factor authentication. */\n async verifyWebAuthnAuth(\n tempToken: string,\n assertionResponse: any\n ): Promise<{ token: string; accountId: number }> {\n return this.fetch<{ token: string; accountId: number }>('auth/2fa/webauthn', {\n method: 'POST',\n body: JSON.stringify({\n temp_token: tempToken,\n assertion_response: assertionResponse,\n }),\n });\n }\n\n // ===== ORGANIZATION MEMBERSHIP METHODS =====\n\n /** List all organizations the current account belongs to. */\n async getMyOrganizations(): Promise<AdminAccountOrgMembership[]> {\n return this.fetch<AdminAccountOrgMembership[]>('o/mine');\n }\n\n // ===== CREDENTIAL CHANGE METHODS =====\n\n /**\n * Request to change email or phone credential.\n * Sends an OTP to the NEW credential to verify ownership.\n */\n async requestCredentialChange(\n credentialType: CredentialType,\n newValue: string\n ): Promise<CredentialChangeRequestResponse> {\n return this.fetch<CredentialChangeRequestResponse>('account/request-credential-change', {\n method: 'POST',\n body: JSON.stringify({\n credential_type: credentialType,\n new_value: newValue,\n }),\n });\n }\n\n /**\n * Verify a credential change request with OTP code.\n * On success, applies the credential change to the account.\n */\n async verifyCredentialChange(\n requestId: number,\n otpCode: string\n ): Promise<CredentialChangeVerifyResponse> {\n return this.fetch<CredentialChangeVerifyResponse>('account/verify-credential-change', {\n method: 'POST',\n body: JSON.stringify({\n request_id: requestId,\n otp_code: otpCode,\n }),\n });\n }\n\n /**\n * Get all pending (non-applied) credential change requests.\n */\n async getPendingCredentialChanges(): Promise<PendingCredentialChange[]> {\n return this.fetch<PendingCredentialChange[]>('account/pending-credential-changes');\n }\n\n /**\n * Cancel a pending credential change request.\n */\n async cancelCredentialChange(requestId: number): Promise<CancelCredentialChangeResponse> {\n return this.fetch<CancelCredentialChangeResponse>(\n `account/cancel-credential-change/${requestId}`,\n { method: 'DELETE' }\n );\n }\n\n // ===== CREDENTIAL CHANGE INVITE METHODS =====\n\n /**\n * Get details of a credential change invitation.\n * The user must be logged in and be the target of the invitation.\n */\n async getCredentialChangeInviteDetails(token: string): Promise<CredentialChangeInviteDetails> {\n return this.fetch<CredentialChangeInviteDetails>(`account/credential-change-invite/${token}`);\n }\n\n /**\n * Confirm a credential change invitation.\n * The user must be logged in and be the target of the invitation.\n */\n async confirmCredentialChangeInvite(\n token: string\n ): Promise<CredentialChangeInviteConfirmResponse> {\n return this.fetch<CredentialChangeInviteConfirmResponse>(\n `account/credential-change-invite/${token}/confirm`,\n { method: 'POST' }\n );\n }\n\n /** Get current consent state for the authenticated account. */\n async getConsentState(): Promise<ConsentStateResponse> {\n return this.fetch<ConsentStateResponse>('account/consent');\n }\n\n /** Record consent decisions (batch). */\n async updateConsent(\n consents: Array<{ consent_type: string; granted: boolean; policy_version?: string }>\n ): Promise<ConsentStateResponse> {\n return this.fetch<ConsentStateResponse>('account/consent', {\n method: 'POST',\n body: JSON.stringify({ consents }),\n });\n }\n}\n\nexport interface ConsentStateItem {\n consent_type: string;\n granted: boolean;\n updated_at: string;\n policy_version: string | null;\n}\n\nexport interface ConsentStateResponse {\n consents: ConsentStateItem[];\n}\n","import type { AppListResponse } from '../types/app-types';\nimport type {\n Builder,\n BuilderListResponse,\n CreateBuilderRequest,\n UpdateBuilderRequest,\n} from '../types/builder-types';\nimport { BaseApiClient } from './base';\n\n/**\n * Builders API client\n */\nexport class BuildersApi extends BaseApiClient {\n /**\n * List all builders (optionally all with superuser access)\n */\n async listBuilders(all?: boolean): Promise<BuilderListResponse> {\n const params = new URLSearchParams();\n if (all !== undefined) params.append('all', String(all));\n\n const queryString = params.toString();\n const url = `builders${queryString ? `?${queryString}` : ''}`;\n\n return this.fetch<BuilderListResponse>(url);\n }\n\n /**\n * Get a specific builder by UUID\n */\n async getBuilder(builderId: string): Promise<Builder> {\n return this.fetch<Builder>(`builders/${builderId}`);\n }\n\n /**\n * Create a new builder\n */\n async createBuilder(request: CreateBuilderRequest): Promise<Builder> {\n return this.fetch<Builder>('builders', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Update an existing builder\n */\n async updateBuilder(builderId: string, request: UpdateBuilderRequest): Promise<Builder> {\n return this.fetch<Builder>(`builders/${builderId}`, {\n method: 'PUT',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Delete a builder\n */\n async deleteBuilder(builderId: string): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(`builders/${builderId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Get apps for a specific builder\n */\n async getBuilderApps(builderId: string): Promise<AppListResponse> {\n return this.fetch<AppListResponse>(`builders/${builderId}/apps`);\n }\n}\n","import type {\n AvailabilityCheck,\n AvailabilityResponse,\n AvailableSlotsRequest,\n AvailableSlotsResponse,\n Calendar,\n CalendarEvent,\n CalendarEventFormData,\n CalendarEventType,\n CalendarEventTypeFormData,\n CalendarEventsQueryParams,\n CalendarFormData,\n CalendarSchedule,\n CalendarScheduleFormData,\n GoogleCalendarInfo,\n GoogleCalendarInsufficientScopesResponse,\n GoogleCalendarStatusResponse,\n ICalFeedTokenResponse,\n ICalFeedUrlResponse,\n LinkCalendarRequest,\n LinkCalendarResponse,\n PaginatedResponse,\n SyncCalendarResponse,\n UnlinkCalendarResponse,\n UpdateAttendeeRequest,\n} from '../types';\nimport { BaseApiClient } from './base';\n\nexport class CalendarsApi extends BaseApiClient {\n /** List calendars in a workspace with optional pagination. */\n async getCalendars(\n wid: string,\n params?: { page?: number; pageSize?: number; includeSchedules?: boolean }\n ): Promise<PaginatedResponse<Calendar>> {\n const queryParams = new URLSearchParams();\n if (params?.page) queryParams.append('page', params.page.toString());\n if (params?.pageSize) queryParams.append('pageSize', params.pageSize.toString());\n if (params?.includeSchedules) queryParams.append('includeSchedules', 'true');\n\n const queryString = queryParams.toString();\n return this.fetch<PaginatedResponse<Calendar>>(\n `w/${wid}/calendars${queryString ? `?${queryString}` : ''}`\n );\n }\n\n /** Get a single calendar by ID, optionally including its schedules. */\n async getCalendar(wid: string, id: number, includeSchedules?: boolean): Promise<Calendar> {\n const params = new URLSearchParams();\n if (includeSchedules) params.append('include_schedules', 'true');\n return this.fetch<Calendar>(\n `w/${wid}/calendars/${id}${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Create a new calendar in the workspace. */\n async createCalendar(wid: string, calendar: CalendarFormData): Promise<Calendar> {\n return this.fetch<Calendar>(`w/${wid}/calendars`, {\n method: 'POST',\n body: JSON.stringify(calendar),\n });\n }\n\n /** Update a calendar's configuration. */\n async updateCalendar(\n wid: string,\n id: number,\n calendar: Partial<CalendarFormData>\n ): Promise<Calendar> {\n return this.fetch<Calendar>(`w/${wid}/calendars/${id}`, {\n method: 'PUT',\n body: JSON.stringify(calendar),\n });\n }\n\n /** Delete a calendar by ID. */\n async deleteCalendar(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/calendars/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** List all schedules for a calendar. */\n async getCalendarSchedules(wid: string, calendarId: number): Promise<CalendarSchedule[]> {\n return this.fetch<CalendarSchedule[]>(`w/${wid}/calendars/${calendarId}/schedules`);\n }\n\n /** Create a new schedule for a calendar. */\n async createCalendarSchedule(\n wid: string,\n calendarId: number,\n schedule: CalendarScheduleFormData\n ): Promise<CalendarSchedule> {\n return this.fetch<CalendarSchedule>(`w/${wid}/calendars/${calendarId}/schedules`, {\n method: 'POST',\n body: JSON.stringify(schedule),\n });\n }\n\n /** Update an existing calendar schedule. */\n async updateCalendarSchedule(\n wid: string,\n calendarId: number,\n scheduleId: number,\n schedule: Partial<CalendarScheduleFormData>\n ): Promise<CalendarSchedule> {\n return this.fetch<CalendarSchedule>(\n `w/${wid}/calendars/${calendarId}/schedules/${scheduleId}`,\n {\n method: 'PUT',\n body: JSON.stringify(schedule),\n }\n );\n }\n\n /** Delete a calendar schedule. */\n async deleteCalendarSchedule(\n wid: string,\n calendarId: number,\n scheduleId: number\n ): Promise<void> {\n return this.fetch(`w/${wid}/calendars/${calendarId}/schedules/${scheduleId}`, {\n method: 'DELETE',\n });\n }\n\n /** Check availability for a time range on a calendar. */\n async checkAvailability(\n wid: string,\n calendarId: number,\n check: AvailabilityCheck\n ): Promise<AvailabilityResponse> {\n return this.fetch<AvailabilityResponse>(`w/${wid}/calendars/${calendarId}/availability`, {\n method: 'POST',\n body: JSON.stringify(check),\n });\n }\n\n /** Get available booking slots for a calendar within a date range. */\n async getAvailableSlots(\n wid: string,\n calendarId: number,\n request: AvailableSlotsRequest\n ): Promise<AvailableSlotsResponse> {\n return this.fetch<AvailableSlotsResponse>(\n `w/${wid}/calendars/${calendarId}/available-slots`,\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n }\n\n /** List calendar events with optional filtering by date range, status, and member. */\n async getCalendarEvents(\n wid: string,\n options: CalendarEventsQueryParams = {}\n ): Promise<PaginatedResponse<CalendarEvent>> {\n const params = new URLSearchParams();\n if (options.calendarId) params.append('calendarId', options.calendarId.toString());\n if (options.startDate) params.append('startDate', options.startDate);\n if (options.endDate) params.append('endDate', options.endDate);\n if (options.status) params.append('status', options.status);\n if (options.memberId) params.append('memberId', options.memberId.toString());\n if (options.limit) params.append('limit', options.limit.toString());\n if (options.offset) params.append('offset', options.offset.toString());\n\n return this.fetch<PaginatedResponse<CalendarEvent>>(\n `w/${wid}/calendar-events${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Get a single calendar event by ID. */\n async getCalendarEvent(wid: string, eventId: number): Promise<CalendarEvent> {\n return this.fetch<CalendarEvent>(`w/${wid}/calendar-events/${eventId}`);\n }\n\n /** Create a new calendar event. */\n async createCalendarEvent(wid: string, event: CalendarEventFormData): Promise<CalendarEvent> {\n return this.fetch<CalendarEvent>(`w/${wid}/calendar-events`, {\n method: 'POST',\n body: JSON.stringify(event),\n });\n }\n\n /** Update an existing calendar event. */\n async updateCalendarEvent(\n wid: string,\n eventId: number,\n event: Partial<CalendarEventFormData>\n ): Promise<CalendarEvent> {\n return this.fetch<CalendarEvent>(`w/${wid}/calendar-events/${eventId}`, {\n method: 'PUT',\n body: JSON.stringify(event),\n });\n }\n\n /** Cancel a calendar event with an optional reason. */\n async cancelCalendarEvent(\n wid: string,\n eventId: number,\n reason?: string\n ): Promise<CalendarEvent> {\n return this.fetch<CalendarEvent>(`w/${wid}/calendar-events/${eventId}/cancel`, {\n method: 'POST',\n body: JSON.stringify({ cancellationReason: reason }),\n });\n }\n\n /** Delete a calendar event by ID. */\n async deleteCalendarEvent(wid: string, eventId: number): Promise<void> {\n return this.fetch(`w/${wid}/calendar-events/${eventId}`, {\n method: 'DELETE',\n });\n }\n\n /** Update an attendee's details on a calendar event. */\n async updateEventAttendee(\n wid: string,\n eventId: number,\n attendeeId: number,\n update: UpdateAttendeeRequest\n ): Promise<void> {\n return this.fetch(`w/${wid}/calendar-events/${eventId}/attendees/${attendeeId}`, {\n method: 'PUT',\n body: JSON.stringify(update),\n });\n }\n\n /** List all calendar event types in the workspace. */\n async getEventTypes(wid: string): Promise<PaginatedResponse<CalendarEventType>> {\n return this.fetch<PaginatedResponse<CalendarEventType>>(`w/${wid}/calendar-event-types`);\n }\n\n /** Get a single calendar event type by ID. */\n async getEventType(wid: string, id: number): Promise<CalendarEventType> {\n return this.fetch<CalendarEventType>(`w/${wid}/calendar-event-types/${id}`);\n }\n\n /** Create a new calendar event type. */\n async createEventType(\n wid: string,\n eventType: CalendarEventTypeFormData\n ): Promise<CalendarEventType> {\n return this.fetch<CalendarEventType>(`w/${wid}/calendar-event-types`, {\n method: 'POST',\n body: JSON.stringify(eventType),\n });\n }\n\n /** Update an existing calendar event type. */\n async updateEventType(\n wid: string,\n id: number,\n eventType: Partial<CalendarEventTypeFormData>\n ): Promise<CalendarEventType> {\n return this.fetch<CalendarEventType>(`w/${wid}/calendar-event-types/${id}`, {\n method: 'PUT',\n body: JSON.stringify(eventType),\n });\n }\n\n /** Delete a calendar event type by ID. */\n async deleteEventType(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/calendar-event-types/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Generate or regenerate an iCal feed token for a calendar. */\n async generateICalToken(\n wid: string,\n calendarId: number,\n regenerate: boolean = false\n ): Promise<ICalFeedTokenResponse> {\n return this.fetch<ICalFeedTokenResponse>(`w/${wid}/calendars/${calendarId}/ical-token`, {\n method: 'POST',\n body: JSON.stringify({ regenerate }),\n });\n }\n\n /** Revoke the iCal feed token for a calendar, disabling external feed access. */\n async revokeICalToken(\n wid: string,\n calendarId: number\n ): Promise<{ success: boolean; message: string }> {\n return this.fetch<{ success: boolean; message: string }>(\n `w/${wid}/calendars/${calendarId}/ical-token`,\n {\n method: 'DELETE',\n }\n );\n }\n\n /** Get the iCal feed URL for a calendar. */\n async getICalFeedUrl(wid: string, calendarId: number): Promise<ICalFeedUrlResponse> {\n return this.fetch<ICalFeedUrlResponse>(`w/${wid}/calendars/${calendarId}/ical-url`);\n }\n\n /** List Google Calendars available for linking. */\n async listGoogleCalendars(wid: string): Promise<GoogleCalendarInfo[]> {\n return this.fetch<GoogleCalendarInfo[]>(`w/${wid}/calendars/google/list`);\n }\n\n /** Get the Google Calendar integration status for the workspace. */\n async getGoogleCalendarStatus(\n wid: string\n ): Promise<GoogleCalendarStatusResponse | GoogleCalendarInsufficientScopesResponse> {\n return this.fetch<GoogleCalendarStatusResponse | GoogleCalendarInsufficientScopesResponse>(\n `w/${wid}/calendars/google/status`\n );\n }\n\n /** Link a calendar to a Google Calendar for two-way sync. */\n async linkCalendarToGoogle(\n wid: string,\n calendarId: number,\n request: LinkCalendarRequest\n ): Promise<LinkCalendarResponse> {\n return this.fetch<LinkCalendarResponse>(`w/${wid}/calendars/${calendarId}/google/link`, {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /** Unlink a calendar from its connected Google Calendar. */\n async unlinkCalendarFromGoogle(\n wid: string,\n calendarId: number\n ): Promise<UnlinkCalendarResponse> {\n return this.fetch<UnlinkCalendarResponse>(`w/${wid}/calendars/${calendarId}/google/link`, {\n method: 'DELETE',\n });\n }\n\n /** Trigger a manual sync between a calendar and its linked Google Calendar. */\n async syncCalendarWithGoogle(wid: string, calendarId: number): Promise<SyncCalendarResponse> {\n return this.fetch<SyncCalendarResponse>(`w/${wid}/calendars/${calendarId}/google/sync`, {\n method: 'POST',\n });\n }\n}\n","import {\n InitiateCallRequest,\n InitiateCallResponse,\n MessageTimingResponse,\n VoiceTokenResponse,\n} from '../types';\nimport { BaseApiClient } from './base';\n\nexport class CallsApi extends BaseApiClient {\n /** Initiate a new outbound call. */\n async initiateCall(wid: string, request: InitiateCallRequest): Promise<InitiateCallResponse> {\n return this.fetch<InitiateCallResponse>(`w/${wid}/call`, {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /** Get a voice authentication token for real-time audio. */\n async getVoiceToken(wid: string): Promise<VoiceTokenResponse> {\n return this.fetch<VoiceTokenResponse>(`w/${wid}/voice/token`);\n }\n\n /** Get message timing data for a chat recording. */\n async getMessageTiming(wid: string, chatId: number): Promise<MessageTimingResponse> {\n return this.fetch<MessageTimingResponse>(`w/${wid}/recordings/chat/${chatId}/message-timing`);\n }\n}\n","import { BaseApiClient } from './base';\nimport type { CELContextRequest, CELContextResponse } from '../types/cel-types';\n\nexport class CELApi extends BaseApiClient {\n /**\n * Get available CEL context for expression editing.\n *\n * Returns variables, custom functions, and operators appropriate for the given context\n * (event type, data type, context type, etc.).\n */\n async getCelContext(wid: string, request: CELContextRequest): Promise<CELContextResponse> {\n return this.fetch<CELContextResponse>(`w/${wid}/cel/context`, {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n}\n","import {\n Chat,\n ChatFilter,\n ChatFilterFormData,\n ChatFormData,\n CreatePhoneVoiceOutboundChatInput,\n ChatLabel,\n ChatLabelFormData,\n ChatMessage,\n ChatTokenUsage,\n GetChatsOptions,\n OutboundCallResponse,\n PaginatedResponse,\n PhoneCall,\n TodoItem,\n ToolsResponse,\n} from '../types';\nimport { BaseApiClient } from './base';\n\nexport class ChatsApi extends BaseApiClient {\n /**\n * Build URLSearchParams from GetChatsOptions.\n * Excludes pagination params when includePagination is false.\n */\n private buildChatsQueryParams(\n options: GetChatsOptions,\n includePagination: boolean = true\n ): URLSearchParams {\n const params = new URLSearchParams();\n\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n\n if (includePagination) {\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n }\n\n if (options.mine !== undefined) params.append('mine', options.mine.toString());\n if (options.needsResponse !== undefined)\n params.append('needsResponse', options.needsResponse.toString());\n if (options.paused !== undefined) params.append('paused', options.paused.toString());\n if (options.archived !== undefined) params.append('archived', options.archived.toString());\n if (options.channel) params.append('channel', options.channel);\n\n // Default chatType to \"assignment\" if not specified\n const chatType = options.chatType ?? 'assignment';\n params.append('chatType', chatType);\n\n if (options.memberId !== undefined) params.append('memberId', options.memberId.toString());\n if (options.assistantMemberId !== undefined)\n params.append('assistantMemberId', options.assistantMemberId.toString());\n if (options.search) params.append('search', options.search);\n if (options.isTest !== undefined) params.append('isTest', options.isTest.toString());\n if (options.isAnonymous !== undefined)\n params.append('isAnonymous', options.isAnonymous.toString());\n if (options.filters && options.filters.length > 0) {\n params.append('filters', JSON.stringify(options.filters));\n }\n if (options.createdAfter) params.append('createdAfter', options.createdAfter);\n if (options.createdBefore) params.append('createdBefore', options.createdBefore);\n\n return params;\n }\n\n /** List chats with optional filtering, sorting, and pagination. */\n async getChats(wid: string, options: GetChatsOptions = {}): Promise<PaginatedResponse<Chat>> {\n const params = this.buildChatsQueryParams(options, true);\n const queryString = params.toString();\n return this.fetch<PaginatedResponse<Chat>>(\n `w/${wid}/chats${queryString ? `?${queryString}` : ''}`\n );\n }\n\n /** Export multiple chats as a downloadable blob. */\n async exportChats(wid: string, options: GetChatsOptions = {}): Promise<Blob> {\n const params = this.buildChatsQueryParams(options, false);\n const queryString = params.toString();\n const response = await this.fetchRaw(\n `w/${wid}/chats/export${queryString ? `?${queryString}` : ''}`\n );\n return response.blob();\n }\n\n /** Export a single chat in the specified format as a downloadable blob. */\n async exportChat(wid: string, chatId: number, format: 'jsonl' = 'jsonl'): Promise<Blob> {\n const response = await this.fetchRaw(`w/${wid}/chats/${chatId}/export?format=${format}`);\n return response.blob();\n }\n\n /** Get a single chat by ID. */\n async getChat(wid: string, id: number): Promise<Chat> {\n return this.fetch<Chat>(`w/${wid}/chats/${id}`);\n }\n\n /** Get token usage statistics for a chat. */\n async getChatTokenUsage(wid: string, chatId: number): Promise<ChatTokenUsage> {\n return this.fetch<ChatTokenUsage>(`w/${wid}/chats/${chatId}/token-usage`);\n }\n\n /** Get todo items extracted from a chat. */\n async getChatTodos(wid: string, chatId: number): Promise<{ todos: TodoItem[] }> {\n return this.fetch<{ todos: TodoItem[] }>(`w/${wid}/chats/${chatId}/todos`);\n }\n\n /** Get loaded and revealed skills for a chat. */\n async getChatSkills(\n wid: string,\n chatId: number\n ): Promise<{ loadedSkills: string[]; revealedSkills: string[] }> {\n return this.fetch<{ loadedSkills: string[]; revealedSkills: string[] }>(\n `w/${wid}/chats/${chatId}/skills`\n );\n }\n\n /** List chat IDs that need a response. */\n async getChatsNeedsResponse(wid: string): Promise<number[]> {\n return this.fetch<number[]>(`w/${wid}/chats/needs-response`);\n }\n\n /** Get daily chat creation statistics with optional filtering. */\n async getChatsDailyCreationStats(\n wid: string,\n options?: {\n archived?: boolean;\n isTest?: boolean;\n }\n ): Promise<{\n dailyStats: Array<{\n date: string;\n count: number;\n assignment?: number;\n manager?: number;\n developer?: number;\n testing?: number;\n }>;\n }> {\n const params = new URLSearchParams();\n if (options?.archived !== undefined) params.append('archived', options.archived.toString());\n if (options?.isTest !== undefined) params.append('isTest', options.isTest.toString());\n\n const queryString = params.toString();\n return this.fetch(\n `w/${wid}/chats/stats/daily-creation${queryString ? `?${queryString}` : ''}`\n );\n }\n\n /** Archive a chat. */\n async archiveChat(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/chats/${id}/archive`, {\n method: 'PUT',\n });\n }\n\n /** Unarchive a chat. */\n async unarchiveChat(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/chats/${id}/unarchive`, {\n method: 'PUT',\n });\n }\n\n /** Create a new chat. */\n async createChat(wid: string, chat: ChatFormData): Promise<Chat> {\n return this.fetch<Chat>(`w/${wid}/chats`, {\n method: 'POST',\n body: JSON.stringify(chat),\n });\n }\n\n /**\n * Create a workflow assignment chat on `phone-voice` and initiate an outbound call\n * to the member (same as POST /chats with channel phone-voice + send_initial_message).\n */\n async createWorkflowOutboundVoiceChat(\n wid: string,\n input: CreatePhoneVoiceOutboundChatInput\n ): Promise<Chat> {\n const { memberId, workflowId, phoneNumberId, title, chatType } = input;\n return this.createChat(wid, {\n channel: 'phone-voice',\n chatType: chatType ?? 'assignment',\n workflowId,\n phoneNumberId,\n memberId,\n title: title ?? `Outbound voice → member ${memberId}`,\n participants: [{ memberId, role: 'user' }],\n });\n }\n\n /** Delete a chat, optionally providing a reason. */\n async deleteChat(wid: string, id: number, reason?: string): Promise<void> {\n return this.fetch(`w/${wid}/chats/${id}`, {\n method: 'DELETE',\n body: reason ? JSON.stringify({ reason }) : undefined,\n });\n }\n\n /** Update a chat's properties. */\n async updateChat(wid: string, id: number, chat: Partial<ChatFormData>): Promise<Chat> {\n return this.fetch<Chat>(`w/${wid}/chats/${id}`, {\n method: 'PUT',\n body: JSON.stringify(chat),\n });\n }\n\n /** Update the mute status of a chat. */\n async updateChatMute(\n wid: string,\n id: number,\n muted: boolean\n ): Promise<{ id: number; muted: boolean }> {\n return this.fetch<{ id: number; muted: boolean }>(`w/${wid}/chats/${id}/mute`, {\n method: 'PUT',\n body: JSON.stringify({ muted }),\n });\n }\n\n /** Update the needs-response flag on a chat. */\n async updateChatNeedsResponse(\n wid: string,\n id: number,\n needsResponse: boolean\n ): Promise<{ id: number; needsResponse: boolean }> {\n return this.fetch<{ id: number; needsResponse: boolean }>(\n `w/${wid}/chats/${id}/needs-response`,\n {\n method: 'PUT',\n body: JSON.stringify({ needsResponse }),\n }\n );\n }\n\n /** Generate an AI summary for a chat, optionally updating its labels. */\n async summarizeChat(wid: string, id: number, updateLabels?: boolean): Promise<Chat> {\n const params = new URLSearchParams();\n if (updateLabels !== undefined) {\n params.append('update_labels', updateLabels.toString());\n }\n return this.fetch<Chat>(\n `w/${wid}/chats/${id}/summarize${params.toString() ? `?${params.toString()}` : ''}`,\n {\n method: 'POST',\n }\n );\n }\n\n /** List messages in a chat with optional pagination. */\n async getChatMessages(\n wid: string,\n id: number,\n limit?: number,\n offset?: number\n ): Promise<ChatMessage[]> {\n const params = new URLSearchParams();\n if (limit) params.append('limit', limit.toString());\n if (offset) params.append('offset', offset.toString());\n return this.fetch<ChatMessage[]>(\n `w/${wid}/chats/${id}/messages${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** List messages associated with a specific tool call in a chat. */\n async getChatToolCallMessages(\n wid: string,\n chatId: number,\n callId: string,\n limit: number = 100,\n offset: number = 0\n ): Promise<ChatMessage[]> {\n const params = new URLSearchParams();\n params.append('limit', limit.toString());\n params.append('offset', offset.toString());\n return this.fetch<ChatMessage[]>(\n `w/${wid}/chats/${chatId}/tool-calls/${callId}/messages?${params.toString()}`\n );\n }\n\n /** Get the tools available in a chat. */\n async getChatTools(wid: string, chatId: number): Promise<ToolsResponse> {\n return this.fetch<ToolsResponse>(`w/${wid}/chats/${chatId}/tools`);\n }\n\n /** Initiate an outbound phone call from a chat. */\n async initiateOutboundCall(\n wid: string,\n chatId: number,\n phoneNumberId: number\n ): Promise<OutboundCallResponse> {\n return this.fetch(`w/${wid}/chats/${chatId}/outbound-call`, {\n method: 'POST',\n body: JSON.stringify({ phoneNumberId, chatId }),\n });\n }\n\n /** Send a message as the assistant in a chat, optionally including tool calls. */\n async sendAssistantMessage(\n wid: string,\n chatId: number,\n message: string,\n toolCalls?: Array<{\n type: 'function';\n id: string;\n function: {\n name: string;\n arguments: string;\n };\n }>\n ): Promise<{\n success: boolean;\n message: string;\n message_id: string;\n message_uuid: string;\n role: string;\n content: string;\n received_at: string | null;\n }> {\n return this.fetch(`w/${wid}/chats/${chatId}/send-assistant-message`, {\n method: 'POST',\n body: JSON.stringify({\n message,\n tool_calls: toolCalls,\n }),\n });\n }\n\n /** Rate a chat message by its UUID. */\n async rateMessage(\n wid: string,\n chatId: number,\n messageUuid: string,\n rating: number\n ): Promise<{ status: string; detail?: string }> {\n return this.fetch<{ status: string; detail?: string }>(\n `w/${wid}/chats/${chatId}/messages/${messageUuid}/rate`,\n {\n method: 'POST',\n body: JSON.stringify({ rating }),\n }\n );\n }\n\n /**\n * Find or create a DM chat with a specific member.\n * Returns the Chat object for the DM conversation.\n */\n async findOrCreateDMChat(wid: string, memberId: number): Promise<Chat> {\n return this.fetch<Chat>(`w/${wid}/chats/dm`, {\n method: 'POST',\n body: JSON.stringify({ memberId }),\n });\n }\n\n /**\n * Send a user message in a chat (works for DM and regular chats).\n */\n async sendChatMessage(wid: string, chatId: number, content: string): Promise<ChatMessage> {\n return this.fetch<ChatMessage>(`w/${wid}/chats/${chatId}/messages`, {\n method: 'POST',\n body: JSON.stringify({ content }),\n });\n }\n\n /** Get assignment tasks linked to a chat. */\n async getChatAssignmentTasks(\n wid: string,\n chatId: number\n ): Promise<\n Array<{\n id: number;\n name: string;\n isCurrent: boolean;\n }>\n > {\n return this.fetch(`w/${wid}/chats/${chatId}/assignment-tasks`);\n }\n\n /** Create a chat completion using the OpenAI-compatible API (used by eval scripts). */\n async createChatCompletion(\n wid: string,\n chatId: number,\n data: {\n model?: string;\n // Optional ``id`` on each message lets the backend use the latest\n // user message's ID as the per-turn discriminator for the Temporal\n // inference workflow. Same-id retries attach to the same workflow\n // (idempotent reload); distinct ids start distinct runs even when\n // the prior turn's tail is still finalizing.\n messages: Array<{ role: string; content: string; id?: string }>;\n }\n ): Promise<{\n id: string;\n object: string;\n created: number;\n model: string;\n choices: Array<{\n index: number;\n message: {\n role: string;\n content: string;\n };\n finish_reason: string;\n }>;\n usage?: {\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n };\n }> {\n return this.fetch(`w/${wid}/web-chat/${chatId}/chat/completions?stream=false`, {\n method: 'POST',\n body: JSON.stringify({\n model: data.model || 'gpt-4',\n messages: data.messages,\n }),\n });\n }\n\n /** List all chat labels in a workspace. */\n async getChatLabels(wid: string): Promise<ChatLabel[]> {\n return this.fetch<ChatLabel[]>(`w/${wid}/chat-labels`);\n }\n\n /** Get a chat label by ID. */\n async getChatLabel(wid: string, id: number): Promise<ChatLabel> {\n return this.fetch<ChatLabel>(`w/${wid}/chat-labels/${id}`);\n }\n\n /** Get a chat label by UUID. */\n async getChatLabelByUuid(wid: string, uuid: string): Promise<ChatLabel> {\n return this.fetch<ChatLabel>(`w/${wid}/chat-labels/${uuid}`);\n }\n\n /** Create a new chat label. */\n async createChatLabel(wid: string, label: ChatLabelFormData): Promise<ChatLabel> {\n return this.fetch<ChatLabel>(`w/${wid}/chat-labels`, {\n method: 'POST',\n body: JSON.stringify(label),\n });\n }\n\n /** Update a chat label. */\n async updateChatLabel(\n wid: string,\n id: number,\n label: Partial<ChatLabelFormData>\n ): Promise<ChatLabel> {\n return this.fetch<ChatLabel>(`w/${wid}/chat-labels/${id}`, {\n method: 'PUT',\n body: JSON.stringify(label),\n });\n }\n\n /** Delete a chat label. */\n async deleteChatLabel(wid: string, id: number): Promise<void> {\n return this.fetch<void>(`w/${wid}/chat-labels/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Get distinct tool call names used across workspace chats. */\n async getToolCallNames(wid: string): Promise<string[]> {\n return this.fetch<string[]>(`w/${wid}/chats/tool-call-names`);\n }\n\n /** List all chat filters in a workspace. */\n async getChatFilters(wid: string): Promise<ChatFilter[]> {\n return this.fetch<ChatFilter[]>(`w/${wid}/chat-filters`);\n }\n\n /** Get a chat filter by ID. */\n async getChatFilter(wid: string, id: number): Promise<ChatFilter> {\n return this.fetch<ChatFilter>(`w/${wid}/chat-filters/${id}`);\n }\n\n /** Get a chat filter by UUID. */\n async getChatFilterByUuid(wid: string, uuid: string): Promise<ChatFilter> {\n return this.fetch<ChatFilter>(`w/${wid}/chat-filters/by-uuid/${uuid}`);\n }\n\n /** Create a new chat filter. */\n async createChatFilter(wid: string, filter: ChatFilterFormData): Promise<ChatFilter> {\n return this.fetch<ChatFilter>(`w/${wid}/chat-filters`, {\n method: 'POST',\n body: JSON.stringify(filter),\n });\n }\n\n /** Update a chat filter. */\n async updateChatFilter(\n wid: string,\n id: number,\n filter: Partial<ChatFilterFormData>\n ): Promise<ChatFilter> {\n return this.fetch<ChatFilter>(`w/${wid}/chat-filters/${id}`, {\n method: 'PUT',\n body: JSON.stringify(filter),\n });\n }\n\n /** Delete a chat filter. */\n async deleteChatFilter(wid: string, id: number): Promise<void> {\n return this.fetch<void>(`w/${wid}/chat-filters/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Get the count of chats matching a saved filter. */\n async getChatFilterCount(wid: string, filterId: number): Promise<{ count: number }> {\n return this.fetch<{ count: number }>(`w/${wid}/chat-filters/${filterId}/count`);\n }\n\n /** Get phone calls associated with a chat. */\n async getChatPhoneCalls(wid: string, chatId: number): Promise<PhoneCall[]> {\n return this.fetch<PhoneCall[]>(`w/${wid}/chats/${chatId}/phone-calls`);\n }\n}\n","import { BaseApiClient } from './base';\n\nexport interface ConfluenceConnectionStatus {\n connectionId: number | null;\n configured: boolean;\n connected: boolean;\n enabled: boolean;\n state: string | null;\n siteUrl: string | null;\n cloudId: string | null;\n authorizeUrl: string | null;\n error: string | null;\n creatorId: number | null;\n authorizedByMemberId: number | null;\n authorizedAt: string | null;\n}\n\nexport interface ConfigureConfluenceRequest {\n clientId: string;\n clientSecret: string;\n}\n\nexport interface ConfluenceSpace {\n id: string;\n key: string;\n name: string;\n type: string;\n}\n\nexport interface ConfluenceSpacesResponse {\n results: ConfluenceSpace[];\n cursor: string | null;\n hasMore: boolean;\n}\n\nexport interface ConfluencePage {\n id: string;\n title: string;\n status: string;\n parentId: string | null;\n}\n\nexport interface ConfluencePagesResponse {\n results: ConfluencePage[];\n cursor: string | null;\n hasMore: boolean;\n}\n\nexport class ConfluenceApi extends BaseApiClient {\n async configureConfluence(\n wid: string,\n data: ConfigureConfluenceRequest\n ): Promise<ConfluenceConnectionStatus> {\n return this.fetch<ConfluenceConnectionStatus>(\n `w/${wid}/app-connections/confluence/configure`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n\n async startConfluenceOAuth(wid: string): Promise<ConfluenceConnectionStatus> {\n return this.fetch<ConfluenceConnectionStatus>(\n `w/${wid}/app-connections/confluence/oauth/start`,\n {\n method: 'POST',\n }\n );\n }\n\n async getConfluenceStatus(wid: string): Promise<ConfluenceConnectionStatus> {\n return this.fetch<ConfluenceConnectionStatus>(`w/${wid}/app-connections/confluence/status`);\n }\n\n async disconnectConfluence(wid: string): Promise<ConfluenceConnectionStatus> {\n return this.fetch<ConfluenceConnectionStatus>(\n `w/${wid}/app-connections/confluence/disconnect`,\n {\n method: 'DELETE',\n }\n );\n }\n\n async disableConfluence(wid: string): Promise<ConfluenceConnectionStatus> {\n return this.fetch<ConfluenceConnectionStatus>(`w/${wid}/app-connections/confluence/disable`, {\n method: 'POST',\n });\n }\n\n async enableConfluence(wid: string): Promise<ConfluenceConnectionStatus> {\n return this.fetch<ConfluenceConnectionStatus>(`w/${wid}/app-connections/confluence/enable`, {\n method: 'POST',\n });\n }\n\n async deleteConfluence(wid: string): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/app-connections/confluence/delete`, {\n method: 'DELETE',\n });\n }\n\n async listConfluenceSpaces(\n wid: string,\n params?: { cursor?: string; limit?: number }\n ): Promise<ConfluenceSpacesResponse> {\n const qs = new URLSearchParams();\n if (params?.cursor) qs.set('cursor', params.cursor);\n if (params?.limit) qs.set('limit', String(params.limit));\n const query = qs.toString();\n return this.fetch<ConfluenceSpacesResponse>(\n `w/${wid}/app-connections/confluence/spaces${query ? `?${query}` : ''}`\n );\n }\n\n async listConfluencePages(\n wid: string,\n spaceId: string,\n params?: { cursor?: string; limit?: number }\n ): Promise<ConfluencePagesResponse> {\n const qs = new URLSearchParams({ space_id: spaceId });\n if (params?.cursor) qs.set('cursor', params.cursor);\n if (params?.limit) qs.set('limit', String(params.limit));\n return this.fetch<ConfluencePagesResponse>(\n `w/${wid}/app-connections/confluence/pages?${qs.toString()}`\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport {\n CustomToolkit,\n CustomToolkitFormData,\n CustomToolkitUpdateFormData,\n CustomTool,\n CustomToolFormData,\n CustomToolUpdateFormData,\n} from '../types';\n\nexport class CustomToolkitsApi extends BaseApiClient {\n /**\n * List all custom toolkits in a workspace\n */\n async getCustomToolkits(wid: string): Promise<CustomToolkit[]> {\n return this.fetch<CustomToolkit[]>(`w/${wid}/custom-toolkits`);\n }\n\n /**\n * Get a specific custom toolkit\n */\n async getCustomToolkit(wid: string, toolkitId: number): Promise<CustomToolkit> {\n return this.fetch<CustomToolkit>(`w/${wid}/custom-toolkits/${toolkitId}`);\n }\n\n /**\n * Create a new custom toolkit\n */\n async createCustomToolkit(wid: string, data: CustomToolkitFormData): Promise<CustomToolkit> {\n return this.fetch<CustomToolkit>(`w/${wid}/custom-toolkits`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Update an existing custom toolkit\n */\n async updateCustomToolkit(\n wid: string,\n toolkitId: number,\n data: CustomToolkitUpdateFormData\n ): Promise<CustomToolkit> {\n return this.fetch<CustomToolkit>(`w/${wid}/custom-toolkits/${toolkitId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Delete a custom toolkit\n */\n async deleteCustomToolkit(wid: string, toolkitId: number): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/custom-toolkits/${toolkitId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Enable a custom toolkit\n */\n async enableCustomToolkit(wid: string, toolkitId: number): Promise<CustomToolkit> {\n return this.fetch<CustomToolkit>(`w/${wid}/custom-toolkits/${toolkitId}/enable`, {\n method: 'POST',\n });\n }\n\n /**\n * Disable a custom toolkit\n */\n async disableCustomToolkit(wid: string, toolkitId: number): Promise<CustomToolkit> {\n return this.fetch<CustomToolkit>(`w/${wid}/custom-toolkits/${toolkitId}/disable`, {\n method: 'POST',\n });\n }\n\n /**\n * Create a new custom tool in a toolkit\n */\n async createCustomTool(\n wid: string,\n toolkitId: number,\n data: CustomToolFormData\n ): Promise<CustomTool> {\n return this.fetch<CustomTool>(`w/${wid}/custom-toolkits/${toolkitId}/tools`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Update an existing custom tool\n */\n async updateCustomTool(\n wid: string,\n toolkitId: number,\n toolId: number,\n data: CustomToolUpdateFormData\n ): Promise<CustomTool> {\n return this.fetch<CustomTool>(`w/${wid}/custom-toolkits/${toolkitId}/tools/${toolId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Delete a custom tool\n */\n async deleteCustomTool(\n wid: string,\n toolkitId: number,\n toolId: number\n ): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(\n `w/${wid}/custom-toolkits/${toolkitId}/tools/${toolId}`,\n {\n method: 'DELETE',\n }\n );\n }\n}\n","import {\n DataRecord,\n DataRecordFormData,\n DataRecordsPaginatedResponse,\n DataRecordUpdate,\n DataType,\n DataTypeFormData,\n} from '../types';\nimport { BaseApiClient } from './base';\n\nexport class DataTypesApi extends BaseApiClient {\n /** List all data types for a workspace, optionally filtering by archived status. */\n async getDataTypes(wid: string, options?: { archived?: boolean }): Promise<DataType[]> {\n const params = new URLSearchParams();\n if (options?.archived !== undefined) {\n params.append('archived', options.archived.toString());\n }\n const queryString = params.toString();\n return this.fetch<DataType[]>(`w/${wid}/data-types${queryString ? `?${queryString}` : ''}`);\n }\n\n /** Get a single data type by ID. */\n async getDataType(wid: string, id: number): Promise<DataType> {\n return this.fetch<DataType>(`w/${wid}/data-types/${id}`);\n }\n\n /** Get a single data type by its slug. */\n async getDataTypeBySlug(wid: string, slug: string): Promise<DataType> {\n return this.fetch<DataType>(`w/${wid}/data-types/slug/${slug}`);\n }\n\n /** Create a new data type definition in the workspace. */\n async createDataType(wid: string, dataType: DataTypeFormData): Promise<DataType> {\n return this.fetch<DataType>(`w/${wid}/data-types`, {\n method: 'POST',\n body: JSON.stringify(dataType),\n });\n }\n\n /** Update an existing data type definition. */\n async updateDataType(\n wid: string,\n id: number,\n dataType: Partial<DataTypeFormData>\n ): Promise<DataType> {\n return this.fetch<DataType>(`w/${wid}/data-types/${id}`, {\n method: 'PUT',\n body: JSON.stringify(dataType),\n });\n }\n\n /** Delete a data type definition by ID. */\n async deleteDataType(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/data-types/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Archive a data type, hiding it from default listings. */\n async archiveDataType(wid: string, id: number): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/data-types/${id}/archive`, {\n method: 'POST',\n });\n }\n\n /** Restore an archived data type back to active status. */\n async unarchiveDataType(wid: string, id: number): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/data-types/${id}/unarchive`, {\n method: 'POST',\n });\n }\n\n /** Clone a data type with a new name and slug. */\n async cloneDataType(\n wid: string,\n id: number,\n data: { name: string; slug: string }\n ): Promise<DataType> {\n return this.fetch<DataType>(`w/${wid}/data-types/${id}/clone`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** List data records for a data type with optional filtering and pagination. */\n async getDataRecords(\n wid: string,\n dataTypeId: number,\n options?: {\n memberId?: number;\n search?: string;\n searchField?: string;\n page?: number;\n pageSize?: number;\n }\n ): Promise<DataRecordsPaginatedResponse> {\n const params = new URLSearchParams();\n if (options?.memberId !== undefined) params.append('member_id', options.memberId.toString());\n if (options?.search) params.append('search', options.search);\n if (options?.searchField) params.append('search_field', options.searchField);\n if (options?.page) params.append('page', options.page.toString());\n if (options?.pageSize) params.append('page_size', options.pageSize.toString());\n\n return this.fetch<DataRecordsPaginatedResponse>(\n `w/${wid}/data-types/${dataTypeId}/records${params?.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Get a single data record by ID. */\n async getDataRecord(wid: string, recordId: number): Promise<DataRecord> {\n return this.fetch<DataRecord>(`w/${wid}/data-types/records/${recordId}`);\n }\n\n /** Create a new data record under the specified data type. */\n async createDataRecord(\n wid: string,\n dataTypeId: number,\n record: DataRecordFormData\n ): Promise<DataRecord> {\n return this.fetch<DataRecord>(`w/${wid}/data-types/${dataTypeId}/records`, {\n method: 'POST',\n body: JSON.stringify(record),\n });\n }\n\n /** Update an existing data record's field values. */\n async updateDataRecord(\n wid: string,\n dataTypeId: number,\n recordId: number,\n record: DataRecordFormData\n ): Promise<DataRecord> {\n return this.fetch<DataRecord>(`w/${wid}/data-types/${dataTypeId}/records/${recordId}`, {\n method: 'PUT',\n body: JSON.stringify(record),\n });\n }\n\n /** Delete a data record by ID. */\n async deleteDataRecord(wid: string, dataTypeId: number, recordId: number): Promise<void> {\n return this.fetch(`w/${wid}/data-types/${dataTypeId}/records/${recordId}`, {\n method: 'DELETE',\n });\n }\n\n /** Get the change history for a data record. */\n async getDataRecordChanges(\n wid: string,\n dataTypeId: number,\n recordId: number\n ): Promise<DataRecordUpdate[]> {\n return this.fetch<DataRecordUpdate[]>(\n `w/${wid}/data-types/${dataTypeId}/records/${recordId}/changes`\n );\n }\n\n /** Upsert a data record by external ID, creating or updating as needed. */\n async upsertDataRecord(\n wid: string,\n dataTypeId: number,\n externalId: string | number,\n data: {\n fieldValues: Record<string, any>;\n memberId?: number | null;\n memberExternalId?: string | null;\n }\n ): Promise<DataRecord> {\n return this.fetch<DataRecord>(`w/${wid}/data-types/${dataTypeId}/upsert/${externalId}`, {\n method: 'POST',\n body: JSON.stringify({\n externalId,\n fieldValues: data.fieldValues,\n memberId: data.memberId,\n memberExternalId: data.memberExternalId,\n }),\n });\n }\n\n /** Toggle search indexing for a data type field. */\n async toggleFieldIndex(\n wid: string,\n dataTypeId: number,\n fieldSlug: string,\n shouldIndex: boolean\n ): Promise<{ status: string; message: string; indexStatus?: string }> {\n return this.fetch(`w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/toggle-index`, {\n method: 'POST',\n body: JSON.stringify({ shouldIndex: shouldIndex }),\n });\n }\n\n /** Get the index status for a data type field. */\n async getFieldIndexStatus(\n wid: string,\n dataTypeId: number,\n fieldSlug: string\n ): Promise<{\n fieldSlug: string;\n fieldName: string;\n shouldIndex: string;\n indexStatus: string;\n }> {\n return this.fetch(`w/${wid}/data-types/${dataTypeId}/fields/${fieldSlug}/index-status`);\n }\n\n /**\n * Validate if a data type slug is available.\n * Returns availability and a suggested alternative if taken.\n */\n async validateDataTypeSlug(\n wid: string,\n slug: string,\n excludeId?: number\n ): Promise<{ available: boolean; suggestedSlug?: string }> {\n return this.fetch(`w/${wid}/data-types/validate-slug`, {\n method: 'POST',\n body: JSON.stringify({ slug, excludeId }),\n });\n }\n\n /**\n * Get record counts per data type for a specific member.\n * Returns a mapping of data type ID to record count.\n */\n async getMemberRecordCounts(\n wid: string,\n memberId: number\n ): Promise<{ counts: Record<number, number> }> {\n return this.fetch(`w/${wid}/data-types/member-record-counts?member_id=${memberId}`);\n }\n}\n","import { BaseApiClient } from './base';\nimport {\n DiscordBot,\n CreateDiscordBotRequest,\n UpdateDiscordBotRequest,\n DiscordThread,\n DiscordGuild,\n DiscordBotAccount,\n MemberCredential,\n PaginatedResponse,\n DiscordBotSortField,\n SortOrder,\n} from '../types';\n\nexport class DiscordBotsApi extends BaseApiClient {\n /**\n * List all Discord bots configured for a workspace.\n */\n async getDiscordBots(\n wid: string,\n options: {\n page?: number;\n pageSize?: number;\n sortBy?: DiscordBotSortField;\n sortOrder?: SortOrder;\n search?: string;\n } = {}\n ): Promise<PaginatedResponse<DiscordBot>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.search) params.append('search', options.search);\n\n return this.fetch<PaginatedResponse<DiscordBot>>(\n `w/${wid}/app-connections/discord/bots${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /**\n * Get a specific Discord bot by ID.\n */\n async getDiscordBot(wid: string, botId: number): Promise<DiscordBot> {\n return this.fetch<DiscordBot>(`w/${wid}/app-connections/discord/bots/${botId}`);\n }\n\n /**\n * Get a Discord bot by UUID.\n */\n async getDiscordBotByUuid(wid: string, uuid: string): Promise<DiscordBot> {\n return this.fetch<DiscordBot>(`w/${wid}/app-connections/discord/bots/uuid/${uuid}`);\n }\n\n /**\n * Create a new Discord bot configuration.\n */\n async createDiscordBot(wid: string, data: CreateDiscordBotRequest): Promise<DiscordBot> {\n return this.fetch<DiscordBot>(`w/${wid}/app-connections/discord/bots`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Update an existing Discord bot configuration.\n */\n async updateDiscordBot(\n wid: string,\n botId: number,\n data: UpdateDiscordBotRequest\n ): Promise<DiscordBot> {\n return this.fetch<DiscordBot>(`w/${wid}/app-connections/discord/bots/${botId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Delete a Discord bot configuration.\n */\n async deleteDiscordBot(wid: string, botId: number): Promise<void> {\n return this.fetch(`w/${wid}/app-connections/discord/bots/${botId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Register slash commands for a Discord bot.\n */\n async registerSlashCommands(wid: string, botId: number): Promise<void> {\n return this.fetch(`w/${wid}/app-connections/discord/bots/${botId}/register-commands`, {\n method: 'POST',\n });\n }\n\n /**\n * Register role connection metadata schema for Discord Linked Roles.\n * This defines what metadata fields are available for linked roles.\n */\n async registerLinkedRolesMetadata(\n wid: string,\n botId: number\n ): Promise<{ registered: number; fields: string[] }> {\n return this.fetch(\n `w/${wid}/app-connections/discord/bots/${botId}/linked-roles/register-metadata`,\n {\n method: 'POST',\n }\n );\n }\n\n /**\n * Get Discord threads for a bot.\n */\n async getDiscordThreads(\n wid: string,\n botId: number,\n options: {\n page?: number;\n pageSize?: number;\n } = {}\n ): Promise<PaginatedResponse<DiscordThread>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<PaginatedResponse<DiscordThread>>(\n `w/${wid}/app-connections/discord/bots/${botId}/threads${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /**\n * Get the current member's credentials (connected accounts).\n */\n async getMyCredentials(wid: string): Promise<MemberCredential[]> {\n return this.fetch<MemberCredential[]>(`w/${wid}/me/credentials`);\n }\n\n /**\n * Unlink a credential from the current member's account.\n */\n async unlinkCredential(wid: string, credentialId: number): Promise<void> {\n return this.fetch(`w/${wid}/me/credentials/${credentialId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Get Discord guilds (servers) that have interacted with a bot.\n */\n async getDiscordGuilds(\n wid: string,\n botId: number,\n options: {\n page?: number;\n pageSize?: number;\n } = {}\n ): Promise<PaginatedResponse<DiscordGuild>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<PaginatedResponse<DiscordGuild>>(\n `w/${wid}/app-connections/discord/bots/${botId}/guilds${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /**\n * Get Discord account links for a bot (members linked to Discord users).\n */\n async getDiscordBotAccounts(\n wid: string,\n botId: number,\n options: {\n page?: number;\n pageSize?: number;\n } = {}\n ): Promise<PaginatedResponse<DiscordBotAccount>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<PaginatedResponse<DiscordBotAccount>>(\n `w/${wid}/app-connections/discord/bots/${botId}/accounts${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport {\n SlackApp,\n SlackAppInstallation,\n SlackAccount,\n CreateSlackAppRequest,\n UpdateSlackAppRequest,\n SlackThread,\n PaginatedResponse,\n SlackAppSortField,\n SortOrder,\n} from '../types';\n\nexport class SlackAppsApi extends BaseApiClient {\n /**\n * List all Slack apps configured for a workspace.\n */\n async getSlackApps(\n wid: string,\n options: {\n page?: number;\n pageSize?: number;\n sortBy?: SlackAppSortField;\n sortOrder?: SortOrder;\n search?: string;\n } = {}\n ): Promise<PaginatedResponse<SlackApp>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.search) params.append('search', options.search);\n\n return this.fetch<PaginatedResponse<SlackApp>>(\n `w/${wid}/app-connections/slack/apps${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /**\n * Get a specific Slack app by ID.\n */\n async getSlackApp(wid: string, appId: number): Promise<SlackApp> {\n return this.fetch<SlackApp>(`w/${wid}/app-connections/slack/apps/${appId}`);\n }\n\n /**\n * Create a new Slack app configuration.\n */\n async createSlackApp(wid: string, data: CreateSlackAppRequest): Promise<SlackApp> {\n return this.fetch<SlackApp>(`w/${wid}/app-connections/slack/apps`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Update an existing Slack app configuration.\n */\n async updateSlackApp(\n wid: string,\n appId: number,\n data: UpdateSlackAppRequest\n ): Promise<SlackApp> {\n return this.fetch<SlackApp>(`w/${wid}/app-connections/slack/apps/${appId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Delete a Slack app configuration.\n */\n async deleteSlackApp(wid: string, appId: number): Promise<void> {\n return this.fetch(`w/${wid}/app-connections/slack/apps/${appId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Get Slack threads for an app.\n */\n async getSlackThreads(\n wid: string,\n appId: number,\n options: {\n page?: number;\n pageSize?: number;\n } = {}\n ): Promise<PaginatedResponse<SlackThread>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<PaginatedResponse<SlackThread>>(\n `w/${wid}/app-connections/slack/apps/${appId}/threads${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /**\n * Get Slack workspace installations for an app.\n */\n async getSlackInstallations(\n wid: string,\n appId: number,\n options: {\n page?: number;\n pageSize?: number;\n } = {}\n ): Promise<PaginatedResponse<SlackAppInstallation>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<PaginatedResponse<SlackAppInstallation>>(\n `w/${wid}/app-connections/slack/apps/${appId}/installations${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /**\n * Get Slack account links for an app (members linked to Slack users).\n */\n async getSlackAppAccounts(\n wid: string,\n appId: number,\n options: {\n page?: number;\n pageSize?: number;\n } = {}\n ): Promise<PaginatedResponse<SlackAccount>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<PaginatedResponse<SlackAccount>>(\n `w/${wid}/app-connections/slack/apps/${appId}/accounts${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport {\n Routine,\n RoutineRun,\n EventRule,\n EventRuleActionType,\n EventRuleEventType,\n EventRuleFormData,\n EventRuleObjectType,\n RoutinesQueryParams,\n CreateRoutineRequest,\n UpdateRoutineRequest,\n UpdateEventRuleFormData,\n WebhookLog,\n WebhookLogsQueryParams,\n RuleExecution,\n RuleExecutionsQueryParams,\n PaginatedResponse,\n EventRunSortField,\n SchedulePreviewRequest,\n SchedulePreviewResponse,\n SortOrder,\n} from '../types';\nimport type { CursorPaginatedResponse } from '../types/core-types';\nimport { EventActionMappingsResponse } from '../types/event-rule-types';\n\nexport class EventsApi extends BaseApiClient {\n /** List event rules in the workspace, paginated. */\n async getEventRules(\n wid: string,\n params?: { page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<EventRule>> {\n const query = new URLSearchParams();\n if (params?.page !== undefined) query.set('page', String(params.page));\n if (params?.pageSize !== undefined) query.set('pageSize', String(params.pageSize));\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<EventRule>>(`w/${wid}/event-rules${qs}`);\n }\n\n /** Get the available action types that can be used in event rules. */\n async getAvailableActions(wid: string): Promise<EventActionMappingsResponse> {\n return this.fetch<EventActionMappingsResponse>(`w/${wid}/event-rules/actions/available`);\n }\n\n /** Search event rules by object type, event type, action type, and related entities. */\n async searchEventRules(\n wid: string,\n params: {\n objectType?: EventRuleObjectType;\n eventType?: EventRuleEventType;\n actionType?: EventRuleActionType;\n taskId?: number;\n dataTypeId?: number;\n routineId?: number;\n workflowId?: number;\n journeyStepId?: number;\n includeDisabled?: boolean;\n }\n ): Promise<EventRule[]> {\n const searchParams = new URLSearchParams();\n if (params.objectType) searchParams.append('objectType', params.objectType);\n if (params.eventType) searchParams.append('eventType', params.eventType);\n if (params.actionType) searchParams.append('actionType', params.actionType);\n if (params.taskId) searchParams.append('taskId', params.taskId.toString());\n if (params.dataTypeId) searchParams.append('dataTypeId', params.dataTypeId.toString());\n if (params.routineId) searchParams.append('routineId', params.routineId.toString());\n if (params.workflowId) searchParams.append('workflowId', params.workflowId.toString());\n if (params.journeyStepId)\n searchParams.append('journeyStepId', params.journeyStepId.toString());\n if (params.includeDisabled) searchParams.append('includeDisabled', 'true');\n return this.fetch<EventRule[]>(`w/${wid}/event-rules/search?${searchParams.toString()}`);\n }\n\n /** Get a single event rule by ID. */\n async getEventRule(wid: string, id: number): Promise<EventRule> {\n return this.fetch<EventRule>(`w/${wid}/event-rules/${id}`);\n }\n\n /** Create a new event rule in the workspace. */\n async createEventRule(wid: string, rule: EventRuleFormData): Promise<EventRule> {\n return this.fetch<EventRule>(`w/${wid}/event-rules`, {\n method: 'POST',\n body: JSON.stringify(rule),\n });\n }\n\n /** Update an existing event rule. */\n async updateEventRule(\n wid: string,\n id: number,\n rule: UpdateEventRuleFormData\n ): Promise<EventRule> {\n return this.fetch<EventRule>(`w/${wid}/event-rules/${id}`, {\n method: 'PUT',\n body: JSON.stringify(rule),\n });\n }\n\n /** Delete an event rule by ID. */\n async deleteEventRule(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/event-rules/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Reorder event rules by specifying the desired rule ID sequence. */\n async reorderEventRules(wid: string, ruleIds: number[]): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/event-rules/reorder`, {\n method: 'POST',\n body: JSON.stringify(ruleIds),\n });\n }\n\n /** List webhook logs with optional filtering by event type and success status. */\n async getWebhookLogs(\n wid: string,\n options: WebhookLogsQueryParams = {}\n ): Promise<PaginatedResponse<WebhookLog>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.eventType) params.append('eventType', options.eventType);\n if (options.success !== undefined) params.append('success', options.success.toString());\n\n return this.fetch<PaginatedResponse<WebhookLog>>(\n `w/${wid}/webhook-logs${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** List event rule executions with cursor-based pagination and filtering. */\n async getRuleExecutions(\n wid: string,\n options: RuleExecutionsQueryParams = {}\n ): Promise<CursorPaginatedResponse<RuleExecution>> {\n const params = new URLSearchParams();\n if (options.cursor) params.append('cursor', options.cursor);\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.ruleId) params.append('ruleId', options.ruleId.toString());\n if (options.status) params.append('status', options.status);\n if (options.triggerType) params.append('triggerType', options.triggerType);\n if (options.actionSlug) params.append('actionSlug', options.actionSlug);\n if (options.objectType) params.append('objectType', options.objectType);\n if (options.eventType) params.append('eventType', options.eventType);\n if (options.actionType) params.append('actionType', options.actionType);\n if (options.workflowId) params.append('workflowId', options.workflowId.toString());\n\n return this.fetch<CursorPaginatedResponse<RuleExecution>>(\n `w/${wid}/event-rules/executions${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Preview the next N run times for a cron expression. */\n async previewSchedule(\n wid: string,\n request: SchedulePreviewRequest\n ): Promise<SchedulePreviewResponse> {\n return this.fetch<SchedulePreviewResponse>(`w/${wid}/routines/preview-schedule`, {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /** List routines with optional pagination and active status filtering. */\n async getRoutines(\n wid: string,\n options: RoutinesQueryParams = {}\n ): Promise<PaginatedResponse<Routine>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.owner) params.append('owner', options.owner);\n\n return this.fetch<PaginatedResponse<Routine>>(\n `w/${wid}/routines${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Get a single routine by ID. */\n async getRoutine(wid: string, id: number): Promise<Routine> {\n return this.fetch<Routine>(`w/${wid}/routines/${id}`);\n }\n\n /** Create a new routine. */\n async createRoutine(wid: string, routine: CreateRoutineRequest): Promise<Routine> {\n return this.fetch<Routine>(`w/${wid}/routines`, {\n method: 'POST',\n body: JSON.stringify(routine),\n });\n }\n\n /** Update an existing routine. */\n async updateRoutine(wid: string, id: number, routine: UpdateRoutineRequest): Promise<Routine> {\n return this.fetch<Routine>(`w/${wid}/routines/${id}`, {\n method: 'PUT',\n body: JSON.stringify(routine),\n });\n }\n\n /** Delete a routine by ID. */\n async deleteRoutine(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/routines/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Manually trigger a routine for a specific member or member filter. */\n async runRoutine(\n wid: string,\n id: number,\n params: {\n memberId?: number;\n memberFilterId?: number;\n }\n ): Promise<{ status: string; message: string }> {\n const searchParams = new URLSearchParams();\n if (params.memberId) searchParams.append('member_id', params.memberId.toString());\n if (params.memberFilterId)\n searchParams.append('member_filter_id', params.memberFilterId.toString());\n\n return this.fetch(`w/${wid}/routines/${id}/run?${searchParams.toString()}`, {\n method: 'POST',\n });\n }\n\n /** List routine run history with optional filtering by routine and status. */\n async getRoutineRuns(\n wid: string,\n options: {\n page?: number;\n pageSize?: number;\n sortBy?: EventRunSortField;\n sortOrder?: SortOrder;\n routineId?: number;\n status?: string;\n } = {}\n ): Promise<PaginatedResponse<RoutineRun>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.routineId) params.append('routineId', options.routineId.toString());\n if (options.status) params.append('status', options.status);\n\n return this.fetch<PaginatedResponse<RoutineRun>>(\n `w/${wid}/routines/runs?${params.toString()}`\n );\n }\n\n /** Delete all run history for a routine. */\n async resetRoutineRuns(\n wid: string,\n routineId: number\n ): Promise<{ status: string; message: string; deletedRunsCount: number }> {\n return this.fetch(`w/${wid}/routines/${routineId}/runs`, {\n method: 'DELETE',\n });\n }\n}\n","import { FeatureDefinition } from '../features/registry';\nimport { BaseApiClient } from './base';\n\nexport interface FeaturesRegistryResponse {\n features: FeatureDefinition[];\n}\n\nexport class FeaturesApi extends BaseApiClient {\n /**\n * Get the full feature registry with all metadata\n */\n async getFeatureRegistry(): Promise<FeaturesRegistryResponse> {\n return this.fetch<FeaturesRegistryResponse>('features/registry');\n }\n\n /**\n * Get the public feature registry (no auth required).\n * Returns only features marked for product page display.\n */\n async getPublicFeatureRegistry(): Promise<FeaturesRegistryResponse> {\n return this.fetch<FeaturesRegistryResponse>('features/registry/public');\n }\n\n /**\n * Get a specific feature definition by slug\n */\n async getFeatureBySlug(slug: string): Promise<FeatureDefinition> {\n return this.fetch<FeatureDefinition>(`features/${slug}`);\n }\n}\n","import { BaseApiClient } from './base';\nimport {\n FhirConnection,\n FhirMethodResponse,\n CreateFhirConnectionRequest,\n UpdateFhirConnectionRequest,\n FhirFetchEncountersRequest,\n FhirSearchPatientsRequest,\n FhirSearchPractitionersRequest,\n FhirSearchLocationsRequest,\n FhirFetchCareTeamRequest,\n FhirCreateEncounterRequest,\n FhirConnectionSortField,\n FhirCsvImportSettings,\n FhirCsvImportRunSummary,\n FhirCsvImportRunItem,\n FhirCsvInspectResponse,\n UpdateFhirCsvImportSettingsRequest,\n EncounterSyncStatus,\n EncounterSyncRunResponse,\n EncounterSyncHistoryItem,\n UpdateEncounterSyncRequest,\n TriggerPatientRefreshRequest,\n TriggerConnectionBackfillRequest,\n PaginatedResponse,\n SortOrder,\n} from '../types';\n\nexport class FhirConnectionsApi extends BaseApiClient {\n /**\n * List all FHIR connections configured for a workspace.\n */\n async getFhirConnections(\n wid: string,\n options: {\n page?: number;\n pageSize?: number;\n sortBy?: FhirConnectionSortField;\n sortOrder?: SortOrder;\n search?: string;\n } = {}\n ): Promise<PaginatedResponse<FhirConnection>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.search) params.append('search', options.search);\n\n return this.fetch<PaginatedResponse<FhirConnection>>(\n `w/${wid}/app-connections/fhir/connections${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /**\n * Get a specific FHIR connection by ID.\n */\n async getFhirConnection(wid: string, connectionId: number): Promise<FhirConnection> {\n return this.fetch<FhirConnection>(\n `w/${wid}/app-connections/fhir/connections/${connectionId}`\n );\n }\n\n /**\n * Get a FHIR connection by UUID.\n */\n async getFhirConnectionByUuid(wid: string, uuid: string): Promise<FhirConnection> {\n return this.fetch<FhirConnection>(`w/${wid}/app-connections/fhir/connections/uuid/${uuid}`);\n }\n\n /**\n * Create a new FHIR connection configuration.\n */\n async createFhirConnection(\n wid: string,\n data: CreateFhirConnectionRequest\n ): Promise<FhirConnection> {\n return this.fetch<FhirConnection>(`w/${wid}/app-connections/fhir/connections`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Update an existing FHIR connection configuration.\n */\n async updateFhirConnection(\n wid: string,\n connectionId: number,\n data: UpdateFhirConnectionRequest\n ): Promise<FhirConnection> {\n return this.fetch<FhirConnection>(\n `w/${wid}/app-connections/fhir/connections/${connectionId}`,\n {\n method: 'PUT',\n body: JSON.stringify(data),\n }\n );\n }\n\n /**\n * Delete a FHIR connection configuration.\n */\n async deleteFhirConnection(wid: string, connectionId: number): Promise<void> {\n return this.fetch(`w/${wid}/app-connections/fhir/connections/${connectionId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Test a FHIR connection.\n */\n async testFhirConnection(\n wid: string,\n connectionId: number\n ): Promise<{ success: boolean; message: string }> {\n return this.fetch(`w/${wid}/app-connections/fhir/connections/${connectionId}/test`, {\n method: 'POST',\n });\n }\n\n /**\n * Search for patients via the FHIR connection.\n */\n async fhirSearchPatients(\n wid: string,\n connectionId: number,\n data: FhirSearchPatientsRequest\n ): Promise<FhirMethodResponse> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/patients/search`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n\n /**\n * Search for practitioners via the FHIR connection.\n */\n async fhirSearchPractitioners(\n wid: string,\n connectionId: number,\n data: FhirSearchPractitionersRequest\n ): Promise<FhirMethodResponse> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/practitioners/search`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n\n /**\n * Search for locations via the FHIR connection.\n */\n async fhirSearchLocations(\n wid: string,\n connectionId: number,\n data: FhirSearchLocationsRequest\n ): Promise<FhirMethodResponse> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/locations/search`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n\n /**\n * Fetch care team for a patient via the FHIR connection.\n */\n async fhirFetchCareTeam(\n wid: string,\n connectionId: number,\n data: FhirFetchCareTeamRequest\n ): Promise<FhirMethodResponse> {\n return this.fetch(`w/${wid}/app-connections/fhir/connections/${connectionId}/careteam`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Fetch encounters for a patient via the FHIR connection.\n */\n async fhirFetchEncounters(\n wid: string,\n connectionId: number,\n data: FhirFetchEncountersRequest\n ): Promise<FhirMethodResponse> {\n return this.fetch(`w/${wid}/app-connections/fhir/connections/${connectionId}/encounters`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Create a telephone encounter for a patient via the FHIR connection.\n */\n async fhirCreateEncounter(\n wid: string,\n connectionId: number,\n data: FhirCreateEncounterRequest\n ): Promise<FhirMethodResponse> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/encounters/create`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n\n // ==================== CSV Inspect & Import ====================\n\n async fhirCsvImportInspect(\n wid: string,\n connectionId: number,\n file: File\n ): Promise<FhirCsvInspectResponse> {\n const formData = new FormData();\n formData.append('file', file);\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/csv-import/inspect`,\n { method: 'POST', body: formData }\n );\n }\n\n async fhirGetCsvImportSettings(\n wid: string,\n connectionId: number\n ): Promise<FhirCsvImportSettings> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/csv-import/settings`\n );\n }\n\n async fhirUpdateCsvImportSettings(\n wid: string,\n connectionId: number,\n data: UpdateFhirCsvImportSettingsRequest\n ): Promise<FhirCsvImportSettings> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/csv-import/settings`,\n { method: 'PUT', body: JSON.stringify(data) }\n );\n }\n\n async fhirCsvImportApply(\n wid: string,\n connectionId: number,\n file: File,\n columns?: { identifierColumn: string; birthdateColumn?: string }\n ): Promise<Response> {\n const formData = new FormData();\n formData.append('file', file);\n if (columns) {\n formData.append('identifierColumn', columns.identifierColumn);\n if (columns.birthdateColumn) {\n formData.append('birthdateColumn', columns.birthdateColumn);\n }\n }\n return this.fetchRaw(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/csv-import/runs`,\n { method: 'POST', body: formData }\n );\n }\n\n async fhirGetCsvImportRuns(\n wid: string,\n connectionId: number,\n limit = 20\n ): Promise<FhirCsvImportRunSummary[]> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/csv-import/runs?limit=${limit}`\n );\n }\n\n async fhirGetCsvImportRunItems(\n wid: string,\n connectionId: number,\n runId: string,\n limit = 500\n ): Promise<FhirCsvImportRunItem[]> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/csv-import/runs/${runId}/items?limit=${limit}`\n );\n }\n\n // ==================== Member Sync ====================\n\n async fhirListLinkedMembers(\n wid: string,\n connectionId: number,\n params?: { page?: number; pageSize?: number; search?: string }\n ): Promise<PaginatedResponse<FhirLinkedMember>> {\n const query = new URLSearchParams();\n if (params?.page !== undefined) query.set('page', String(params.page));\n if (params?.pageSize !== undefined) query.set('pageSize', String(params.pageSize));\n if (params?.search?.trim()) query.set('search', params.search.trim());\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<FhirLinkedMember>>(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/linked-members${qs}`\n );\n }\n\n async fhirLinkMember(\n wid: string,\n connectionId: number,\n data: { memberId: number; patientId: string }\n ): Promise<FhirMethodResponse> {\n return this.fetch(`w/${wid}/app-connections/fhir/connections/${connectionId}/link-member`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async fhirUnlinkMember(\n wid: string,\n connectionId: number,\n memberId: number\n ): Promise<FhirMethodResponse> {\n return this.fetch(`w/${wid}/app-connections/fhir/connections/${connectionId}/unlink-member`, {\n method: 'POST',\n body: JSON.stringify({ memberId: memberId }),\n });\n }\n\n async fhirSyncMember(\n wid: string,\n connectionId: number,\n memberId: number\n ): Promise<FhirMethodResponse> {\n return this.fetch(`w/${wid}/app-connections/fhir/connections/${connectionId}/sync-member`, {\n method: 'POST',\n body: JSON.stringify({ memberId: memberId }),\n });\n }\n\n async fhirImportPatient(\n wid: string,\n connectionId: number,\n data: { patientId: string; memberRoleId?: number }\n ): Promise<FhirMethodResponse> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/import-patient`,\n { method: 'POST', body: JSON.stringify(data) }\n );\n }\n\n // ==================== Encounter Sync ====================\n\n async fhirGetEncounterSyncStatus(\n wid: string,\n connectionId: number\n ): Promise<EncounterSyncStatus> {\n return this.fetch(`w/${wid}/app-connections/fhir/connections/${connectionId}/encounter-sync`);\n }\n\n async fhirUpdateEncounterSync(\n wid: string,\n connectionId: number,\n data: UpdateEncounterSyncRequest\n ): Promise<EncounterSyncStatus> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/encounter-sync`,\n { method: 'PUT', body: JSON.stringify(data) }\n );\n }\n\n async fhirRunEncounterSync(\n wid: string,\n connectionId: number\n ): Promise<EncounterSyncRunResponse> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/encounter-sync/run`,\n { method: 'POST' }\n );\n }\n\n async fhirGetEncounterSyncRuns(\n wid: string,\n connectionId: number,\n limit = 20\n ): Promise<EncounterSyncHistoryItem[]> {\n const qs = limit !== 20 ? `?limit=${limit}` : '';\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/encounter-sync/runs${qs}`\n );\n }\n\n async fhirRefreshEncounterPatient(\n wid: string,\n connectionId: number,\n data: TriggerPatientRefreshRequest\n ): Promise<EncounterSyncRunResponse> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/encounter-sync/refresh-patient`,\n { method: 'POST', body: JSON.stringify(data) }\n );\n }\n\n async fhirBackfillEncounterSync(\n wid: string,\n connectionId: number,\n data: TriggerConnectionBackfillRequest\n ): Promise<EncounterSyncRunResponse> {\n return this.fetch(\n `w/${wid}/app-connections/fhir/connections/${connectionId}/encounter-sync/backfill`,\n { method: 'POST', body: JSON.stringify(data) }\n );\n }\n}\n\nexport interface FhirLinkedMember {\n memberId: number;\n patientId: string;\n lastSyncedAt: string | null;\n lastSyncStatus: string | null;\n syncCount: number;\n memberName?: string | null;\n memberEmail?: string | null;\n memberPhone?: string | null;\n}\n","import type { PaginatedResponse } from '../types/core-types';\nimport { BaseApiClient } from './base';\n\nexport interface ConfigureHealthieRequest {\n api_key: string;\n base_url?: string;\n}\n\nexport interface HealthieConnectionStatus {\n connected: boolean;\n state: string | null;\n user_id: string | null;\n user_name: string | null;\n user_email: string | null;\n error: string | null;\n}\n\nexport interface HealthieProvider {\n id: string;\n first_name: string | null;\n last_name: string | null;\n email: string | null;\n}\n\nexport interface LinkCalendarToHealthieRequest {\n calendar_id: number;\n provider_id: string;\n}\n\nexport interface LinkCalendarToHealthieResponse {\n status: string;\n calendar_id: number;\n provider_id: string;\n sync: {\n event_types_synced: number;\n events_created: number;\n events_updated: number;\n };\n}\n\nexport interface LinkedHealthieMember {\n member_id: number;\n healthie_patient_id: string;\n member_name: string | null;\n member_email: string | null;\n member_phone: string | null;\n}\n\nexport interface HealthieReconciliationMatch {\n member_id: number;\n healthie_patient_id: string;\n healthie_first_name: string | null;\n healthie_last_name: string | null;\n healthie_email: string | null;\n healthie_phone: string | null;\n match_type: string;\n}\n\nexport interface LinkMemberToHealthieRequest {\n member_id: number;\n healthie_patient_id: string;\n}\n\nexport interface HealthieAppointmentTypeResponse {\n id: string;\n name: string;\n length: number;\n is_group: boolean;\n clients_can_book: boolean;\n available_contact_types: string[];\n}\n\nexport interface HealthiePatientResponse {\n id: string;\n first_name: string | null;\n last_name: string | null;\n email: string | null;\n phone_number: string | null;\n}\n\nexport interface GetAvailableSlotsRequest {\n appointment_type_id: string;\n provider_id?: string | null;\n start_date?: string | null;\n end_date?: string | null;\n timezone?: string;\n}\n\nexport interface AvailableDayResponse {\n date: string;\n slots: string[];\n}\n\nexport interface BookAppointmentRequest {\n appointment_type_id: string;\n datetime: string;\n provider_id?: string | null;\n patient_id?: string | null;\n contact_type?: string | null;\n notes?: string | null;\n timezone?: string;\n}\n\nexport interface BookingResultResponse {\n appointment_id: string;\n date: string;\n provider_name: string | null;\n appointment_type_name: string | null;\n contact_type: string | null;\n location: string | null;\n}\n\nexport class HealthieApi extends BaseApiClient {\n async configureHealthie(\n wid: string,\n data: ConfigureHealthieRequest\n ): Promise<HealthieConnectionStatus> {\n return this.fetch<HealthieConnectionStatus>(`w/${wid}/app-connections/healthie/configure`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async getHealthieStatus(wid: string): Promise<HealthieConnectionStatus> {\n return this.fetch<HealthieConnectionStatus>(`w/${wid}/app-connections/healthie/status`);\n }\n\n async listHealthieProviders(wid: string): Promise<HealthieProvider[]> {\n return this.fetch<HealthieProvider[]>(`w/${wid}/app-connections/healthie/providers`);\n }\n\n async linkCalendarToHealthie(\n wid: string,\n data: LinkCalendarToHealthieRequest\n ): Promise<LinkCalendarToHealthieResponse> {\n return this.fetch<LinkCalendarToHealthieResponse>(\n `w/${wid}/app-connections/healthie/calendar/link`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n\n async unlinkCalendarFromHealthie(wid: string, calendarId: number): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(\n `w/${wid}/app-connections/healthie/calendar/${calendarId}/link`,\n { method: 'DELETE' }\n );\n }\n\n async syncCalendarWithHealthie(\n wid: string,\n calendarId: number\n ): Promise<LinkCalendarToHealthieResponse> {\n return this.fetch<LinkCalendarToHealthieResponse>(\n `w/${wid}/app-connections/healthie/calendar/${calendarId}/sync`,\n { method: 'POST' }\n );\n }\n\n async getLinkedHealthieMembers(\n wid: string,\n params?: { page?: number; pageSize?: number; search?: string }\n ): Promise<PaginatedResponse<LinkedHealthieMember>> {\n const query = new URLSearchParams();\n if (params?.page !== undefined) query.set('page', String(params.page));\n if (params?.pageSize !== undefined) query.set('pageSize', String(params.pageSize));\n if (params?.search?.trim()) query.set('search', params.search.trim());\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<LinkedHealthieMember>>(\n `w/${wid}/app-connections/healthie/reconciliation/linked${qs}`\n );\n }\n\n async getHealthieReconciliationMatches(\n wid: string,\n params?: { limit?: number; offset?: number }\n ): Promise<HealthieReconciliationMatch[]> {\n const query = new URLSearchParams();\n if (params?.limit !== undefined) query.set('limit', String(params.limit));\n if (params?.offset !== undefined) query.set('offset', String(params.offset));\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<HealthieReconciliationMatch[]>(\n `w/${wid}/app-connections/healthie/reconciliation/matches${qs}`\n );\n }\n\n async linkMemberToHealthie(\n wid: string,\n data: LinkMemberToHealthieRequest\n ): Promise<{ status: string; member_id: number; healthie_patient_id: string }> {\n return this.fetch(`w/${wid}/app-connections/healthie/reconciliation/link`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async unlinkMemberFromHealthie(\n wid: string,\n memberId: number\n ): Promise<{ status: string; member_id: number }> {\n return this.fetch(`w/${wid}/app-connections/healthie/reconciliation/unlink/${memberId}`, {\n method: 'DELETE',\n });\n }\n\n async listHealthieAppointmentTypes(\n wid: string,\n providerId?: string\n ): Promise<HealthieAppointmentTypeResponse[]> {\n const query = new URLSearchParams();\n if (providerId) query.set('provider_id', providerId);\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<HealthieAppointmentTypeResponse[]>(\n `w/${wid}/app-connections/healthie/appointment-types${qs}`\n );\n }\n\n async listHealthiePatients(wid: string, keywords?: string): Promise<HealthiePatientResponse[]> {\n const query = new URLSearchParams();\n if (keywords?.trim()) query.set('keywords', keywords.trim());\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<HealthiePatientResponse[]>(\n `w/${wid}/app-connections/healthie/patients${qs}`\n );\n }\n\n async getHealthieAvailableSlots(\n wid: string,\n request: GetAvailableSlotsRequest\n ): Promise<AvailableDayResponse[]> {\n return this.fetch<AvailableDayResponse[]>(\n `w/${wid}/app-connections/healthie/scheduling/available-slots`,\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n }\n\n async bookHealthieAppointment(\n wid: string,\n request: BookAppointmentRequest\n ): Promise<BookingResultResponse> {\n return this.fetch<BookingResultResponse>(\n `w/${wid}/app-connections/healthie/scheduling/book`,\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport { PaginatedResponse } from '../types';\nimport {\n File,\n FileFormData,\n FileFolder,\n FileFolderFormData,\n FileSortField,\n SortOrder,\n FileLabel,\n FileLabelFormData,\n FileConversionResponse,\n FileUploadRequest,\n FileUploadResponse,\n FolderSearchResult,\n FolderSearchParams,\n FileSharingResponse,\n FolderSharingResponse,\n FileRoleAssociationResponse,\n UpdateFileRoleAssociationsRequest,\n UpdateFileSharingRequest,\n PublicFileMetadata,\n PublicFolderContents,\n} from '../types/file-types';\n\nexport class FilesApi extends BaseApiClient {\n /** List files in a workspace with optional folder filtering, sorting, and search. */\n async getFiles(\n wid: string,\n options: {\n folderId?: number;\n page?: number;\n pageSize?: number;\n sortBy?: FileSortField;\n sortOrder?: SortOrder;\n search?: string;\n } = {}\n ): Promise<PaginatedResponse<File>> {\n const params = new URLSearchParams();\n if (options.folderId) params.append('folder_id', options.folderId.toString());\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.search) params.append('search', options.search);\n return this.fetch<PaginatedResponse<File>>(\n `w/${wid}/files${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Get a single file by ID. */\n async getFile(wid: string, id: number): Promise<File> {\n return this.fetch<File>(`w/${wid}/files/${id}`);\n }\n\n /** Create a new file record in the workspace. */\n async createFile(wid: string, file: FileFormData): Promise<File> {\n return this.fetch<File>(`w/${wid}/files`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(file),\n });\n }\n\n /** Update an existing file's metadata. */\n async updateFile(wid: string, id: number, file: Partial<FileFormData>): Promise<File> {\n return this.fetch<File>(`w/${wid}/files/${id}`, {\n method: 'PUT',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(file),\n });\n }\n\n /** Delete a file by ID. */\n async deleteFile(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/files/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Convert a file to the specified format (text, markdown, or PDF). */\n async convertFile(\n wid: string,\n fileId: number,\n format: 'text' | 'markdown' | 'pdf' = 'pdf'\n ): Promise<FileConversionResponse> {\n return this.fetch<FileConversionResponse>(\n `w/${wid}/files/${fileId}/convert?format=${format}`,\n {\n method: 'POST',\n }\n );\n }\n\n /** Generate a pre-signed upload URL for uploading file content. */\n async generateFileUploadUrl(\n wid: string,\n request: FileUploadRequest\n ): Promise<FileUploadResponse> {\n return this.fetch<FileUploadResponse>(`w/${wid}/files/upload-url`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify(request),\n });\n }\n\n /** List child folders of a given parent folder.\n *\n * `parentId` is required — use the workspace root folder ID from\n * `WorkspaceSettings.workspaceFolderId` as the starting point for\n * workspace-level browsing.\n */\n async getFolders(\n wid: string,\n parentIdOrOpts: number | { parentId: number }\n ): Promise<FileFolder[]> {\n const parentId =\n typeof parentIdOrOpts === 'number' ? parentIdOrOpts : parentIdOrOpts.parentId;\n return this.fetch<FileFolder[]>(`w/${wid}/folders?parent_id=${parentId}`);\n }\n\n /** Get a single folder by ID. */\n async getFolder(wid: string, id: number): Promise<FileFolder> {\n return this.fetch<FileFolder>(`w/${wid}/folders/${id}`);\n }\n\n /** Create a new folder in the workspace. */\n async createFolder(wid: string, directory: FileFolderFormData): Promise<FileFolder> {\n return this.fetch<FileFolder>(`w/${wid}/folders`, {\n method: 'POST',\n body: JSON.stringify(directory),\n });\n }\n\n /** Update a folder's properties. */\n async updateFolder(\n wid: string,\n id: number,\n directory: Partial<FileFolderFormData>\n ): Promise<FileFolder> {\n return this.fetch<FileFolder>(`w/${wid}/folders/${id}`, {\n method: 'PUT',\n body: JSON.stringify(directory),\n });\n }\n\n /** Delete a folder by ID. */\n async deleteFolder(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/folders/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Trigger reindexing of a folder's contents for search. */\n async reindexFolder(wid: string, id: number): Promise<{ status: string; message: string }> {\n return this.fetch<{ status: string; message: string }>(`w/${wid}/folders/${id}/reindex`, {\n method: 'POST',\n });\n }\n\n /** Search for content within a folder using semantic search. */\n async searchFolder(\n wid: string,\n id: number,\n params: FolderSearchParams\n ): Promise<FolderSearchResult[]> {\n const searchParams = new URLSearchParams();\n searchParams.append('query', params.query);\n if (params.topK) searchParams.append('top_k', params.topK.toString());\n\n return this.fetch<FolderSearchResult[]>(\n `w/${wid}/folders/${id}/search?${searchParams.toString()}`\n );\n }\n\n /** List all file labels in the workspace. */\n async getFileLabels(wid: string): Promise<FileLabel[]> {\n return this.fetch<FileLabel[]>(`w/${wid}/file-labels`);\n }\n\n /** Get a single file label by ID. */\n async getFileLabel(wid: string, id: number): Promise<FileLabel> {\n return this.fetch<FileLabel>(`w/${wid}/file-labels/${id}`);\n }\n\n /** Get a single file label by UUID. */\n async getFileLabelByUuid(wid: string, uuid: string): Promise<FileLabel> {\n return this.fetch<FileLabel>(`w/${wid}/file-labels/${uuid}`);\n }\n\n /** Create a new file label in the workspace. */\n async createFileLabel(wid: string, label: FileLabelFormData): Promise<FileLabel> {\n return this.fetch<FileLabel>(`w/${wid}/file-labels`, {\n method: 'POST',\n body: JSON.stringify(label),\n });\n }\n\n /** Update a file label's properties. */\n async updateFileLabel(\n wid: string,\n id: number,\n label: Partial<FileLabelFormData>\n ): Promise<FileLabel> {\n return this.fetch<FileLabel>(`w/${wid}/file-labels/${id}`, {\n method: 'PUT',\n body: JSON.stringify(label),\n });\n }\n\n /** Delete a file label by ID. */\n async deleteFileLabel(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/file-labels/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Get sharing settings for a file. */\n async getFileSharing(wid: string, fileId: number): Promise<FileSharingResponse> {\n return this.fetch<FileSharingResponse>(`w/${wid}/files/${fileId}/sharing`);\n }\n\n /** Update the role associations for a file's sharing permissions. */\n async updateFileRoles(\n wid: string,\n fileId: number,\n data: UpdateFileRoleAssociationsRequest\n ): Promise<FileRoleAssociationResponse[]> {\n return this.fetch<FileRoleAssociationResponse[]>(`w/${wid}/files/${fileId}/sharing/roles`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Remove a role's access to a file. */\n async removeFileRole(wid: string, fileId: number, roleId: number): Promise<void> {\n return this.fetch(`w/${wid}/files/${fileId}/sharing/roles/${roleId}`, {\n method: 'DELETE',\n });\n }\n\n /** Get sharing settings for a folder. */\n async getFolderSharing(wid: string, folderId: number): Promise<FolderSharingResponse> {\n return this.fetch<FolderSharingResponse>(`w/${wid}/folders/${folderId}/sharing`);\n }\n\n /** Update the role associations for a folder's sharing permissions. */\n async updateFolderRoles(\n wid: string,\n folderId: number,\n data: UpdateFileRoleAssociationsRequest\n ): Promise<FileRoleAssociationResponse[]> {\n return this.fetch<FileRoleAssociationResponse[]>(\n `w/${wid}/folders/${folderId}/sharing/roles`,\n {\n method: 'PUT',\n body: JSON.stringify(data),\n }\n );\n }\n\n /** Remove a role's access to a folder. */\n async removeFolderRole(wid: string, folderId: number, roleId: number): Promise<void> {\n return this.fetch(`w/${wid}/folders/${folderId}/sharing/roles/${roleId}`, {\n method: 'DELETE',\n });\n }\n\n /** Update all sharing settings for a file in a single request. */\n async updateFileSharing(\n wid: string,\n fileId: number,\n data: UpdateFileSharingRequest\n ): Promise<FileSharingResponse> {\n return this.fetch<FileSharingResponse>(`w/${wid}/files/${fileId}/sharing`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Update all sharing settings for a folder in a single request. */\n async updateFolderSharing(\n wid: string,\n folderId: number,\n data: UpdateFileSharingRequest\n ): Promise<FolderSharingResponse> {\n return this.fetch<FolderSharingResponse>(`w/${wid}/folders/${folderId}/sharing`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Get metadata for a publicly shared file (unauthenticated). */\n async getPublicFile(wid: string, fileId: number): Promise<PublicFileMetadata> {\n return this.fetch<PublicFileMetadata>(`w/${wid}/sharing/files/${fileId}`);\n }\n\n /** Get contents of a publicly shared folder (unauthenticated). */\n async getPublicFolder(\n wid: string,\n folderId: number,\n page = 1,\n pageSize = 100\n ): Promise<PublicFolderContents> {\n return this.fetch<PublicFolderContents>(\n `w/${wid}/sharing/folders/${folderId}?page=${page}&pageSize=${pageSize}`\n );\n }\n\n /** List files within a publicly shared folder (unauthenticated). */\n async getPublicFolderFiles(\n wid: string,\n folderId: number,\n page = 1,\n pageSize = 100\n ): Promise<{ files: PublicFileMetadata[]; pagination?: any }> {\n return this.fetch<{ files: PublicFileMetadata[]; pagination?: any }>(\n `w/${wid}/sharing/folders/${folderId}/files?page=${page}&pageSize=${pageSize}`\n );\n }\n}\n","import { Email, Inbox, InboxCreateRequest, InboxUpdateRequest, PaginatedResponse } from '../types';\nimport {\n ChatEmailsResponse,\n EmailConversionResponse,\n ThreadEmailsResponse,\n} from '../types/communication-types';\nimport { BaseApiClient } from './base';\n\nexport class InboxesApi extends BaseApiClient {\n /** List all inboxes in a workspace. */\n async getInboxes(wid: string): Promise<PaginatedResponse<Inbox>> {\n return this.fetch<PaginatedResponse<Inbox>>(`w/${wid}/inboxes`);\n }\n\n /** Get an inbox by ID. */\n async getInbox(wid: string, id: number): Promise<Inbox> {\n return this.fetch<Inbox>(`w/${wid}/inboxes/${id}`);\n }\n\n /** Create a new inbox. */\n async createInbox(wid: string, inbox: InboxCreateRequest): Promise<Inbox> {\n return this.fetch<Inbox>(`w/${wid}/inboxes`, {\n method: 'POST',\n body: JSON.stringify(inbox),\n });\n }\n\n /** Update an inbox. */\n async updateInbox(wid: string, id: number, inbox: InboxUpdateRequest): Promise<Inbox> {\n return this.fetch<Inbox>(`w/${wid}/inboxes/${id}`, {\n method: 'PUT',\n body: JSON.stringify(inbox),\n });\n }\n\n /** Delete an inbox. */\n async deleteInbox(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/inboxes/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** List emails in an inbox with pagination and optional attachment inclusion. */\n async getInboxEmails(\n wid: string,\n inboxId: number,\n options: {\n page?: number;\n pageSize?: number;\n includeAttachments?: boolean;\n } = {}\n ): Promise<PaginatedResponse<Email>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.includeAttachments)\n params.append('include_attachments', options.includeAttachments.toString());\n\n return this.fetch<PaginatedResponse<Email>>(\n `w/${wid}/inboxes/${inboxId}/emails${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Get a single email from an inbox. */\n async getInboxEmail(wid: string, inboxId: number, emailId: number): Promise<Email> {\n return this.fetch<Email>(`w/${wid}/inboxes/${inboxId}/emails/${emailId}`);\n }\n\n /** Mark an email as read. */\n async markEmailAsRead(wid: string, inboxId: number, emailId: number): Promise<Email> {\n return this.fetch<Email>(`w/${wid}/inboxes/${inboxId}/emails/${emailId}/mark-read`, {\n method: 'POST',\n });\n }\n\n /** Mark an email as unread. */\n async markEmailAsUnread(wid: string, inboxId: number, emailId: number): Promise<Email> {\n return this.fetch<Email>(`w/${wid}/inboxes/${inboxId}/emails/${emailId}/unread`, {\n method: 'POST',\n });\n }\n\n /** Reply to an email from the inbox. */\n async replyToEmail(\n wid: string,\n inboxId: number,\n emailId: number,\n content: string\n ): Promise<Email> {\n return this.fetch<Email>(`w/${wid}/inboxes/${inboxId}/emails/${emailId}/reply`, {\n method: 'POST',\n body: JSON.stringify({ content }),\n });\n }\n\n /** Convert an email to text, markdown, or PDF format. */\n async convertEmail(\n wid: string,\n inboxId: number,\n emailId: number,\n format: 'text' | 'markdown' | 'pdf' = 'pdf'\n ): Promise<EmailConversionResponse> {\n return this.fetch<EmailConversionResponse>(\n `w/${wid}/inboxes/${inboxId}/emails/${emailId}/convert?format=${format}`,\n {\n method: 'POST',\n }\n );\n }\n\n /** Download an email attachment as raw bytes. */\n async downloadEmailAttachment(\n wid: string,\n inboxId: number,\n emailId: number,\n attachmentId: string\n ): Promise<ArrayBuffer> {\n const response = await this.fetchRaw(\n `w/${wid}/inboxes/${inboxId}/emails/${emailId}/attachments/${attachmentId}`\n );\n return response.arrayBuffer();\n }\n\n /** List email threads in an inbox. */\n async getInboxThreads(wid: string, inboxId: number): Promise<any> {\n return this.fetch(`w/${wid}/inboxes/${inboxId}/threads`);\n }\n\n /** List emails in a thread by assignment ID with pagination. */\n async getThreadEmails(\n wid: string,\n inboxId: number,\n assignmentId: number,\n options: { page?: number; pageSize?: number; includeAttachments?: boolean } = {}\n ): Promise<ThreadEmailsResponse> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.includeAttachments)\n params.append('include_attachments', options.includeAttachments.toString());\n\n return this.fetch<ThreadEmailsResponse>(\n `w/${wid}/inboxes/${inboxId}/assignments/${assignmentId}/emails${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** List emails associated with a chat with pagination. */\n async getChatEmails(\n wid: string,\n inboxId: number,\n chatId: number,\n options: { page?: number; pageSize?: number; includeAttachments?: boolean } = {}\n ): Promise<ChatEmailsResponse> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.includeAttachments)\n params.append('include_attachments', options.includeAttachments.toString());\n\n return this.fetch<ChatEmailsResponse>(\n `w/${wid}/inboxes/${inboxId}/chats/${chatId}/emails${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n}\n","import type {\n CreateInquiryRequest,\n EnrichInquiryRequest,\n Inquiry,\n InquiryListResponse,\n UpdateInquiryRequest,\n} from '../types/inquiry-types';\nimport { BaseApiClient } from './base';\n\nexport class InquiriesApi extends BaseApiClient {\n /**\n * Create a new inquiry (public endpoint)\n */\n async createInquiry(data: CreateInquiryRequest): Promise<Inquiry> {\n return this.fetch<Inquiry>('inquiries', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Enrich an existing inquiry with additional fields (public endpoint).\n * Uses the inquiry UUID (from cookie) to identify the inquiry.\n */\n async enrichInquiry(inquiryUuid: string, data: EnrichInquiryRequest): Promise<Inquiry> {\n return this.fetch<Inquiry>(`inquiries/enrich/${inquiryUuid}`, {\n method: 'PATCH',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * List all inquiries (superuser only)\n */\n async listInquiries(params?: {\n page?: number;\n pageSize?: number;\n inquiryType?: string;\n }): Promise<InquiryListResponse> {\n const searchParams = new URLSearchParams();\n if (params?.page) searchParams.append('page', params.page.toString());\n if (params?.pageSize) searchParams.append('page_size', params.pageSize.toString());\n if (params?.inquiryType) searchParams.append('inquiry_type', params.inquiryType);\n\n const queryString = searchParams.toString();\n const url = queryString ? `inquiries?${queryString}` : 'inquiries';\n\n return this.fetch<InquiryListResponse>(url);\n }\n\n /**\n * Get a specific inquiry (superuser only)\n */\n async getInquiry(inquiryId: number): Promise<Inquiry> {\n return this.fetch<Inquiry>(`inquiries/${inquiryId}`);\n }\n\n /**\n * Update an inquiry (superuser only)\n */\n async updateInquiry(inquiryId: number, data: UpdateInquiryRequest): Promise<Inquiry> {\n return this.fetch<Inquiry>(`inquiries/${inquiryId}`, {\n method: 'PATCH',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Delete an inquiry (superuser only)\n */\n async deleteInquiry(inquiryId: number): Promise<void> {\n await this.fetch(`inquiries/${inquiryId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Export inquiries to CSV with optional status filtering (superuser only)\n */\n async exportInquiriesCsv(statusFilter?: string): Promise<Blob> {\n const params = new URLSearchParams();\n if (statusFilter) {\n params.append('status_filter', statusFilter);\n }\n\n const queryString = params.toString();\n const url = queryString ? `inquiries/export/csv?${queryString}` : 'inquiries/export/csv';\n\n const response = await fetch(`${this.baseUrl}/api/v2/${url}`, {\n method: 'GET',\n credentials: 'include',\n });\n\n if (!response.ok) {\n const error = await response.json();\n throw new Error(error.detail || 'Export failed');\n }\n\n return response.blob();\n }\n}\n","import {\n AppConnectionDirectoryResponse,\n AppConnectionItem,\n CreateAppConnectionRequest,\n PlatformAppConnectionResponse,\n UpdateAppConnectionRequest,\n} from '../types/app-connection-types';\nimport { BaseApiClient } from './base';\n\n/** GRA-2920: distinct MemberField keys owned by a single app connection. */\nexport interface ConnectionMemberFieldKeysResponse {\n keys: string[];\n}\n\nexport class AppConnectionsApi extends BaseApiClient {\n /**\n * List all app connection definitions the workspace can access.\n * Returns static metadata only (no instance counts or active data).\n */\n async listAvailableAppConnections(wid: string): Promise<AppConnectionDirectoryResponse> {\n return this.fetch<AppConnectionDirectoryResponse>(`w/${wid}/app-connections/available`);\n }\n\n /**\n * List all active app connections across all types.\n * Returns a union of platform apps, MCP servers, Discord bots,\n * Slack apps, and FHIR connections.\n */\n async listAppConnections(wid: string): Promise<AppConnectionItem[]> {\n return this.fetch<AppConnectionItem[]>(`w/${wid}/app-connections`);\n }\n\n /**\n * Enable a platform app connection in the workspace.\n */\n async enablePlatformApp(\n wid: string,\n data: CreateAppConnectionRequest\n ): Promise<PlatformAppConnectionResponse> {\n return this.fetch<PlatformAppConnectionResponse>(`w/${wid}/app-connections/platform-apps`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Get platform app connection details by UUID.\n */\n async getPlatformApp(wid: string, appUuid: string): Promise<PlatformAppConnectionResponse> {\n return this.fetch<PlatformAppConnectionResponse>(\n `w/${wid}/app-connections/platform-apps/${appUuid}`\n );\n }\n\n /**\n * Update platform app config, enabled status, or name.\n */\n async updatePlatformApp(\n wid: string,\n appUuid: string,\n data: UpdateAppConnectionRequest\n ): Promise<PlatformAppConnectionResponse> {\n return this.fetch<PlatformAppConnectionResponse>(\n `w/${wid}/app-connections/platform-apps/${appUuid}`,\n {\n method: 'PATCH',\n body: JSON.stringify(data),\n }\n );\n }\n\n /**\n * Disable (soft) or delete (hard) a platform app connection.\n */\n async deletePlatformApp(\n wid: string,\n appUuid: string,\n hard: boolean = false\n ): Promise<{ disabled?: boolean; deleted?: boolean; uuid: string }> {\n const params = hard ? '?hard=true' : '';\n return this.fetch<{ disabled?: boolean; deleted?: boolean; uuid: string }>(\n `w/${wid}/app-connections/platform-apps/${appUuid}${params}`,\n { method: 'DELETE' }\n );\n }\n\n /**\n * List distinct ``MemberField.key`` values scoped to a connection\n * (GRA-2920). Drives the Monday custom-match \"Custom fields\" picker.\n *\n * Returns only the set of keys already in use on this connection;\n * values are intentionally never exposed. Operators can also add a\n * new key via the UI's \"Add custom field key\" free-text action.\n */\n async listConnectionMemberFieldKeys(\n wid: string,\n connectionId: number\n ): Promise<ConnectionMemberFieldKeysResponse> {\n return this.fetch<ConnectionMemberFieldKeysResponse>(\n `w/${wid}/app-connections/${connectionId}/member-field-keys`\n );\n }\n}\n","import type {\n McpServerToolsResponse,\n McpServerResourcesResponse,\n McpServerPromptsResponse,\n McpTestConnectionResponse,\n} from '../types/app-connection-types';\nimport { McpServer, McpServerFormData, McpServerUpdateFormData } from '../types';\nimport { BaseApiClient } from './base';\n\nexport class McpServersApi extends BaseApiClient {\n /**\n * List all MCP servers in a workspace\n */\n async getMcpServers(wid: string): Promise<McpServer[]> {\n return this.fetch<McpServer[]>(`w/${wid}/app-connections/mcp-servers`);\n }\n\n /**\n * Get a specific MCP server\n */\n async getMcpServer(wid: string, serverId: number): Promise<McpServer> {\n return this.fetch<McpServer>(`w/${wid}/app-connections/mcp-servers/${serverId}`);\n }\n\n /**\n * Create a new MCP server\n */\n async createMcpServer(wid: string, data: McpServerFormData): Promise<McpServer> {\n return this.fetch<McpServer>(`w/${wid}/app-connections/mcp-servers`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Update an existing MCP server\n */\n async updateMcpServer(\n wid: string,\n serverId: number,\n data: McpServerUpdateFormData\n ): Promise<McpServer> {\n return this.fetch<McpServer>(`w/${wid}/app-connections/mcp-servers/${serverId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Delete an MCP server\n */\n async deleteMcpServer(wid: string, serverId: number): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(`w/${wid}/app-connections/mcp-servers/${serverId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Enable an MCP server\n */\n async enableMcpServer(wid: string, serverId: number): Promise<McpServer> {\n return this.fetch<McpServer>(`w/${wid}/app-connections/mcp-servers/${serverId}/enable`, {\n method: 'POST',\n });\n }\n\n /**\n * Disable an MCP server\n */\n async disableMcpServer(wid: string, serverId: number): Promise<McpServer> {\n return this.fetch<McpServer>(`w/${wid}/app-connections/mcp-servers/${serverId}/disable`, {\n method: 'POST',\n });\n }\n\n /**\n * Get tools for an MCP server.\n *\n * Returns 403 with `detail.code === 'auth_required'` when the\n * current user needs to authenticate first.\n */\n async getMcpServerTools(wid: string, serverId: number): Promise<McpServerToolsResponse> {\n return this.fetch<McpServerToolsResponse>(\n `w/${wid}/app-connections/mcp-servers/${serverId}/tools`\n );\n }\n\n /**\n * Get resources for an MCP server.\n *\n * Returns 403 with `detail.code === 'auth_required'` when the\n * current user needs to authenticate first.\n */\n async getMcpServerResources(wid: string, serverId: number): Promise<McpServerResourcesResponse> {\n return this.fetch<McpServerResourcesResponse>(\n `w/${wid}/app-connections/mcp-servers/${serverId}/resources`\n );\n }\n\n /**\n * Get prompts for an MCP server.\n *\n * Returns 403 with `detail.code === 'auth_required'` when the\n * current user needs to authenticate first.\n */\n async getMcpServerPrompts(wid: string, serverId: number): Promise<McpServerPromptsResponse> {\n return this.fetch<McpServerPromptsResponse>(\n `w/${wid}/app-connections/mcp-servers/${serverId}/prompts`\n );\n }\n\n /**\n * Test connection to an MCP server.\n */\n async testMcpServerConnection(\n wid: string,\n serverId: number\n ): Promise<McpTestConnectionResponse> {\n return this.fetch<McpTestConnectionResponse>(\n `w/${wid}/app-connections/mcp-servers/${serverId}/test`,\n { method: 'POST' }\n );\n }\n\n /**\n * Discover OAuth metadata for an authorization server\n */\n async discoverOAuthMetadata(\n wid: string,\n data: { oauthServerUrl: string }\n ): Promise<{ success: boolean; metadata?: any; error?: string }> {\n return this.fetch<{ success: boolean; metadata?: any; error?: string }>(\n `w/${wid}/app-connections/mcp-servers/oauth-discovery`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n}\n","import {\n CreateWorkspaceMemberRequest,\n Member,\n MemberFilter,\n MemberFilterFormData,\n MemberFormData,\n MemberLabel,\n MemberLabelFormData,\n MemberRole,\n MemberRoleFormData,\n MemberSortField,\n PaginatedResponse,\n SortOrder,\n UpdateWorkspaceMemberRequest,\n} from '../types';\nimport type { MemberMemoriesResponse, MemoryItem, MemoryType } from '../types/member-types';\nimport type {\n CancelCredentialChangeInviteResponse,\n CredentialChangeInviteResponse,\n CredentialType,\n PendingCredentialChangeInvite,\n} from '../types/account-types';\nimport type {\n CreateMemberFieldRequest,\n MemberField,\n MemberFieldDefinitionListResponse,\n MemberFieldListResponse,\n UpdateMemberFieldRequest,\n} from '../types/member-field-types';\nimport type {\n AnonymousMemberResolution,\n CurrentMember,\n ExpireAnonymousMemberRequest,\n PendingAnonymousMembersResponse,\n ResolveAnonymousMemberRequest,\n} from '../types/member-types';\nimport { BaseApiClient } from './base';\n\nexport class MembersApi extends BaseApiClient {\n /** Get the currently authenticated member for a workspace. */\n async getCurrentMember(wid: string): Promise<CurrentMember> {\n return this.fetch<CurrentMember>(`w/${wid}/me`);\n }\n\n /**\n * Get all members owned by the current member in this workspace.\n * Returns the authenticated member plus any members they own (via owner_id).\n * Used by the member switcher to show available identities.\n */\n async getOwnedMembers(wid: string): Promise<Member[]> {\n return this.fetch<Member[]>(`w/${wid}/members/owned`);\n }\n\n /**\n * Switch to a different member identity owned by the current member.\n * Sets the actingAsMemberUuid cookie for subsequent requests.\n * Uses UUID (not ID) to prevent cross-workspace identity confusion.\n */\n async switchMember(wid: string, memberUuid: string): Promise<Member> {\n return this.fetch<Member>(`w/${wid}/members/switch`, {\n method: 'POST',\n body: JSON.stringify({ memberUuid }),\n });\n }\n\n /**\n * Clear the member switch and return to the authenticated member.\n */\n async clearMemberSwitch(wid: string): Promise<Member> {\n return this.fetch<Member>(`w/${wid}/members/switch`, {\n method: 'DELETE',\n });\n }\n\n /** Update the currently authenticated member's profile. */\n async updateCurrentMember(wid: string, member: Partial<MemberFormData>): Promise<Member> {\n return this.fetch<Member>(`w/${wid}/me`, {\n method: 'PUT',\n body: JSON.stringify(member),\n });\n }\n\n /** List workspace members with pagination, filtering, and sorting. */\n async getWorkspaceMembers(\n wid: string,\n page: number = 1,\n pageSize: number = 10,\n filters?: { query?: string; role?: string } | any[],\n search?: string,\n role?: string,\n sortBy?: MemberSortField,\n sortOrder?: SortOrder,\n memberType?: 'member' | 'test' | 'anonymous' | 'agent',\n isArchived: boolean = false,\n isManager?: boolean,\n memberTypes?: ('member' | 'test' | 'anonymous' | 'agent')[],\n hasAccount?: boolean,\n excludeIds?: number[]\n ): Promise<PaginatedResponse<Member>> {\n const params = new URLSearchParams();\n if (page) params.append('page', page.toString());\n if (pageSize) params.append('pageSize', pageSize.toString());\n if (sortBy) params.append('sortBy', sortBy);\n if (sortOrder) params.append('sortOrder', sortOrder);\n\n // Handle both old and new filter formats\n if (filters) {\n if (Array.isArray(filters)) {\n // New format: array of filter rules\n params.append('filters', JSON.stringify(filters));\n } else {\n // Old format: simple query/role object\n params.append('filters', JSON.stringify(filters));\n }\n }\n\n // Handle individual search and role parameters\n if (search) params.append('search', search);\n if (role) params.append('role', role);\n // Filter by multiple member types (takes precedence on server)\n if (memberTypes && memberTypes.length > 0) {\n params.append('member_types', memberTypes.join(','));\n } else if (memberType) {\n // Deprecated: Filter by single member type\n params.append('member_type', memberType);\n }\n // Filter by archived status (defaults to false for non-archived members)\n params.append('is_archived', isArchived.toString());\n // Filter by manage_workspace permission\n if (isManager !== undefined) {\n params.append('is_manager', isManager.toString());\n }\n // Filter by account association\n if (hasAccount !== undefined) {\n params.append('has_account', hasAccount.toString());\n }\n // Exclude specific member IDs\n if (excludeIds && excludeIds.length > 0) {\n params.append('exclude_ids', excludeIds.join(','));\n }\n\n return this.fetch<PaginatedResponse<Member>>(`w/${wid}/members?${params.toString()}`);\n }\n\n /** Get a single workspace member by ID. */\n async getWorkspaceMember(wid: string, memberId: number): Promise<Member> {\n return this.fetch<Member>(`w/${wid}/members/${memberId}`);\n }\n\n /** Create a new workspace member. */\n async createWorkspaceMember(wid: string, data: CreateWorkspaceMemberRequest): Promise<Member> {\n return this.fetch<Member>(`w/${wid}/members`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update a workspace member by ID. */\n async updateMember(\n wid: string,\n memberId: number,\n data: UpdateWorkspaceMemberRequest\n ): Promise<Member> {\n return this.fetch<Member>(`w/${wid}/members/${memberId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Delete a workspace member, optionally forcing removal of associated data. */\n async deleteMember(wid: string, memberId: number, options?: { force?: boolean }): Promise<void> {\n const params = new URLSearchParams();\n if (options?.force) {\n params.append('force', 'true');\n }\n const queryString = params.toString();\n const url = `w/${wid}/members/${memberId}${queryString ? `?${queryString}` : ''}`;\n return this.fetch(url, {\n method: 'DELETE',\n });\n }\n\n /** Archive a workspace member. */\n async archiveMember(wid: string, memberId: number): Promise<Member> {\n return this.fetch<Member>(`w/${wid}/members/${memberId}/archive`, {\n method: 'POST',\n });\n }\n\n /** Unarchive a previously archived workspace member. */\n async unarchiveMember(wid: string, memberId: number): Promise<Member> {\n return this.fetch<Member>(`w/${wid}/members/${memberId}/unarchive`, {\n method: 'POST',\n });\n }\n\n // Member Filter APIs\n /** List all saved member filters for a workspace. */\n async getMemberFilters(wid: string): Promise<MemberFilter[]> {\n return this.fetch<MemberFilter[]>(`w/${wid}/member-filters`);\n }\n\n /** Get a single member filter by ID. */\n async getMemberFilter(wid: string, filterId: number): Promise<MemberFilter> {\n return this.fetch<MemberFilter>(`w/${wid}/member-filters/${filterId}`);\n }\n\n /** Create a new saved member filter. */\n async createMemberFilter(wid: string, data: MemberFilterFormData): Promise<MemberFilter> {\n return this.fetch<MemberFilter>(`w/${wid}/member-filters`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update a saved member filter. */\n async updateMemberFilter(\n wid: string,\n filterId: number,\n data: Partial<MemberFilterFormData>\n ): Promise<MemberFilter> {\n return this.fetch<MemberFilter>(`w/${wid}/member-filters/${filterId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Delete a saved member filter. */\n async deleteMemberFilter(wid: string, filterId: number): Promise<void> {\n return this.fetch(`w/${wid}/member-filters/${filterId}`, {\n method: 'DELETE',\n });\n }\n\n /** Get the count of members matching a saved filter. */\n async getMemberFilterCount(wid: string, filterId: number): Promise<{ count: number }> {\n return this.fetch<{ count: number }>(`w/${wid}/member-filters/${filterId}/count`);\n }\n\n // Member Labels API\n /** List all member labels for a workspace. */\n async getMemberLabels(wid: string): Promise<MemberLabel[]> {\n return this.fetch<MemberLabel[]>(`w/${wid}/member-labels`);\n }\n\n /** Get a single member label by ID. */\n async getMemberLabel(wid: string, id: number): Promise<MemberLabel> {\n return this.fetch<MemberLabel>(`w/${wid}/member-labels/${id}`);\n }\n\n /** Get a single member label by UUID. */\n async getMemberLabelByUuid(wid: string, uuid: string): Promise<MemberLabel> {\n return this.fetch<MemberLabel>(`w/${wid}/member-labels/${uuid}`);\n }\n\n /** Create a new member label. */\n async createMemberLabel(wid: string, label: MemberLabelFormData): Promise<MemberLabel> {\n return this.fetch<MemberLabel>(`w/${wid}/member-labels`, {\n method: 'POST',\n body: JSON.stringify(label),\n });\n }\n\n /** Update a member label. */\n async updateMemberLabel(\n wid: string,\n id: number,\n label: Partial<MemberLabelFormData>\n ): Promise<MemberLabel> {\n return this.fetch<MemberLabel>(`w/${wid}/member-labels/${id}`, {\n method: 'PUT',\n body: JSON.stringify(label),\n });\n }\n\n /** Delete a member label. */\n async deleteMemberLabel(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/member-labels/${id}`, {\n method: 'DELETE',\n });\n }\n\n // Member Roles API\n /** List all member roles for a workspace. */\n async getMemberRoles(wid: string): Promise<MemberRole[]> {\n return this.fetch<MemberRole[]>(`w/${wid}/member-roles`);\n }\n\n /** Get a single member role by ID. */\n async getMemberRole(wid: string, id: number): Promise<MemberRole> {\n return this.fetch<MemberRole>(`w/${wid}/member-roles/${id}`);\n }\n\n /** Get a single member role by UUID. */\n async getMemberRoleByUuid(wid: string, uuid: string): Promise<MemberRole> {\n return this.fetch<MemberRole>(`w/${wid}/member-roles/${uuid}`);\n }\n\n /** Create a new member role. */\n async createMemberRole(wid: string, memberRole: MemberRoleFormData): Promise<MemberRole> {\n return this.fetch<MemberRole>(`w/${wid}/member-roles`, {\n method: 'POST',\n body: JSON.stringify(memberRole),\n });\n }\n\n /** Update a member role. */\n async updateMemberRole(\n wid: string,\n id: number,\n memberRole: MemberRoleFormData\n ): Promise<MemberRole> {\n return this.fetch<MemberRole>(`w/${wid}/member-roles/${id}`, {\n method: 'PUT',\n body: JSON.stringify(memberRole),\n });\n }\n\n /** Delete a member role. */\n async deleteMemberRole(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/member-roles/${id}`, {\n method: 'DELETE',\n });\n }\n\n // Import/Export Members API\n /** Import members from a CSV file, streaming progress updates via callback. */\n async importMembers(\n wid: string,\n file: File,\n newMemberRoleId: number,\n onProgress?: (progress: any) => void\n ): Promise<any> {\n const formData = new FormData();\n formData.append('file', file);\n\n const params = new URLSearchParams();\n params.append('new_member_role_id', newMemberRoleId.toString());\n\n const response = await fetch(\n `${this.baseUrl}/api/v2/w/${wid}/members/import?${params.toString()}`,\n {\n method: 'POST',\n body: formData,\n credentials: 'include',\n }\n );\n\n if (!response.ok) {\n const error = await response.json();\n\n // Handle structured error response with validation errors\n if (error.detail && typeof error.detail === 'object') {\n const { message, errors } = error.detail;\n if (errors && Array.isArray(errors)) {\n // Create a custom error object with both message and errors\n const importError = new Error(message || 'Import validation failed');\n (importError as any).validationErrors = errors;\n throw importError;\n }\n }\n\n // Handle simple string error\n throw new Error(error.detail || 'Import failed');\n }\n\n if (onProgress && response.body) {\n const reader = response.body.getReader();\n const decoder = new TextDecoder();\n\n while (true) {\n const { done, value } = await reader.read();\n if (done) break;\n\n const chunk = decoder.decode(value);\n const lines = chunk.split('\\n').filter((line) => line.trim());\n\n for (const line of lines) {\n try {\n const progress = JSON.parse(line);\n onProgress(progress);\n } catch {\n // Skip invalid JSON lines\n }\n }\n }\n }\n\n return { success: true };\n }\n\n /** Export members as a downloadable file with selected fields and data types. */\n async exportMembers(\n wid: string,\n selectedFields: string[],\n selectedDataTypes: number[],\n memberType?: 'member' | 'test' | 'anonymous'\n ): Promise<Blob> {\n const params = new URLSearchParams();\n selectedFields.forEach((field) => params.append('selected_fields', field));\n selectedDataTypes.forEach((id) => params.append('selected_data_types', id.toString()));\n if (memberType) params.append('member_type', memberType);\n\n const response = await this.fetchRaw(`w/${wid}/members/export?${params.toString()}`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n });\n\n return response.blob();\n }\n\n /** Get message activity counts for the specified members over a time period. */\n async getMembersMessageActivity(\n wid: string,\n memberIds: number[],\n days: number = 30\n ): Promise<Record<number, number[]>> {\n const memberIdsStr = memberIds.join(',');\n const params = new URLSearchParams();\n params.append('member_ids', memberIdsStr);\n params.append('days', days.toString());\n\n return this.fetch<Record<number, number[]>>(\n `w/${wid}/members/message-activity?${params.toString()}`\n );\n }\n\n // ============================================================================\n // Member Fields API\n // ============================================================================\n\n /**\n * Get all fields for a member.\n * Returns key-value fields including service-owned fields (which are read-only).\n */\n async getMemberFields(wid: string, memberId: number): Promise<MemberFieldListResponse> {\n return this.fetch<MemberFieldListResponse>(`w/${wid}/members/${memberId}/fields`);\n }\n\n /**\n * Get available field definitions for this workspace.\n * Returns field keys/labels from active app connections and user-created fields.\n */\n async getMemberFieldDefinitions(wid: string): Promise<MemberFieldDefinitionListResponse> {\n return this.fetch<MemberFieldDefinitionListResponse>(`w/${wid}/member-field-definitions`);\n }\n\n /**\n * Create a new field for a member.\n * User-created fields have no service and can be modified/deleted.\n */\n async createMemberField(\n wid: string,\n memberId: number,\n request: CreateMemberFieldRequest\n ): Promise<MemberField> {\n return this.fetch<MemberField>(`w/${wid}/members/${memberId}/fields`, {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Update a member field value.\n * Only user-created fields (no service_id) can be modified.\n */\n async updateMemberField(\n wid: string,\n memberId: number,\n fieldId: number,\n request: UpdateMemberFieldRequest\n ): Promise<MemberField> {\n return this.fetch<MemberField>(`w/${wid}/members/${memberId}/fields/${fieldId}`, {\n method: 'PUT',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Delete a member field.\n * Only user-created fields (no service_id) can be deleted.\n */\n async deleteMemberField(wid: string, memberId: number, fieldId: number): Promise<void> {\n await this.fetch(`w/${wid}/members/${memberId}/fields/${fieldId}`, {\n method: 'DELETE',\n });\n }\n\n // ============================================================================\n // Credential Change Invitations API\n // ============================================================================\n\n /**\n * Invite a member to update their credential (email or phone).\n * Admin-only. Sends invitation to member's current contact method.\n */\n async inviteMemberCredentialUpdate(\n wid: string,\n memberId: number,\n credentialType: CredentialType,\n newValue: string\n ): Promise<CredentialChangeInviteResponse> {\n return this.fetch<CredentialChangeInviteResponse>(\n `w/${wid}/members/${memberId}/invite-credential-update`,\n {\n method: 'POST',\n body: JSON.stringify({\n credential_type: credentialType,\n new_value: newValue,\n }),\n }\n );\n }\n\n /**\n * Cancel a pending credential update invitation.\n * Admin-only.\n */\n async cancelCredentialUpdateInvite(\n wid: string,\n inviteId: number\n ): Promise<CancelCredentialChangeInviteResponse> {\n return this.fetch<CancelCredentialChangeInviteResponse>(\n `w/${wid}/credential-update-invites/${inviteId}`,\n { method: 'DELETE' }\n );\n }\n\n /**\n * List pending credential update invitations for the workspace, paginated.\n * Admin-only. Optionally filter by member.\n */\n async getCredentialUpdateInvites(\n wid: string,\n memberId?: number,\n pageOpts?: { page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<PendingCredentialChangeInvite>> {\n const params = new URLSearchParams();\n if (memberId) params.append('member_id', memberId.toString());\n if (pageOpts?.page !== undefined) params.set('page', String(pageOpts.page));\n if (pageOpts?.pageSize !== undefined) params.set('pageSize', String(pageOpts.pageSize));\n const qs = params.toString();\n return this.fetch<PaginatedResponse<PendingCredentialChangeInvite>>(\n `w/${wid}/credential-update-invites${qs ? `?${qs}` : ''}`\n );\n }\n\n // ============================================================================\n // Anonymous Member Resolution API\n // ============================================================================\n\n /**\n * List anonymous member resolutions with filtering and pagination.\n * Returns pending resolutions by default.\n */\n async getAnonymousResolutions(\n wid: string,\n options?: {\n status?: 'pending' | 'resolved' | 'expired';\n page?: number;\n pageSize?: number;\n }\n ): Promise<PendingAnonymousMembersResponse> {\n const params = new URLSearchParams();\n if (options?.status) params.append('status', options.status);\n if (options?.page) params.append('page', options.page.toString());\n if (options?.pageSize) params.append('pageSize', options.pageSize.toString());\n\n const queryString = params.toString();\n const url = `w/${wid}/members/anonymous-resolutions${queryString ? `?${queryString}` : ''}`;\n return this.fetch<PendingAnonymousMembersResponse>(url);\n }\n\n /**\n * Get a single anonymous member resolution by ID.\n */\n async getAnonymousResolution(\n wid: string,\n resolutionId: number\n ): Promise<AnonymousMemberResolution> {\n return this.fetch<AnonymousMemberResolution>(\n `w/${wid}/members/anonymous-resolutions/${resolutionId}`\n );\n }\n\n /**\n * Resolve an anonymous member to an existing member.\n * This merges the anonymous member's data into the target member\n * and archives the anonymous member.\n */\n async resolveAnonymousMember(\n wid: string,\n resolutionId: number,\n request: ResolveAnonymousMemberRequest\n ): Promise<AnonymousMemberResolution> {\n return this.fetch<AnonymousMemberResolution>(\n `w/${wid}/members/anonymous-resolutions/${resolutionId}/resolve`,\n {\n method: 'POST',\n body: JSON.stringify(request),\n }\n );\n }\n\n /**\n * Expire an anonymous member without resolving to a real member.\n * This archives the anonymous member without merging their data.\n */\n async expireAnonymousMember(\n wid: string,\n resolutionId: number,\n request?: ExpireAnonymousMemberRequest\n ): Promise<AnonymousMemberResolution> {\n return this.fetch<AnonymousMemberResolution>(\n `w/${wid}/members/anonymous-resolutions/${resolutionId}/expire`,\n {\n method: 'POST',\n body: JSON.stringify(request || {}),\n }\n );\n }\n\n // ===== Member Memories =====\n\n async getMemberMemories(\n wid: string,\n memberId: number,\n options?: { type?: MemoryType | 'all'; query?: string; limit?: number }\n ): Promise<MemberMemoriesResponse> {\n const params = new URLSearchParams();\n if (options?.type) params.append('type', options.type);\n if (options?.query) params.append('query', options.query);\n if (options?.limit) params.append('limit', options.limit.toString());\n const qs = params.toString();\n return this.fetch<MemberMemoriesResponse>(\n `w/${wid}/members/${memberId}/memories${qs ? `?${qs}` : ''}`\n );\n }\n\n async createMemberMemory(\n wid: string,\n memberId: number,\n body: { key: string; description: string; content?: string | null; priority?: number }\n ): Promise<MemoryItem> {\n return this.fetch<MemoryItem>(`w/${wid}/members/${memberId}/memories`, {\n method: 'POST',\n body: JSON.stringify(body),\n });\n }\n\n async deleteMemberMemory(\n wid: string,\n memberId: number,\n memoryKey: string,\n options?: { type?: MemoryType }\n ): Promise<void> {\n const params = new URLSearchParams();\n if (options?.type) params.append('type', options.type);\n const qs = params.toString();\n await this.fetch<{ status: string }>(\n `w/${wid}/members/${memberId}/memories/${encodeURIComponent(memoryKey)}${qs ? `?${qs}` : ''}`,\n { method: 'DELETE' }\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport {\n Milestone,\n MilestoneFormData,\n PaginatedResponse,\n MilestoneSortField,\n SortOrder,\n} from '../types';\n\nexport class MilestonesApi extends BaseApiClient {\n /** List milestones in a workspace with optional pagination and sorting. */\n async getMilestones(\n wid: string,\n options: {\n page?: number;\n pageSize?: number;\n sortBy?: MilestoneSortField;\n sortOrder?: SortOrder;\n search?: string;\n } = {}\n ): Promise<PaginatedResponse<Milestone>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.search) params.append('search', options.search);\n\n return this.fetch<PaginatedResponse<Milestone>>(\n `w/${wid}/milestones${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Get a single milestone by ID. */\n async getMilestone(wid: string, id: number): Promise<Milestone> {\n return this.fetch<Milestone>(`w/${wid}/milestones/${id}`);\n }\n\n /** Create a new milestone in a workspace. */\n async createMilestone(wid: string, milestone: MilestoneFormData): Promise<Milestone> {\n return this.fetch<Milestone>(`w/${wid}/milestones`, {\n method: 'POST',\n body: JSON.stringify(milestone),\n });\n }\n\n /** Update an existing milestone with partial data. */\n async updateMilestone(\n wid: string,\n id: number,\n milestone: Partial<MilestoneFormData>\n ): Promise<Milestone> {\n return this.fetch<Milestone>(`w/${wid}/milestones/${id}`, {\n method: 'PUT',\n body: JSON.stringify(milestone),\n });\n }\n\n /** Delete a milestone by ID. */\n async deleteMilestone(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/milestones/${id}`, {\n method: 'DELETE',\n });\n }\n}\n","import type { PaginatedResponse } from '../types/core-types';\nimport { BaseApiClient } from './base';\n\nexport interface MondayBoard {\n id: string;\n name: string;\n}\n\n/** Status label from Monday.com column settings */\nexport interface MondayStatusLabel {\n /** The display text of the status */\n label?: string;\n /** The color of the status (CSS color name or hex) */\n color?: string;\n /** The index used when creating webhooks for specific status changes */\n index?: number;\n /** Whether this status is deactivated */\n is_deactivated?: boolean;\n}\n\n/** Column settings - contains labels for status columns */\nexport interface MondayColumnSettings {\n /** Labels for status columns, keyed by index */\n labels?: Record<string, MondayStatusLabel | string>;\n /** Label colors for status columns */\n labels_colors?: Record<string, { color: string; border: string; var_name: string }>;\n}\n\nexport interface MondayColumn {\n id: string;\n title: string;\n type: string;\n /** Column settings - contains labels for status columns */\n settings?: MondayColumnSettings | null;\n}\n\nexport interface BoardsResponse {\n boards: MondayBoard[];\n}\n\nexport interface ColumnsResponse {\n columns: MondayColumn[];\n}\n\nexport interface MondayGroup {\n id: string;\n title: string;\n}\n\nexport interface GroupsResponse {\n groups: MondayGroup[];\n}\n\nexport interface CurrentUserInfoResponse {\n connected: boolean;\n userName?: string;\n userEmail?: string;\n accountName?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Monday.com Connection types (parallel to HubSpot/Salesforce)\n// ---------------------------------------------------------------------------\n\nexport interface MondayConnectionStatus {\n connectionId: number | null;\n connected: boolean;\n state: string | null;\n mondayAccountId: string | null;\n accountName: string | null;\n userName: string | null;\n authorizeUrl: string | null;\n error: string | null;\n authorizedByMemberId: number | null;\n authorizedAt: string | null;\n}\n\nexport interface MondayReconciliationMatch {\n memberId: number;\n mondayItemId: string;\n mondayItemName: string | null;\n boardId: string;\n matchType: string;\n}\n\nexport interface LinkMemberToMondayRequest {\n memberId: number;\n mondayItemId: string;\n boardId: string;\n}\n\nexport interface BulkLinkMondayRequest {\n links: LinkMemberToMondayRequest[];\n}\n\nexport interface LinkedMondayMember {\n memberId: number;\n /**\n * Monday item ID for sync-linked rows. Null for OAuth-only rows where the\n * member has authorized Monday but is not (yet) linked to a board item.\n */\n mondayItemId: string | null;\n /**\n * Board ID for sync-linked rows. Null for OAuth-only rows. The unlink\n * endpoint requires a board ID, so OAuth-only rows cannot be removed\n * via the board-link unlink action.\n */\n boardId: string | null;\n linkSource: 'sync' | 'oauth';\n memberName: string | null;\n memberEmail: string | null;\n memberPhone: string | null;\n lastSyncedAt: string | null;\n lastSyncStatus: string | null;\n}\n\nexport interface LinkedMondayRecord {\n recordId: number;\n externalId: string | null;\n dataTypeId: number;\n dataTypeName: string;\n mondayItemId: string;\n boardId: string;\n}\n\nexport interface MondayImportRequest {\n boardId: string;\n targetType?: 'member' | 'data_record';\n dataTypeId?: number;\n filterExpression?: string;\n createUnmatched?: boolean;\n dryRun?: boolean;\n}\n\nexport interface MondayImportResponse {\n streamKey: string;\n message: string;\n}\n\nexport interface MondaySyncConfigResponse {\n syncConfig: Record<string, unknown> | null;\n managedFields: { key: string; label: string }[];\n warnings?: string[];\n}\n\n/**\n * API for Monday.com integration operations\n */\nexport class MondayIntegrationApi extends BaseApiClient {\n /**\n * Get list of boards from the workspace Monday.com connection\n */\n async getBoards(wid: string): Promise<BoardsResponse> {\n const boards = await this.fetch<MondayBoard[]>(`w/${wid}/app-connections/monday/boards`);\n return { boards };\n }\n\n /**\n * Get columns for a specific Monday.com board\n */\n async getBoardColumns(wid: string, boardId: string): Promise<ColumnsResponse> {\n const columns = await this.fetch<MondayColumn[]>(\n `w/${wid}/app-connections/monday/boards/${boardId}/columns`\n );\n return { columns };\n }\n\n /**\n * Get groups for a specific Monday.com board\n */\n async getBoardGroups(wid: string, boardId: string): Promise<GroupsResponse> {\n const groups = await this.fetch<MondayGroup[]>(\n `w/${wid}/app-connections/monday/boards/${boardId}/groups`\n );\n return { groups };\n }\n\n /**\n * Get info about the current user's Monday.com connection\n */\n async getCurrentUserInfo(wid: string): Promise<CurrentUserInfoResponse> {\n return this.fetch<CurrentUserInfoResponse>(`w/${wid}/app-connections/monday/current-user`);\n }\n\n // -----------------------------------------------------------------------\n // Monday.com Connection management (OAuth, status, sync, reconciliation)\n // -----------------------------------------------------------------------\n\n async configureMondayConnection(\n wid: string,\n data: { clientId: string; clientSecret: string; signingSecret?: string }\n ): Promise<MondayConnectionStatus> {\n return this.fetch<MondayConnectionStatus>(`w/${wid}/app-connections/monday/configure`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async getMondayConnectionStatus(wid: string): Promise<MondayConnectionStatus> {\n return this.fetch<MondayConnectionStatus>(`w/${wid}/app-connections/monday/status`);\n }\n\n async authorizeMondayConnection(wid: string): Promise<{ authorizeUrl: string }> {\n return this.fetch<{ authorizeUrl: string }>(`w/${wid}/app-connections/monday/authorize`);\n }\n\n async testMondayConnection(\n wid: string\n ): Promise<{ status: string; userName?: string; accountName?: string }> {\n return this.fetch(`w/${wid}/app-connections/monday/test`, { method: 'POST' });\n }\n\n async disconnectMondayConnection(wid: string): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/app-connections/monday/disconnect`, {\n method: 'DELETE',\n });\n }\n\n async disableMondayConnection(wid: string): Promise<MondayConnectionStatus> {\n return this.fetch<MondayConnectionStatus>(`w/${wid}/app-connections/monday/disable`, {\n method: 'POST',\n });\n }\n\n async enableMondayConnection(wid: string): Promise<MondayConnectionStatus> {\n return this.fetch<MondayConnectionStatus>(`w/${wid}/app-connections/monday/enable`, {\n method: 'POST',\n });\n }\n\n async deleteMondayConnection(wid: string): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/app-connections/monday/delete`, {\n method: 'DELETE',\n });\n }\n\n async getMondayConnectionBoards(wid: string): Promise<MondayBoard[]> {\n return this.fetch<MondayBoard[]>(`w/${wid}/app-connections/monday/boards`);\n }\n\n async getMondayConnectionBoardColumns(wid: string, boardId: string): Promise<MondayColumn[]> {\n return this.fetch<MondayColumn[]>(\n `w/${wid}/app-connections/monday/boards/${boardId}/columns`\n );\n }\n\n async getMondayConnectionBoardGroups(wid: string, boardId: string): Promise<MondayGroup[]> {\n return this.fetch<MondayGroup[]>(`w/${wid}/app-connections/monday/boards/${boardId}/groups`);\n }\n\n async getMondaySyncConfig(wid: string): Promise<MondaySyncConfigResponse> {\n return this.fetch<MondaySyncConfigResponse>(`w/${wid}/app-connections/monday/sync-config`);\n }\n\n async updateMondaySyncConfig(\n wid: string,\n syncConfig: Record<string, unknown>\n ): Promise<MondaySyncConfigResponse> {\n return this.fetch<MondaySyncConfigResponse>(`w/${wid}/app-connections/monday/sync-config`, {\n method: 'PUT',\n body: JSON.stringify({ syncConfig }),\n });\n }\n\n async getLinkedMondayMembers(\n wid: string,\n params?: { board_id?: string; page?: number; pageSize?: number; search?: string }\n ): Promise<PaginatedResponse<LinkedMondayMember>> {\n const query = new URLSearchParams();\n if (params?.board_id) query.set('board_id', params.board_id);\n if (params?.page !== undefined) query.set('page', String(params.page));\n if (params?.pageSize !== undefined) query.set('pageSize', String(params.pageSize));\n if (params?.search?.trim()) query.set('search', params.search.trim());\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<LinkedMondayMember>>(\n `w/${wid}/app-connections/monday/reconciliation/linked${qs}`\n );\n }\n\n async getMondayReconciliationMatches(\n wid: string,\n params?: { limit?: number; offset?: number }\n ): Promise<MondayReconciliationMatch[]> {\n const query = new URLSearchParams();\n if (params?.limit !== undefined) query.set('limit', String(params.limit));\n if (params?.offset !== undefined) query.set('offset', String(params.offset));\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<MondayReconciliationMatch[]>(\n `w/${wid}/app-connections/monday/reconciliation/matches${qs}`\n );\n }\n\n async linkMemberToMonday(\n wid: string,\n data: LinkMemberToMondayRequest\n ): Promise<{ status: string; memberId: number; mondayItemId: string }> {\n return this.fetch(`w/${wid}/app-connections/monday/reconciliation/link`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async bulkLinkMembersToMonday(\n wid: string,\n data: BulkLinkMondayRequest\n ): Promise<{ linked: number }> {\n return this.fetch(`w/${wid}/app-connections/monday/reconciliation/link/bulk`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async unlinkMemberFromMonday(\n wid: string,\n memberId: number,\n boardId: string\n ): Promise<{ status: string; memberId: number }> {\n return this.fetch(\n `w/${wid}/app-connections/monday/reconciliation/unlink/${memberId}?board_id=${encodeURIComponent(boardId)}`,\n { method: 'DELETE' }\n );\n }\n\n async getLinkedRecords(\n wid: string,\n params?: { board_id?: string; page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<LinkedMondayRecord>> {\n const query = new URLSearchParams();\n if (params?.board_id) query.set('board_id', params.board_id);\n if (params?.page !== undefined) query.set('page', String(params.page));\n if (params?.pageSize !== undefined) query.set('pageSize', String(params.pageSize));\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<LinkedMondayRecord>>(\n `w/${wid}/app-connections/monday/linked-records${qs}`\n );\n }\n\n async importFromBoard(wid: string, data: MondayImportRequest): Promise<MondayImportResponse> {\n return this.fetch<MondayImportResponse>(`w/${wid}/app-connections/monday/import`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async autoCreateDataTypeFromBoard(\n wid: string,\n boardId: string\n ): Promise<{\n dataTypeId: number;\n dataTypeName: string;\n fieldCount: number;\n warnings?: string[];\n }> {\n return this.fetch(`w/${wid}/app-connections/monday/boards/${boardId}/auto-create-data-type`, {\n method: 'POST',\n });\n }\n}\n","import { BaseApiClient } from './base';\n\nexport interface NotificationRule {\n id?: number;\n noticeType: string;\n memberId: number;\n workflowId?: number | null;\n prompt?: string | null;\n notifySms: boolean;\n notifyEmail: boolean;\n notifyVoice: boolean;\n}\n\nexport interface NotificationRuleCreate {\n noticeType: string;\n memberId: number;\n workflowId?: number | null;\n prompt?: string | null;\n notifySms: boolean;\n notifyEmail: boolean;\n notifyVoice: boolean;\n}\n\nexport interface NotificationRuleUpdate {\n noticeType?: string;\n memberId?: number;\n workflowId?: number | null;\n prompt?: string | null;\n notifySms?: boolean;\n notifyEmail?: boolean;\n notifyVoice?: boolean;\n}\n\nexport class NotificationRulesApi extends BaseApiClient {\n /** List all notification rules in a workspace. */\n async getNotificationRules(wid: string): Promise<NotificationRule[]> {\n return this.fetch<NotificationRule[]>(`w/${wid}/notification-rules`);\n }\n\n /** Create a new notification rule. */\n async createNotificationRule(\n wid: string,\n rule: NotificationRuleCreate\n ): Promise<NotificationRule> {\n return this.fetch<NotificationRule>(`w/${wid}/notification-rules`, {\n method: 'POST',\n body: JSON.stringify(rule),\n });\n }\n\n /** Update a notification rule. */\n async updateNotificationRule(\n wid: string,\n ruleId: number,\n rule: NotificationRuleUpdate\n ): Promise<NotificationRule> {\n return this.fetch<NotificationRule>(`w/${wid}/notification-rules/${ruleId}`, {\n method: 'PUT',\n body: JSON.stringify(rule),\n });\n }\n\n /** Delete a notification rule. */\n async deleteNotificationRule(wid: string, ruleId: number): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(`w/${wid}/notification-rules/${ruleId}`, {\n method: 'DELETE',\n });\n }\n}\n","import { BaseApiClient } from './base';\nimport type {\n AddGroupMemberRequest,\n ChatMessage,\n CreateOperatorGroupRequest,\n LiveOperatorsResponse,\n OperatorGroup,\n OperatorGroupMember,\n PresenceStatusResponse,\n UpdateOperatorGroupRequest,\n} from '../types';\n\nexport class OperatorApi extends BaseApiClient {\n /** List all operator groups for a workspace. */\n async getOperatorGroups(wid: string): Promise<OperatorGroup[]> {\n return this.fetch<OperatorGroup[]>(`w/${wid}/operator/groups`);\n }\n\n /** Get a single operator group by ID. */\n async getOperatorGroup(wid: string, groupId: number): Promise<OperatorGroup> {\n return this.fetch<OperatorGroup>(`w/${wid}/operator/groups/${groupId}`);\n }\n\n /** Create a new operator group. */\n async createOperatorGroup(\n wid: string,\n data: CreateOperatorGroupRequest\n ): Promise<OperatorGroup> {\n return this.fetch<OperatorGroup>(`w/${wid}/operator/groups`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update an operator group. */\n async updateOperatorGroup(\n wid: string,\n groupId: number,\n data: UpdateOperatorGroupRequest\n ): Promise<OperatorGroup> {\n return this.fetch<OperatorGroup>(`w/${wid}/operator/groups/${groupId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Delete an operator group. */\n async deleteOperatorGroup(wid: string, groupId: number): Promise<void> {\n return this.fetch(`w/${wid}/operator/groups/${groupId}`, {\n method: 'DELETE',\n });\n }\n\n /** Add a member to an operator group. */\n async addGroupMember(\n wid: string,\n groupId: number,\n data: AddGroupMemberRequest\n ): Promise<OperatorGroupMember> {\n return this.fetch<OperatorGroupMember>(`w/${wid}/operator/groups/${groupId}/members`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Remove a member from an operator group. */\n async removeGroupMember(wid: string, groupId: number, memberId: number): Promise<void> {\n return this.fetch(`w/${wid}/operator/groups/${groupId}/members/${memberId}`, {\n method: 'DELETE',\n });\n }\n\n /** Get all currently live (online) operators in a workspace. */\n async getLiveOperators(wid: string): Promise<LiveOperatorsResponse> {\n return this.fetch<LiveOperatorsResponse>(`w/${wid}/presence/live`);\n }\n\n /** Get the current member's presence status. */\n async getPresenceStatus(wid: string): Promise<PresenceStatusResponse> {\n return this.fetch<PresenceStatusResponse>(`w/${wid}/presence/me`);\n }\n\n /** Disconnect the current member's presence session. */\n async disconnectPresence(wid: string): Promise<{ ok: boolean }> {\n return this.fetch<{ ok: boolean }>(`w/${wid}/presence/disconnect-self`, {\n method: 'POST',\n });\n }\n\n // Operator chat message methods\n\n /** Get paginated chat messages for an operator chat. */\n async getOperatorChatMessages(\n wid: string,\n chatId: number,\n limit = 50,\n offset = 0\n ): Promise<ChatMessage[]> {\n return this.fetch<ChatMessage[]>(\n `w/${wid}/operator/chats/${chatId}/messages?limit=${limit}&offset=${offset}`\n );\n }\n\n /** Send a message in an operator chat. */\n async sendOperatorMessage(\n wid: string,\n chatId: number,\n content: string\n ): Promise<{\n id: number;\n uuid: string | null;\n role: string;\n content: string;\n createdAt: string | null;\n }> {\n return this.fetch(`w/${wid}/operator/chats/${chatId}/messages`, {\n method: 'POST',\n body: JSON.stringify({ content }),\n });\n }\n}\n","/**\n * Organization API client for /api/v2/o/{org_uuid}/ routes.\n *\n * This client handles organization-scoped operations using the new org routes\n * that support both numeric IDs and UUIDs (auto-detected on the backend).\n */\nimport {\n AdminOrganization,\n CreateOrganizationInvitationFormData,\n CurrentOrgMember,\n Invitation,\n InvitationListResponse,\n InvitationStatus,\n MemberOrgView,\n MemberRole,\n OrgCreateWorkspaceFormData,\n OrgJoinWorkspaceRequest,\n OrgJoinWorkspaceResponse,\n OrgMember,\n OrgMemberListResponse,\n OrgWorkspace,\n OrgWorkspaceFormData,\n PaginatedResponse,\n AvailablePhoneNumber,\n OrgA2PStatus,\n ProviderPhoneNumber,\n SortOrder,\n UpdateInvitationFormData,\n UpdateOrgMemberRequest,\n WorkspaceSortField,\n} from '../types';\nimport type {\n BusinessProfileResponse,\n CancelBusinessProfileResponse,\n EmailDomainConfig,\n EmailDomainConfigGetResponse,\n EmailDisableImpactResponse,\n EmailDisableResponse,\n EmailVerificationResponse,\n OrgDomain,\n OrgDomainListResponse,\n OwnershipVerificationResponse,\n SiteDomainConfig,\n SiteDomainConfigGetResponse,\n SiteDisableImpactResponse,\n SiteDisableResponse,\n SiteVerificationResponse,\n SubmitBusinessProfileResponse,\n UpdateBusinessProfileRequest,\n} from '../types/organization-types';\nimport { BaseApiClient } from './base';\n\n/** Union type for organization response - admin view or member view */\nexport type OrganizationResponse = AdminOrganization | MemberOrgView;\n\nexport class OrgApi extends BaseApiClient {\n /**\n * Get organization by ID or UUID.\n * Returns different response based on user's role:\n * - Admins/Owners: AdminOrganization with full details\n * - Members: MemberOrgView with basic info and workspace list\n *\n * Use `viewType` field to determine the response type:\n * - 'admin': AdminOrganization\n * - 'member': MemberOrgView\n */\n async getOrganization(idOrUuid: number | string): Promise<OrganizationResponse> {\n return this.fetch<OrganizationResponse>(`o/${idOrUuid}`);\n }\n\n /**\n * Get the current user's membership in an organization.\n * Returns the user's org membership details including their role and scopes.\n */\n async getCurrentOrgMember(orgIdOrUuid: number | string): Promise<CurrentOrgMember> {\n return this.fetch<CurrentOrgMember>(`o/${orgIdOrUuid}/me`);\n }\n\n /**\n * Get the billing customer UUID for an organization.\n */\n async getOrgBillingCustomer(\n orgIdOrUuid: number | string\n ): Promise<{ customerUuid: string | null; customerName: string | null; hasAccess: boolean }> {\n return this.fetch<{\n customerUuid: string | null;\n customerName: string | null;\n hasAccess: boolean;\n }>(`o/${orgIdOrUuid}/billing-customer`);\n }\n\n /**\n * List members of an organization.\n */\n async getOrganizationMembers(\n orgIdOrUuid: number | string,\n options?: {\n search?: string;\n page?: number;\n pageSize?: number;\n }\n ): Promise<OrgMemberListResponse> {\n const params = new URLSearchParams();\n if (options?.search) params.append('search', options.search);\n if (options?.page) params.append('page', options.page.toString());\n if (options?.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<OrgMemberListResponse>(`o/${orgIdOrUuid}/members?${params.toString()}`);\n }\n\n /**\n * Check if an account is already a member of an organization.\n */\n async checkAccountMembership(\n orgUuid: string,\n accountUuid: string\n ): Promise<{ isMember: boolean }> {\n return this.fetch<{ isMember: boolean }>(`o/${orgUuid}/members/check/${accountUuid}`);\n }\n\n /**\n * Update an organization member's role.\n */\n async updateOrganizationMember(\n orgIdOrUuid: number | string,\n memberId: number,\n data: UpdateOrgMemberRequest\n ): Promise<OrgMember> {\n return this.fetch<OrgMember>(`o/${orgIdOrUuid}/members/${memberId}`, {\n method: 'PATCH',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Remove a member from an organization.\n */\n async removeOrganizationMember(orgIdOrUuid: number | string, memberId: number): Promise<void> {\n return this.fetch<void>(`o/${orgIdOrUuid}/members/${memberId}`, {\n method: 'DELETE',\n });\n }\n\n // ============================================================================\n // Organization Invitations API\n // ============================================================================\n\n /**\n * List invitations for an organization.\n */\n async listOrganizationInvitations(\n orgIdOrUuid: number | string,\n options?: {\n status?: InvitationStatus;\n page?: number;\n pageSize?: number;\n }\n ): Promise<InvitationListResponse> {\n const params = new URLSearchParams();\n if (options?.status) params.append('status', options.status);\n if (options?.page) params.append('page', options.page.toString());\n if (options?.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<InvitationListResponse>(\n `o/${orgIdOrUuid}/invitations?${params.toString()}`\n );\n }\n\n /**\n * Create a new invitation to join the organization.\n */\n async createOrganizationInvitation(\n orgIdOrUuid: number | string,\n data: CreateOrganizationInvitationFormData\n ): Promise<Invitation> {\n return this.fetch<Invitation>(`o/${orgIdOrUuid}/invitations`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Get a specific organization invitation.\n */\n async getOrganizationInvitation(\n orgIdOrUuid: number | string,\n invitationId: number\n ): Promise<Invitation> {\n return this.fetch<Invitation>(`o/${orgIdOrUuid}/invitations/${invitationId}`);\n }\n\n /**\n * Update an organization invitation.\n */\n async updateOrganizationInvitation(\n orgIdOrUuid: number | string,\n invitationId: number,\n data: UpdateInvitationFormData\n ): Promise<Invitation> {\n return this.fetch<Invitation>(`o/${orgIdOrUuid}/invitations/${invitationId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Delete (cancel) an organization invitation.\n */\n async deleteOrganizationInvitation(\n orgIdOrUuid: number | string,\n invitationId: number\n ): Promise<void> {\n return this.fetch<void>(`o/${orgIdOrUuid}/invitations/${invitationId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Resend an organization invitation email.\n */\n async resendOrganizationInvitation(\n orgIdOrUuid: number | string,\n invitationId: number\n ): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(\n `o/${orgIdOrUuid}/invitations/${invitationId}/resend`,\n {\n method: 'POST',\n }\n );\n }\n\n // ============================================================================\n // Organization Workspaces API\n // ============================================================================\n\n /**\n * List workspaces in an organization with pagination.\n */\n async getOrganizationWorkspaces(\n orgIdOrUuid: number | string,\n options?: {\n page?: number;\n pageSize?: number;\n sortBy?: WorkspaceSortField;\n sortOrder?: SortOrder;\n search?: string;\n }\n ): Promise<PaginatedResponse<OrgWorkspace>> {\n const params = new URLSearchParams();\n if (options?.page) params.append('page', options.page.toString());\n if (options?.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options?.sortBy) params.append('sortBy', options.sortBy);\n if (options?.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options?.search) params.append('search', options.search);\n\n return this.fetch<PaginatedResponse<OrgWorkspace>>(\n `o/${orgIdOrUuid}/workspaces?${params.toString()}`\n );\n }\n\n /**\n * Get a single workspace in an organization.\n */\n async getOrganizationWorkspace(\n orgIdOrUuid: number | string,\n workspaceUuid: string\n ): Promise<OrgWorkspace> {\n return this.fetch<OrgWorkspace>(`o/${orgIdOrUuid}/workspaces/${workspaceUuid}`);\n }\n\n /**\n * Create a workspace in an organization.\n */\n async createOrganizationWorkspace(\n orgIdOrUuid: number | string,\n data: OrgCreateWorkspaceFormData\n ): Promise<OrgWorkspace> {\n return this.fetch<OrgWorkspace>(`o/${orgIdOrUuid}/workspaces`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Update a workspace in an organization.\n */\n async updateOrganizationWorkspace(\n orgIdOrUuid: number | string,\n workspaceUuid: string,\n data: OrgWorkspaceFormData\n ): Promise<OrgWorkspace> {\n return this.fetch<OrgWorkspace>(`o/${orgIdOrUuid}/workspaces/${workspaceUuid}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n // ============================================================================\n // Organization Phone Numbers API\n // ============================================================================\n\n /**\n * List all provider phone numbers owned by this organization.\n */\n async listPhoneNumbers(orgUuid: string): Promise<ProviderPhoneNumber[]> {\n return this.fetch<ProviderPhoneNumber[]>(`o/${orgUuid}/phone-numbers`);\n }\n\n /**\n * Assign a phone number to a workspace.\n */\n async assignPhoneToWorkspace(\n orgUuid: string,\n providerPhoneUuid: string,\n workspaceUuid: string\n ): Promise<ProviderPhoneNumber> {\n return this.fetch<ProviderPhoneNumber>(`o/${orgUuid}/phone-numbers/assign`, {\n method: 'POST',\n body: JSON.stringify({ providerPhoneUuid, workspaceUuid }),\n });\n }\n\n /**\n * Reassign a phone number to a different workspace.\n */\n async reassignPhone(\n orgUuid: string,\n providerPhoneUuid: string,\n newWorkspaceUuid: string\n ): Promise<ProviderPhoneNumber> {\n return this.fetch<ProviderPhoneNumber>(`o/${orgUuid}/phone-numbers/reassign`, {\n method: 'POST',\n body: JSON.stringify({ providerPhoneUuid, newWorkspaceUuid }),\n });\n }\n\n /**\n * Release a phone number from its current workspace.\n */\n async releasePhone(orgUuid: string, providerPhoneUuid: string): Promise<ProviderPhoneNumber> {\n return this.fetch<ProviderPhoneNumber>(`o/${orgUuid}/phone-numbers/release`, {\n method: 'POST',\n body: JSON.stringify({ providerPhoneUuid }),\n });\n }\n\n /**\n * Search for available phone numbers to purchase from Twilio.\n */\n async searchPhoneNumbers(\n orgUuid: string,\n params?: {\n numberType?: 'local' | 'toll_free';\n areaCode?: string;\n contains?: string;\n limit?: number;\n }\n ): Promise<AvailablePhoneNumber[]> {\n const query = new URLSearchParams();\n if (params?.numberType) query.set('number_type', params.numberType);\n if (params?.areaCode) query.set('area_code', params.areaCode);\n if (params?.contains) query.set('contains', params.contains);\n if (params?.limit) query.set('limit', String(params.limit));\n const qs = query.toString();\n return this.fetch<AvailablePhoneNumber[]>(\n `o/${orgUuid}/phone-numbers/search${qs ? `?${qs}` : ''}`\n );\n }\n\n /**\n * Purchase a phone number from Twilio for this org inventory (org admin only).\n */\n async purchasePhoneNumber(\n orgUuid: string,\n phoneNumber: string,\n numberType: 'local' | 'toll_free'\n ): Promise<ProviderPhoneNumber> {\n return this.fetch<ProviderPhoneNumber>(`o/${orgUuid}/phone-numbers/purchase`, {\n method: 'POST',\n body: JSON.stringify({ phoneNumber, numberType }),\n });\n }\n\n /**\n * Delete a phone number from the org (releases from Twilio).\n */\n async deletePhoneNumber(orgUuid: string, providerPhoneUuid: string): Promise<void> {\n await this.fetch(`o/${orgUuid}/phone-numbers/delete`, {\n method: 'POST',\n body: JSON.stringify({ providerPhoneUuid }),\n });\n }\n\n // ============================================================================\n // Organization Domains API\n // ============================================================================\n\n /**\n * List domains registered to an organization.\n */\n async listOrgDomains(orgIdOrUuid: number | string): Promise<OrgDomainListResponse> {\n return this.fetch<OrgDomainListResponse>(`o/${orgIdOrUuid}/domains`);\n }\n\n /**\n * Register a domain with an organization and return the TXT ownership proof.\n */\n async registerOrgDomain(orgIdOrUuid: number | string, domain: string): Promise<OrgDomain> {\n return this.fetch<OrgDomain>(`o/${orgIdOrUuid}/domains`, {\n method: 'POST',\n body: JSON.stringify({ domain }),\n });\n }\n\n /**\n * Get a registered organization domain by UUID.\n */\n async getOrgDomain(orgIdOrUuid: number | string, domainUuid: string): Promise<OrgDomain> {\n return this.fetch<OrgDomain>(`o/${orgIdOrUuid}/domains/${domainUuid}`);\n }\n\n /**\n * Verify domain ownership by checking the _gravity-verify TXT record.\n */\n async verifyOrgDomainOwnership(\n orgIdOrUuid: number | string,\n domainUuid: string\n ): Promise<OwnershipVerificationResponse> {\n return this.fetch<OwnershipVerificationResponse>(\n `o/${orgIdOrUuid}/domains/${domainUuid}/verify-ownership`,\n { method: 'POST' }\n );\n }\n\n /**\n * Delete a registered organization domain.\n */\n async deleteOrgDomain(orgIdOrUuid: number | string, domainUuid: string): Promise<void> {\n await this.fetch<void>(`o/${orgIdOrUuid}/domains/${domainUuid}`, { method: 'DELETE' });\n }\n\n /**\n * Enable email DNS provisioning for a verified org domain.\n */\n async enableOrgDomainEmail(\n orgIdOrUuid: number | string,\n domainUuid: string\n ): Promise<EmailDomainConfig> {\n return this.fetch<EmailDomainConfig>(`o/${orgIdOrUuid}/domains/${domainUuid}/email`, {\n method: 'POST',\n });\n }\n\n /**\n * Get email DNS provisioning and verification status for an org domain.\n */\n async getOrgDomainEmail(\n orgIdOrUuid: number | string,\n domainUuid: string\n ): Promise<EmailDomainConfigGetResponse> {\n return this.fetch<EmailDomainConfigGetResponse>(\n `o/${orgIdOrUuid}/domains/${domainUuid}/email`\n );\n }\n\n /**\n * Verify email DNS records, including MX.\n */\n async verifyOrgDomainEmail(\n orgIdOrUuid: number | string,\n domainUuid: string\n ): Promise<EmailVerificationResponse> {\n return this.fetch<EmailVerificationResponse>(\n `o/${orgIdOrUuid}/domains/${domainUuid}/email/verify`,\n { method: 'POST' }\n );\n }\n\n /**\n * Disable email support for an org domain.\n */\n async disableOrgDomainEmail(\n orgIdOrUuid: number | string,\n domainUuid: string,\n confirm = false\n ): Promise<EmailDisableResponse> {\n const query = `?confirm=${confirm ? 'true' : 'false'}`;\n const response = await this.fetchRaw(\n `o/${orgIdOrUuid}/domains/${domainUuid}/email${query}`,\n { method: 'DELETE' },\n [409]\n );\n if (response.status === 409) {\n const impact = (await response.json()) as EmailDisableImpactResponse;\n return { ok: false, impact };\n }\n return { ok: true };\n }\n\n /**\n * Enable custom site routing for a verified org domain.\n */\n async enableOrgDomainSite(\n orgIdOrUuid: number | string,\n domainUuid: string\n ): Promise<SiteDomainConfig> {\n return this.fetch<SiteDomainConfig>(`o/${orgIdOrUuid}/domains/${domainUuid}/site`, {\n method: 'POST',\n });\n }\n\n /**\n * Get site CNAME provisioning and verification status for an org domain.\n */\n async getOrgDomainSite(\n orgIdOrUuid: number | string,\n domainUuid: string\n ): Promise<SiteDomainConfigGetResponse> {\n return this.fetch<SiteDomainConfigGetResponse>(`o/${orgIdOrUuid}/domains/${domainUuid}/site`);\n }\n\n /**\n * Verify the site CNAME points at the Gravity Rail sites domain.\n */\n async verifyOrgDomainSite(\n orgIdOrUuid: number | string,\n domainUuid: string\n ): Promise<SiteVerificationResponse> {\n return this.fetch<SiteVerificationResponse>(\n `o/${orgIdOrUuid}/domains/${domainUuid}/site/verify`,\n { method: 'POST' }\n );\n }\n\n /**\n * Disable custom site routing for an org domain.\n */\n async disableOrgDomainSite(\n orgIdOrUuid: number | string,\n domainUuid: string,\n confirm = false\n ): Promise<SiteDisableResponse> {\n const query = `?confirm=${confirm ? 'true' : 'false'}`;\n const response = await this.fetchRaw(\n `o/${orgIdOrUuid}/domains/${domainUuid}/site${query}`,\n { method: 'DELETE' },\n [409]\n );\n if (response.status === 409) {\n const impact = (await response.json()) as SiteDisableImpactResponse;\n return { ok: false, impact };\n }\n return { ok: true };\n }\n\n // ============================================================================\n // Organization A2P Brand Registration API\n // ============================================================================\n\n /**\n * Get the org's A2P brand registration status.\n */\n async getA2PStatus(orgUuid: string): Promise<OrgA2PStatus> {\n return this.fetch<OrgA2PStatus>(`o/${orgUuid}/phone-numbers/a2p/status`);\n }\n\n /**\n * Start org-level A2P brand registration.\n */\n async startA2PRegistration(\n orgUuid: string,\n brandName: string,\n brandDescription: string\n ): Promise<{ status: string; workflowId: string }> {\n return this.fetch<{ status: string; workflowId: string }>(\n `o/${orgUuid}/phone-numbers/a2p/start`,\n {\n method: 'POST',\n body: JSON.stringify({ brandName, brandDescription }),\n }\n );\n }\n\n /**\n * Approve sample messages for the org's A2P campaign.\n */\n async approveA2PMessages(\n orgUuid: string,\n sampleMessages: string[]\n ): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`o/${orgUuid}/phone-numbers/a2p/approve-messages`, {\n method: 'POST',\n body: JSON.stringify({ sampleMessages }),\n });\n }\n\n // ============================================================================\n // Organization Business Profile API (Twilio Trust Hub Secondary CP)\n // ============================================================================\n\n /**\n * Live fetch of the org's Twilio Customer Profile + related entities.\n *\n * Response carries both the lifecycle `status` and the compliance\n * `evaluationStatus`. Twilio models lifecycle and evaluation as two\n * separate enums on two separate resources, so the Submit-button gate\n * is `evaluationStatus === 'compliant'` — never `status === 'compliant'`,\n * which is impossible (lifecycle status is one of `draft` /\n * `pending-review` / `in-review` / `twilio-approved` / `twilio-rejected`).\n */\n async getBusinessProfile(orgUuid: string): Promise<BusinessProfileResponse> {\n return this.fetch<BusinessProfileResponse>(`o/${orgUuid}/business-profile`);\n }\n\n /**\n * Upsert the org's business profile. Idempotent via cached SIDs.\n * Returns a fresh BusinessProfileResponse on success — including the\n * compliance evaluation result so the frontend can immediately enable\n * Submit without a second round-trip.\n */\n async updateBusinessProfile(\n orgUuid: string,\n data: UpdateBusinessProfileRequest\n ): Promise<BusinessProfileResponse> {\n return this.fetch<BusinessProfileResponse>(`o/${orgUuid}/business-profile`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Submit the business profile to Twilio for review. Server re-evaluates\n * compliance live and returns 412 if the profile is not currently\n * `compliant`; returns 409 if a review is already in flight.\n */\n async submitBusinessProfile(orgUuid: string): Promise<SubmitBusinessProfileResponse> {\n return this.fetch<SubmitBusinessProfileResponse>(`o/${orgUuid}/business-profile/submit`, {\n method: 'POST',\n });\n }\n\n /**\n * Cancel an in-flight Twilio review. Resets the cached profile state\n * to `draft` so the user can edit and resubmit.\n */\n async cancelBusinessProfile(orgUuid: string): Promise<CancelBusinessProfileResponse> {\n return this.fetch<CancelBusinessProfileResponse>(`o/${orgUuid}/business-profile/cancel`, {\n method: 'POST',\n });\n }\n\n /**\n * List available member roles for a workspace in the organization.\n */\n async getWorkspaceMemberRoles(\n orgIdOrUuid: number | string,\n workspaceUuid: string\n ): Promise<MemberRole[]> {\n return this.fetch<MemberRole[]>(`o/${orgIdOrUuid}/workspaces/${workspaceUuid}/member-roles`);\n }\n\n /**\n * Join a workspace as the current org admin/owner.\n */\n async joinWorkspace(\n orgIdOrUuid: number | string,\n workspaceUuid: string,\n data: OrgJoinWorkspaceRequest\n ): Promise<OrgJoinWorkspaceResponse> {\n return this.fetch<OrgJoinWorkspaceResponse>(\n `o/${orgIdOrUuid}/workspaces/${workspaceUuid}/join`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n}\n","import { BaseApiClient } from './base';\n\n// Third-party OAuth connection types\nexport type OAuthProviderSlug = 'google_calendar' | 'gmail' | 'google';\n\nexport interface OAuthConnectionStatus {\n connected: boolean;\n email?: string;\n}\n\nexport interface OAuthAuthorizeResponse {\n authorization_url: string;\n}\n\n/**\n * Build the OAuth endpoint path for a provider\n */\nfunction getOAuthPath(\n providerSlug: OAuthProviderSlug,\n action: 'status' | 'authorize' | 'disconnect'\n): string {\n // google_calendar uses /oauth/google/calendar/{action}\n // gmail uses /oauth/google/gmail/{action}\n // google uses /oauth/google/{action}\n if (providerSlug === 'google_calendar') {\n return `oauth/google/calendar/${action}`;\n } else if (providerSlug === 'gmail') {\n return `oauth/google/gmail/${action}`;\n } else {\n return `oauth/${providerSlug}/${action}`;\n }\n}\n\n/**\n * API for managing third-party OAuth connections (Google Calendar, Gmail, Monday, etc.)\n */\nexport class OAuthConnectionsApi extends BaseApiClient {\n /**\n * Get the connection status for an OAuth provider\n */\n async getConnectionStatus(\n providerSlug: OAuthProviderSlug\n ): Promise<OAuthConnectionStatus | null> {\n const path = getOAuthPath(providerSlug, 'status');\n return this.fetchRoot<OAuthConnectionStatus | null>(path);\n }\n\n /**\n * Get the authorization URL to start OAuth flow\n */\n async getAuthorizationUrl(providerSlug: OAuthProviderSlug): Promise<OAuthAuthorizeResponse> {\n const path = getOAuthPath(providerSlug, 'authorize');\n return this.fetchRoot<OAuthAuthorizeResponse>(path);\n }\n\n /**\n * Disconnect an OAuth provider\n */\n async disconnect(providerSlug: OAuthProviderSlug): Promise<void> {\n const path = getOAuthPath(providerSlug, 'disconnect');\n return this.fetchRoot<void>(path, { method: 'DELETE' });\n }\n}\n\n// Internal OAuth flow types (when Gravity Rail is the OAuth provider)\nexport interface AuthorizeRequest {\n clientId: string;\n workspaceUuid?: string | null;\n scopes: string[];\n redirectUri: string;\n state?: string;\n codeChallenge?: string;\n codeChallengeMethod?: string;\n}\n\nexport interface AuthorizeResponse {\n code: string;\n state?: string;\n}\n\nexport interface TokenRequest {\n grant_type: 'authorization_code' | 'refresh_token';\n code?: string;\n refresh_token?: string;\n client_id: string;\n client_secret: string;\n redirect_uri?: string;\n code_verifier?: string;\n}\n\nexport interface TokenResponse {\n access_token: string;\n token_type: string;\n expires_in: number;\n refresh_token?: string;\n scope: string;\n}\n\n/**\n * Individual scope metadata from the API\n */\nexport interface ApiScope {\n name: string;\n category: string;\n description: string;\n implies: string[];\n dangerous: boolean;\n}\n\n/**\n * Response from the scopes endpoint\n */\nexport interface ScopesListResponse {\n items: ApiScope[];\n categories: string[];\n}\n\nexport class OAuthApi extends BaseApiClient {\n /**\n * Get all available OAuth/API key scopes with metadata.\n *\n * This returns the full scope definitions from the backend,\n * ensuring the UI always shows the correct scopes.\n */\n async getAvailableScopes(): Promise<ScopesListResponse> {\n return this.fetch<ScopesListResponse>('oauth/scopes');\n }\n\n /**\n * Create an authorization code for OAuth flow\n * This is called after the user approves the authorization request\n */\n async authorize(request: AuthorizeRequest): Promise<AuthorizeResponse> {\n return this.fetch<AuthorizeResponse>('oauth/authorize', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Exchange authorization code for access token\n */\n async exchangeOAuthToken(request: TokenRequest): Promise<TokenResponse> {\n // OAuth token endpoint expects form-encoded data\n const formData = new URLSearchParams();\n formData.append('grant_type', request.grant_type);\n if (request.code) formData.append('code', request.code);\n if (request.refresh_token) formData.append('refresh_token', request.refresh_token);\n formData.append('client_id', request.client_id);\n formData.append('client_secret', request.client_secret);\n if (request.redirect_uri) formData.append('redirect_uri', request.redirect_uri);\n if (request.code_verifier) formData.append('code_verifier', request.code_verifier);\n\n return this.fetch<TokenResponse>('oauth/token', {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/x-www-form-urlencoded',\n },\n body: formData.toString(),\n });\n }\n}\n","import { BaseApiClient } from './base';\nimport {\n ArchiveBlockers,\n PhoneNumber,\n PhoneNumberFormData,\n PhoneCall,\n SMSMessage,\n Voicemail,\n VoicemailStatus,\n PaginatedResponse,\n} from '../types';\n\nexport class PhoneNumbersApi extends BaseApiClient {\n /** List phone numbers in a workspace, optionally including archived. */\n async getPhoneNumbers(wid: string, options?: { isArchived?: boolean }): Promise<PhoneNumber[]> {\n const params = new URLSearchParams();\n if (options?.isArchived !== undefined) {\n params.set('is_archived', String(options.isArchived));\n }\n const query = params.toString();\n return this.fetch<PhoneNumber[]>(`w/${wid}/phone-numbers${query ? `?${query}` : ''}`);\n }\n\n /** List phone numbers available for provisioning. */\n async getAvailablePhoneNumbers(\n wid: string\n ): Promise<Array<{ phoneNumber: string; friendlyName: string }>> {\n return this.fetch<Array<{ phoneNumber: string; friendlyName: string }>>(\n `w/${wid}/phone-numbers/available-numbers`\n );\n }\n\n /** Request provisioning of a specific phone number. */\n async requestPhoneNumber(\n wid: string,\n phoneNumber: string\n ): Promise<{ status: string; message: string }> {\n return this.fetch<{ status: string; message: string }>(`w/${wid}/phone-numbers/request`, {\n method: 'POST',\n body: JSON.stringify({ phone_number: phoneNumber }),\n });\n }\n\n /** Get a phone number by ID or UUID. */\n async getPhoneNumber(wid: string, id: number | string): Promise<PhoneNumber> {\n return this.fetch<PhoneNumber>(`w/${wid}/phone-numbers/${id}`);\n }\n\n /** Create a new phone number record. */\n async createPhoneNumber(wid: string, phoneNumber: PhoneNumberFormData): Promise<PhoneNumber> {\n return this.fetch<PhoneNumber>(`w/${wid}/phone-numbers`, {\n method: 'POST',\n body: JSON.stringify(phoneNumber),\n });\n }\n\n /** Update a phone number record. */\n async updatePhoneNumber(\n wid: string,\n id: number,\n phoneNumber: PhoneNumberFormData\n ): Promise<PhoneNumber> {\n return this.fetch<PhoneNumber>(`w/${wid}/phone-numbers/${id}`, {\n method: 'PUT',\n body: JSON.stringify(phoneNumber),\n });\n }\n\n /** Get archive blockers for a phone number. */\n async getArchiveBlockers(wid: string, id: number): Promise<ArchiveBlockers> {\n return this.fetch<ArchiveBlockers>(`w/${wid}/phone-numbers/${id}/archive-blockers`);\n }\n\n /** Archive a phone number, releasing the Twilio number back to the pool. */\n async archivePhoneNumber(wid: string, id: number): Promise<PhoneNumber> {\n return this.fetch<PhoneNumber>(`w/${wid}/phone-numbers/${id}/archive`, {\n method: 'POST',\n });\n }\n\n /** List paginated call records for a phone number.\n *\n * Routes through the workspace-wide /calls endpoint with a\n * phoneNumberId filter.\n */\n async getPhoneNumberCalls(\n wid: string,\n id: number,\n page: number = 1,\n pageSize: number = 10,\n filters?: { status?: string; inbound?: boolean; dateFrom?: string; dateTo?: string }\n ): Promise<PaginatedResponse<PhoneCall>> {\n const params = new URLSearchParams({\n page: String(page),\n pageSize: String(pageSize),\n phoneNumberId: String(id),\n });\n if (filters?.status) params.set('status', filters.status);\n if (filters?.inbound !== undefined) params.set('inbound', String(filters.inbound));\n if (filters?.dateFrom) params.set('dateFrom', filters.dateFrom);\n if (filters?.dateTo) params.set('dateTo', filters.dateTo);\n return this.fetch<PaginatedResponse<PhoneCall>>(`w/${wid}/calls?${params}`);\n }\n\n /** List paginated voicemails for a phone number. */\n async getPhoneNumberVoicemails(\n wid: string,\n id: number,\n page: number = 1,\n pageSize: number = 10,\n status?: VoicemailStatus\n ): Promise<PaginatedResponse<Voicemail>> {\n const params = new URLSearchParams({\n page: String(page),\n page_size: String(pageSize),\n });\n if (status) params.set('status', status);\n return this.fetch<PaginatedResponse<Voicemail>>(\n `w/${wid}/phone-numbers/${id}/voicemails?${params}`\n );\n }\n\n /** Fetch voicemail audio through the authenticated client path. */\n async fetchVoicemailAudio(\n wid: string,\n phoneNumberId: number,\n voicemailId: number\n ): Promise<ArrayBuffer> {\n const response = await this.fetchRaw(\n `w/${wid}/phone-numbers/${phoneNumberId}/voicemails/${voicemailId}/audio`\n );\n return response.arrayBuffer();\n }\n\n /** Update voicemail status. */\n async updateVoicemailStatus(\n wid: string,\n phoneNumberId: number,\n voicemailId: number,\n status: VoicemailStatus\n ): Promise<Voicemail> {\n return this.fetch<Voicemail>(\n `w/${wid}/phone-numbers/${phoneNumberId}/voicemails/${voicemailId}?status=${status}`,\n { method: 'PATCH' }\n );\n }\n\n /** List paginated SMS messages for a phone number. */\n async getPhoneNumberMessages(\n wid: string,\n id: number,\n page: number = 1,\n pageSize: number = 10,\n filters?: { status?: string; inbound?: boolean; dateFrom?: string; dateTo?: string }\n ): Promise<PaginatedResponse<SMSMessage>> {\n const params = new URLSearchParams({\n page: String(page),\n pageSize: String(pageSize),\n });\n if (filters?.status) params.set('status', filters.status);\n if (filters?.inbound !== undefined) params.set('inbound', String(filters.inbound));\n if (filters?.dateFrom) params.set('dateFrom', filters.dateFrom);\n if (filters?.dateTo) params.set('dateTo', filters.dateTo);\n return this.fetch<PaginatedResponse<SMSMessage>>(\n `w/${wid}/phone-numbers/${id}/messages?${params}`\n );\n }\n\n /** List provider phones available for linking to workspace phone numbers. */\n async getLinkablePhones(wid: string): Promise<\n Array<{\n uuid: string;\n phoneNumber: string;\n friendlyName: string | null;\n provider: string;\n isAssigned: boolean;\n workspaceId: number | null;\n linkedInWorkspace: boolean;\n }>\n > {\n return this.fetch(`w/${wid}/phone-numbers/linkable-phones`);\n }\n\n /** Link or unlink a workspace phone number to/from a provider phone. */\n async linkPhoneNumber(\n wid: string,\n id: number,\n providerPhoneUuid: string | null\n ): Promise<PhoneNumber> {\n return this.fetch<PhoneNumber>(`w/${wid}/phone-numbers/${id}/link`, {\n method: 'POST',\n body: JSON.stringify({ providerPhoneUuid }),\n });\n }\n\n async releasePhoneNumber(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/phone-numbers/${id}/release`, {\n method: 'POST',\n });\n }\n}\n","import { BaseApiClient } from './base';\nimport type {\n PronunciationEntry,\n CreatePronunciationEntryFormData,\n UpdatePronunciationEntryFormData,\n PronunciationImportEntry,\n PronunciationImportResult,\n RecommendedVoice,\n} from '../types';\n\nexport class PronunciationsApi extends BaseApiClient {\n /** List pronunciation entries for an organization, optionally filtered by scope. */\n async getPronunciationEntries(\n orgUuid: string,\n options: { scope?: 'org' | 'account'; accountId?: number } = {}\n ): Promise<PronunciationEntry[]> {\n const params = new URLSearchParams();\n if (options.scope) params.append('scope', options.scope);\n if (options.accountId) params.append('accountId', options.accountId.toString());\n const response = await this.fetch<{ items: PronunciationEntry[]; total: number }>(\n `o/${orgUuid}/pronunciations${params.toString() ? `?${params.toString()}` : ''}`\n );\n return response.items;\n }\n\n /** Create a new pronunciation entry for an organization. */\n async createPronunciationEntry(\n orgUuid: string,\n data: CreatePronunciationEntryFormData\n ): Promise<PronunciationEntry> {\n return this.fetch<PronunciationEntry>(`o/${orgUuid}/pronunciations`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update an existing organization pronunciation entry. */\n async updatePronunciationEntry(\n orgUuid: string,\n id: number,\n data: UpdatePronunciationEntryFormData\n ): Promise<PronunciationEntry> {\n return this.fetch<PronunciationEntry>(`o/${orgUuid}/pronunciations/${id}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Delete a pronunciation entry from an organization. */\n async deletePronunciationEntry(orgUuid: string, id: number): Promise<void> {\n return this.fetch(`o/${orgUuid}/pronunciations/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Export all pronunciation entries for an organization as term/respelling pairs. */\n async exportPronunciationEntries(\n orgUuid: string\n ): Promise<Array<{ term: string; respelling: string }>> {\n return this.fetch(`o/${orgUuid}/pronunciations/export`);\n }\n\n /** Bulk import pronunciation entries into an organization. */\n async importPronunciationEntries(\n orgUuid: string,\n entries: PronunciationImportEntry[]\n ): Promise<PronunciationImportResult> {\n return this.fetch<PronunciationImportResult>(`o/${orgUuid}/pronunciations/import`, {\n method: 'POST',\n body: JSON.stringify({ entries }),\n });\n }\n\n /** List the current user's personal pronunciation entries. */\n async getMyPronunciations(): Promise<PronunciationEntry[]> {\n const response = await this.fetch<{ items: PronunciationEntry[]; total: number }>(\n 'account/pronunciations'\n );\n return response.items;\n }\n\n /** Create a personal pronunciation entry for the current user. */\n async createMyPronunciation(\n data: Pick<CreatePronunciationEntryFormData, 'term' | 'respelling'>\n ): Promise<PronunciationEntry> {\n return this.fetch<PronunciationEntry>('account/pronunciations', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update a personal pronunciation entry. */\n async updateMyPronunciation(\n id: number,\n data: UpdatePronunciationEntryFormData\n ): Promise<PronunciationEntry> {\n return this.fetch<PronunciationEntry>(`account/pronunciations/${id}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Delete a personal pronunciation entry. */\n async deleteMyPronunciation(id: number): Promise<void> {\n return this.fetch(`account/pronunciations/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Get AI-suggested respellings for a given term. */\n async suggestPronunciations(term: string, language?: string): Promise<string[]> {\n const response = await this.fetch<{ suggestions: string[] }>(\n 'account/pronunciations/suggest',\n {\n method: 'POST',\n body: JSON.stringify({ term, ...(language && { language }) }),\n }\n );\n return response.suggestions;\n }\n\n /** List recommended voices for pronunciation preview. */\n async getRecommendedVoices(): Promise<RecommendedVoice[]> {\n const response = await this.fetch<{ items: RecommendedVoice[] }>(\n 'account/pronunciations/voices'\n );\n return response.items;\n }\n\n /** Generate an audio preview of a pronunciation respelling using a specified voice. */\n async previewPronunciation(data: {\n respelling: string;\n voiceModel: string;\n }): Promise<ArrayBuffer> {\n const response = await this.fetchRaw('account/pronunciations/preview', {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n respelling: data.respelling,\n voice_model: data.voiceModel,\n }),\n });\n return response.arrayBuffer();\n }\n}\n","import { BaseApiClient } from './base';\n\nexport interface PromptInspectionResult {\n meta: {\n workflow_id: number;\n workflow_name: string;\n task_id: number;\n task_name: string;\n agent_name: string | null;\n channel: string;\n resolved_at: string;\n };\n layers: Array<{\n name: string;\n kind: string;\n source: string;\n static: boolean;\n content: string | null;\n template: string | null;\n tokens: number;\n note: string | null;\n tool_parameters: Record<string, unknown> | null;\n }>;\n composed_prompt: string;\n token_summary: {\n total: number;\n by_layer: Record<string, number>;\n };\n}\n\nexport type InspectPromptOptions =\n | { taskId: number; chatId?: never; channel?: string; turn?: number }\n | { chatId: number; taskId?: never; channel?: string; turn?: number };\n\nexport class PromptsApi extends BaseApiClient {\n /** Inspect the full composed prompt for a task (static) or chat (live). */\n async inspectPrompt(\n wid: string,\n options: InspectPromptOptions\n ): Promise<PromptInspectionResult> {\n const params = new URLSearchParams();\n if (options.chatId !== undefined) {\n params.append('chat_id', options.chatId.toString());\n } else if (options.taskId !== undefined) {\n params.append('task_id', options.taskId.toString());\n }\n if (options.channel) params.append('channel', options.channel);\n if (options.turn !== undefined) params.append('turn', options.turn.toString());\n return this.fetch<PromptInspectionResult>(`w/${wid}/prompts/inspect?${params}`);\n }\n}\n","import { BaseApiClient } from './base';\nimport type {\n CreatePersonaRequest,\n PaginatedResponse,\n Persona,\n UpdatePersonaRequest,\n} from '../types';\n\nexport class PersonasApi extends BaseApiClient {\n /** List personas in the workspace, paginated. */\n async listPersonas(\n wid: string,\n params?: { page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<Persona>> {\n const q = new URLSearchParams();\n if (params?.page !== undefined) q.set('page', String(params.page));\n if (params?.pageSize !== undefined) q.set('pageSize', String(params.pageSize));\n const qs = q.toString() ? `?${q.toString()}` : '';\n return this.fetch<PaginatedResponse<Persona>>(`w/${wid}/personas${qs}`);\n }\n\n async getPersona(wid: string, id: number): Promise<Persona> {\n return this.fetch<Persona>(`w/${wid}/personas/${id}`);\n }\n\n async createPersona(wid: string, data: CreatePersonaRequest): Promise<Persona> {\n return this.fetch<Persona>(`w/${wid}/personas`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updatePersona(wid: string, id: number, data: UpdatePersonaRequest): Promise<Persona> {\n return this.fetch<Persona>(`w/${wid}/personas/${id}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n async deletePersona(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/personas/${id}`, { method: 'DELETE' });\n }\n}\n","import { BaseApiClient } from './base';\nimport type {\n CreateScenarioRequest,\n PaginatedResponse,\n Qualification,\n Scenario,\n StartTestChatRunRequest,\n StartTestChatRunResponse,\n TestChatRun,\n UpdateScenarioRequest,\n} from '../types';\n\nexport class QualificationsApi extends BaseApiClient {\n /** List qualifications in a workspace, paginated. */\n async getQualifications(\n wid: string,\n params?: { page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<Qualification>> {\n const query = new URLSearchParams();\n if (params?.page !== undefined) query.set('page', String(params.page));\n if (params?.pageSize !== undefined) query.set('pageSize', String(params.pageSize));\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<Qualification>>(`w/${wid}/qualifications${qs}`);\n }\n\n /** Get a single qualification by ID. */\n async getQualification(wid: string, id: number): Promise<Qualification> {\n return this.fetch<Qualification>(`w/${wid}/qualifications/${id}`);\n }\n\n /** Fetch (auto-creating if absent) the qualification for a workflow. */\n async getOrCreateQualificationForWorkflow(\n wid: string,\n workflowId: number\n ): Promise<Qualification> {\n return this.fetch<Qualification>(\n `w/${wid}/qualifications/workflows/${workflowId}/qualification`\n );\n }\n\n // ===== Scenarios =====\n\n async listScenarios(\n wid: string,\n qualificationId: number,\n params?: { includeArchived?: boolean }\n ): Promise<Scenario[]> {\n const query = new URLSearchParams();\n if (params?.includeArchived) query.set('include_archived', 'true');\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<Scenario[]>(`w/${wid}/qualifications/${qualificationId}/scenarios${qs}`);\n }\n\n async createScenario(\n wid: string,\n qualificationId: number,\n data: CreateScenarioRequest\n ): Promise<Scenario> {\n return this.fetch<Scenario>(`w/${wid}/qualifications/${qualificationId}/scenarios`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async getScenario(wid: string, scenarioId: number): Promise<Scenario> {\n return this.fetch<Scenario>(`w/${wid}/qualifications/scenarios/${scenarioId}`);\n }\n\n async updateScenario(\n wid: string,\n scenarioId: number,\n data: UpdateScenarioRequest\n ): Promise<Scenario> {\n return this.fetch<Scenario>(`w/${wid}/qualifications/scenarios/${scenarioId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n async deleteScenario(wid: string, scenarioId: number): Promise<void> {\n return this.fetch(`w/${wid}/qualifications/scenarios/${scenarioId}`, {\n method: 'DELETE',\n });\n }\n\n // ===== Test chat runs =====\n\n async listTestChatRuns(\n wid: string,\n workflowId: number,\n params?: { scenarioId?: number; limit?: number }\n ): Promise<TestChatRun[]> {\n const query = new URLSearchParams();\n if (params?.scenarioId !== undefined) query.set('scenarioId', String(params.scenarioId));\n if (params?.limit !== undefined) query.set('limit', String(params.limit));\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<TestChatRun[]>(\n `w/${wid}/qualifications/workflows/${workflowId}/test-chat-runs${qs}`\n );\n }\n\n async getTestChatRun(wid: string, runId: number): Promise<TestChatRun> {\n return this.fetch<TestChatRun>(`w/${wid}/qualifications/test-chat-runs/${runId}`);\n }\n\n async startTestChatRun(\n wid: string,\n workflowId: number,\n data: StartTestChatRunRequest = {}\n ): Promise<StartTestChatRunResponse> {\n return this.fetch<StartTestChatRunResponse>(\n `w/${wid}/qualifications/workflows/${workflowId}/test-chat-runs`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n\n async evaluateTestChatRun(wid: string, runId: number): Promise<void> {\n await this.fetch(`w/${wid}/qualifications/test-chat-runs/${runId}/evaluate`, {\n method: 'POST',\n });\n }\n\n /** Manually end a test chat run (for human-driven runs, which have no\n * simulator workflow to mark them completed). */\n async endTestChatRun(wid: string, runId: number): Promise<TestChatRun> {\n return this.fetch<TestChatRun>(`w/${wid}/qualifications/test-chat-runs/${runId}/end`, {\n method: 'POST',\n });\n }\n}\n","import { BaseApiClient } from './base';\n\nexport interface ModelUsageStats {\n model: string;\n provider: string;\n type: string;\n message_count: number;\n prompt_tokens: number;\n completion_tokens: number;\n total_tokens: number;\n cached_tokens: number;\n audio_input_tokens: number;\n audio_output_tokens: number;\n total_cost: number;\n average_tokens_per_message: number;\n average_cost_per_message: number;\n credits: number;\n multiplier: number;\n}\n\nexport interface ProviderUsageSummary {\n provider: string;\n total_messages: number;\n total_tokens: number;\n total_cached_tokens: number;\n total_audio_input_tokens: number;\n total_audio_output_tokens: number;\n total_cost: number;\n total_credits: number;\n models: ModelUsageStats[];\n}\n\nexport interface AIUsageReport {\n workspace_id: string;\n workspace_name: string;\n report_period_start: string;\n report_period_end: string;\n total_messages: number;\n total_tokens: number;\n total_cached_tokens: number;\n total_audio_input_tokens: number;\n total_audio_output_tokens: number;\n total_cost: number;\n total_credits: number;\n by_provider: ProviderUsageSummary[];\n by_type: Record<\n string,\n { messages: number; tokens: number; cached_tokens: number; cost: number; credits: number }\n >;\n top_models: ModelUsageStats[];\n}\n\nexport interface AIUsageReportParams {\n start_date?: string;\n end_date?: string;\n}\n\nexport interface SMSUsageRow {\n date: string;\n phoneNumberId: number;\n phoneNumber: string;\n phoneName?: string;\n inbound: number;\n outbound: number;\n totalChars: number;\n totalSegments: number;\n}\n\nexport interface PhoneAggregatedData {\n phoneNumberId: number;\n phoneNumber: string;\n phoneName?: string;\n totalMessages: number;\n inbound: number;\n outbound: number;\n totalChars: number;\n totalSegments: number;\n}\n\nexport interface DayAggregatedData {\n date: string;\n totalMessages: number;\n inbound: number;\n outbound: number;\n totalChars: number;\n totalSegments: number;\n}\n\nexport interface SMSUsageReport {\n workspaceId: string;\n workspaceUuid: string;\n workspaceName: string;\n reportPeriodStart: string;\n reportPeriodEnd: string;\n totalMessages: number;\n totalInbound: number;\n totalOutbound: number;\n totalCharacters: number;\n totalSegments: number;\n rows: SMSUsageRow[];\n}\n\nexport interface SMSUsageReportParams {\n start_date?: string;\n end_date?: string;\n}\n\nexport interface PhoneUsageRow {\n date: string;\n phoneNumberId: number;\n phoneNumber: string;\n phoneName?: string;\n inbound: number;\n outbound: number;\n totalDurationSeconds: number;\n}\n\nexport interface PhoneCallAggregatedData {\n phoneNumberId: number;\n phoneNumber: string;\n phoneName?: string;\n totalCalls: number;\n inbound: number;\n outbound: number;\n totalDurationSeconds: number;\n}\n\nexport interface DayCallAggregatedData {\n date: string;\n totalCalls: number;\n inbound: number;\n outbound: number;\n totalDurationSeconds: number;\n}\n\nexport interface PhoneUsageReport {\n workspaceId: string;\n workspaceUuid: string;\n workspaceName: string;\n reportPeriodStart: string;\n reportPeriodEnd: string;\n totalCalls: number;\n totalInbound: number;\n totalOutbound: number;\n totalDurationSeconds: number;\n rows: PhoneUsageRow[];\n}\n\nexport interface PhoneUsageReportParams {\n start_date?: string;\n end_date?: string;\n}\n\nexport interface MemberUsageReport {\n memberId: number;\n periodStart: string;\n periodEnd: string;\n totalChats: number;\n totalMessages: number;\n totalCredits: number;\n}\n\nexport interface MemberUsageReportParams {\n start_date?: string;\n end_date?: string;\n}\n\n// Voice Usage Report Types\nexport interface STTUsageRow {\n date: string;\n provider: string;\n model: string;\n messageCount: number;\n totalDurationSeconds: number;\n}\n\nexport interface TTSUsageRow {\n date: string;\n provider: string;\n model: string;\n messageCount: number;\n totalCharacters: number;\n}\n\nexport interface STTProviderSummary {\n provider: string;\n model: string;\n totalDurationSeconds: number;\n totalMessages: number;\n}\n\nexport interface TTSProviderSummary {\n provider: string;\n model: string;\n totalCharacters: number;\n totalMessages: number;\n}\n\nexport interface VoiceUsageReport {\n workspaceId: string;\n workspaceUuid: string;\n workspaceName: string;\n reportPeriodStart: string;\n reportPeriodEnd: string;\n totalSttDurationSeconds: number;\n totalSttMessages: number;\n totalTtsCharacters: number;\n totalTtsMessages: number;\n sttByProvider: STTProviderSummary[];\n ttsByProvider: TTSProviderSummary[];\n sttRows: STTUsageRow[];\n ttsRows: TTSUsageRow[];\n}\n\nexport interface VoiceUsageReportParams {\n start_date?: string;\n end_date?: string;\n}\n\nexport class ReportsApi extends BaseApiClient {\n /** Get AI model usage report for a workspace within an optional date range. */\n async getAIUsageReport(wid: string, params?: AIUsageReportParams): Promise<AIUsageReport> {\n const queryParams = new URLSearchParams();\n if (params?.start_date) {\n queryParams.append('start_date', params.start_date);\n }\n if (params?.end_date) {\n queryParams.append('end_date', params.end_date);\n }\n\n const queryString = queryParams.toString();\n const url = `w/${wid}/reports/ai-usage${queryString ? `?${queryString}` : ''}`;\n\n return this.fetch<AIUsageReport>(url);\n }\n\n /** Get SMS usage report for a workspace within an optional date range. */\n async getSMSUsageReport(wid: string, params?: SMSUsageReportParams): Promise<SMSUsageReport> {\n const queryParams = new URLSearchParams();\n if (params?.start_date) {\n queryParams.append('start_date', params.start_date);\n }\n if (params?.end_date) {\n queryParams.append('end_date', params.end_date);\n }\n\n const queryString = queryParams.toString();\n const url = `w/${wid}/reports/sms-usage${queryString ? `?${queryString}` : ''}`;\n\n return this.fetch<SMSUsageReport>(url);\n }\n\n /** Get phone call usage report for a workspace within an optional date range. */\n async getPhoneUsageReport(\n wid: string,\n params?: PhoneUsageReportParams\n ): Promise<PhoneUsageReport> {\n const queryParams = new URLSearchParams();\n if (params?.start_date) {\n queryParams.append('start_date', params.start_date);\n }\n if (params?.end_date) {\n queryParams.append('end_date', params.end_date);\n }\n\n const queryString = queryParams.toString();\n const url = `w/${wid}/reports/phone-usage${queryString ? `?${queryString}` : ''}`;\n\n return this.fetch<PhoneUsageReport>(url);\n }\n\n /** Get usage report for a specific member within an optional date range. */\n async getMemberUsage(\n wid: string,\n memberId: number,\n params?: MemberUsageReportParams\n ): Promise<MemberUsageReport> {\n const queryParams = new URLSearchParams();\n if (params?.start_date) {\n queryParams.append('start_date', params.start_date);\n }\n if (params?.end_date) {\n queryParams.append('end_date', params.end_date);\n }\n\n const queryString = queryParams.toString();\n const url = `w/${wid}/reports/member-usage/${memberId}${queryString ? `?${queryString}` : ''}`;\n\n return this.fetch<MemberUsageReport>(url);\n }\n\n /** Get voice (STT/TTS) usage report for a workspace within an optional date range. */\n async getVoiceUsageReport(\n wid: string,\n params?: VoiceUsageReportParams\n ): Promise<VoiceUsageReport> {\n const queryParams = new URLSearchParams();\n if (params?.start_date) {\n queryParams.append('start_date', params.start_date);\n }\n if (params?.end_date) {\n queryParams.append('end_date', params.end_date);\n }\n\n const queryString = queryParams.toString();\n const url = `w/${wid}/reports/voice-usage${queryString ? `?${queryString}` : ''}`;\n\n return this.fetch<VoiceUsageReport>(url);\n }\n}\n","import type {\n ImportSalesforceMembersRequest,\n ImportSalesforceMembersResponse,\n SalesforceSearchRequest,\n SalesforceSearchResponse,\n SalesforceSyncConfigResponse,\n UpdateSalesforceSyncConfigRequest,\n} from '../types/app-connection-types';\nexport type {\n ImportSalesforceMembersRequest,\n ImportSalesforceMembersResponse,\n SalesforceSearchRequest,\n SalesforceSearchResponse,\n};\nimport type { PaginatedResponse } from '../types/core-types';\nimport { BaseApiClient } from './base';\n\nexport interface SalesforceConnectionStatus {\n connectionId: number | null;\n connected: boolean;\n state: string | null;\n instanceUrl: string | null;\n apiVersion: string | null;\n authorizeUrl: string | null;\n error: string | null;\n authorizedByMemberId: number | null;\n authorizedAt: string | null;\n}\n\nexport interface ConfigureSalesforceRequest {\n clientId: string;\n clientSecret: string;\n instanceUrl: string;\n}\n\nexport interface SalesforceReconciliationMatch {\n memberId: number;\n salesforceRecordId: string;\n salesforceName: string | null;\n salesforceEmail: string | null;\n salesforcePhone: string | null;\n matchType: string;\n objectType: string;\n}\n\nexport interface LinkMemberToSalesforceRequest {\n memberId: number;\n salesforceRecordId: string;\n objectType?: string;\n}\n\nexport interface BulkLinkSalesforceRequest {\n links: LinkMemberToSalesforceRequest[];\n}\n\nexport interface LinkedSalesforceMember {\n memberId: number;\n salesforceRecordId: string;\n memberName: string | null;\n memberEmail: string | null;\n memberPhone: string | null;\n lastSyncedAt: string | null;\n lastSyncStatus: string | null;\n}\n\nexport class SalesforceApi extends BaseApiClient {\n async configureSalesforce(\n wid: string,\n data: ConfigureSalesforceRequest\n ): Promise<SalesforceConnectionStatus> {\n return this.fetch<SalesforceConnectionStatus>(\n `w/${wid}/app-connections/salesforce/configure`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n\n async startSalesforceOAuth(wid: string): Promise<SalesforceConnectionStatus> {\n return this.fetch<SalesforceConnectionStatus>(\n `w/${wid}/app-connections/salesforce/oauth/start`,\n {\n method: 'POST',\n }\n );\n }\n\n async getSalesforceStatus(wid: string): Promise<SalesforceConnectionStatus> {\n return this.fetch<SalesforceConnectionStatus>(`w/${wid}/app-connections/salesforce/status`);\n }\n\n async disconnectSalesforce(wid: string): Promise<SalesforceConnectionStatus> {\n return this.fetch<SalesforceConnectionStatus>(\n `w/${wid}/app-connections/salesforce/disconnect`,\n {\n method: 'DELETE',\n }\n );\n }\n\n async disableSalesforce(wid: string): Promise<SalesforceConnectionStatus> {\n return this.fetch<SalesforceConnectionStatus>(`w/${wid}/app-connections/salesforce/disable`, {\n method: 'POST',\n });\n }\n\n async enableSalesforce(wid: string): Promise<SalesforceConnectionStatus> {\n return this.fetch<SalesforceConnectionStatus>(`w/${wid}/app-connections/salesforce/enable`, {\n method: 'POST',\n });\n }\n\n async deleteSalesforce(wid: string): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/app-connections/salesforce/delete`, {\n method: 'DELETE',\n });\n }\n\n async getSalesforceReconciliationMatches(\n wid: string,\n params?: { limit?: number; offset?: number }\n ): Promise<SalesforceReconciliationMatch[]> {\n const query = new URLSearchParams();\n if (params?.limit !== undefined) query.set('limit', String(params.limit));\n if (params?.offset !== undefined) query.set('offset', String(params.offset));\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<SalesforceReconciliationMatch[]>(\n `w/${wid}/app-connections/salesforce/reconciliation/matches${qs}`\n );\n }\n\n async linkMemberToSalesforce(\n wid: string,\n data: LinkMemberToSalesforceRequest\n ): Promise<{ status: string; memberId: number; salesforceRecordId: string }> {\n return this.fetch(`w/${wid}/app-connections/salesforce/reconciliation/link`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async bulkLinkMembersToSalesforce(\n wid: string,\n data: BulkLinkSalesforceRequest\n ): Promise<{ linked: number }> {\n return this.fetch(`w/${wid}/app-connections/salesforce/reconciliation/link/bulk`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async unlinkMemberFromSalesforce(\n wid: string,\n memberId: number\n ): Promise<{ status: string; memberId: number }> {\n return this.fetch(`w/${wid}/app-connections/salesforce/reconciliation/unlink/${memberId}`, {\n method: 'DELETE',\n });\n }\n\n async getLinkedSalesforceMembers(\n wid: string,\n params?: { page?: number; pageSize?: number; search?: string }\n ): Promise<PaginatedResponse<LinkedSalesforceMember>> {\n const query = new URLSearchParams();\n if (params?.page !== undefined) query.set('page', String(params.page));\n if (params?.pageSize !== undefined) query.set('pageSize', String(params.pageSize));\n if (params?.search?.trim()) query.set('search', params.search.trim());\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<LinkedSalesforceMember>>(\n `w/${wid}/app-connections/salesforce/reconciliation/linked${qs}`\n );\n }\n\n // --- Sync config ---\n\n async getSalesforceSyncConfig(wid: string): Promise<SalesforceSyncConfigResponse> {\n return this.fetch<SalesforceSyncConfigResponse>(\n `w/${wid}/app-connections/salesforce/sync/config`\n );\n }\n\n async updateSalesforceSyncConfig(\n wid: string,\n data: UpdateSalesforceSyncConfigRequest\n ): Promise<SalesforceSyncConfigResponse> {\n return this.fetch<SalesforceSyncConfigResponse>(\n `w/${wid}/app-connections/salesforce/sync/config`,\n {\n method: 'PUT',\n body: JSON.stringify(data),\n }\n );\n }\n\n async describeSalesforceObject(\n wid: string,\n sobject: string\n ): Promise<{ fields: Array<{ name: string; label: string; type: string }> }> {\n return this.fetch(\n `w/${wid}/app-connections/salesforce/describe/${encodeURIComponent(sobject)}`\n );\n }\n\n // --- Search & Import ---\n\n async searchSalesforceRecords(\n wid: string,\n data: SalesforceSearchRequest\n ): Promise<SalesforceSearchResponse> {\n return this.fetch<SalesforceSearchResponse>(`w/${wid}/app-connections/salesforce/search`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async importSalesforceMembers(\n wid: string,\n data: ImportSalesforceMembersRequest\n ): Promise<ImportSalesforceMembersResponse> {\n return this.fetch<ImportSalesforceMembersResponse>(\n `w/${wid}/app-connections/salesforce/import-members`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n}\n","import type {\n ConnectionSyncConfig,\n SyncCapabilities,\n SyncCheckpoint,\n SyncEntityType,\n SyncRunMode,\n} from '../types/app-connection-types';\nimport { BaseApiClient } from './base';\n\nexport type { SyncRunMode };\nexport type SyncRunStatus = 'running' | 'completed' | 'failed' | 'completed_with_errors';\nexport type SyncDirection = 'inbound' | 'outbound';\nexport type SyncItemStatus = 'synced' | 'failed' | 'skipped' | 'linked' | 'unlinked';\nexport type SyncRunSource = 'manual' | 'webhook' | 'scheduled';\n\nexport interface SyncRunSummary {\n runId: string;\n connectionUuid: string;\n startedAt: string;\n completedAt: string | null;\n status: SyncRunStatus;\n mode: SyncRunMode;\n dryRun: boolean;\n source?: SyncRunSource;\n total: number;\n synced: number;\n failed: number;\n skipped: number;\n errorMessage: string | null;\n errors: string[];\n /**\n * PHI-safe stack trace for failed runs. Populated from\n * ``traceback.format_tb(exc.__traceback__)`` on the server — never from\n * exception messages or bound SQL parameters — so patient names,\n * emails, and phone numbers are never included. ``null`` on successful\n * runs and runs that predate this field.\n */\n errorTraceback?: string | null;\n /**\n * Run-level scope. ``null`` indicates an unscoped run that processed\n * every enabled entity type. When set, only that entity type was\n * processed.\n */\n entityType?: SyncEntityType | null;\n}\n\nexport interface MemberSyncSummary {\n totalWorkspaceMembers: number;\n linkedMembers: number;\n unlinkedMembers: number;\n erroredLinks: number;\n lastSuccessfulSyncAt: string | null;\n lastSyncStatus: SyncRunStatus | null;\n}\n\n/**\n * One workspace-unique field write that the inbound rule executor\n * skipped because another Member already owned the value. PHI-safe —\n * only the field name and the conflicting Member's row id are\n * serialized (never the raw value or its digest). ``otherMemberId``\n * is only present when the caller has ``members:read``; without that\n * scope the API returns an empty ``uniqueConflicts`` list and the UI\n * falls back to the generic ``detail`` string.\n */\nexport interface SyncRunUniqueFieldConflict {\n field: 'email' | 'phone' | 'external_id';\n otherMemberId: number;\n}\n\nexport interface SyncRunItemDetail {\n index: number;\n direction: SyncDirection;\n status: SyncItemStatus;\n detail: string | null;\n memberId: number | null;\n memberName: string | null;\n remoteRecordId: string | null;\n entityType: SyncEntityType | null;\n localId: number | null;\n scopeType: string | null;\n scopeKey: string | null;\n /**\n * Skipped workspace-unique field writes for the inbound side.\n * Empty for non-conflict items, omitted/empty for old run rows that\n * predate the field, and empty for callers that lack\n * ``members:read``. The frontend uses this to render an inspection\n * link to the conflicting Member when it is non-empty.\n */\n uniqueConflicts?: SyncRunUniqueFieldConflict[];\n}\n\n/**\n * Generic connection sync API — works with any sync-capable connection.\n * Endpoints are under /app-connections/{connectionId}/sync-config and /sync/*.\n */\nexport class ConnectionSyncApi extends BaseApiClient {\n async getConnectionSyncCapabilities(\n wid: string,\n connectionId: number\n ): Promise<SyncCapabilities> {\n return this.fetch<SyncCapabilities>(\n `w/${wid}/app-connections/${connectionId}/sync-capabilities`\n );\n }\n\n async getConnectionSyncConfig(wid: string, connectionId: number): Promise<ConnectionSyncConfig> {\n return this.fetch<ConnectionSyncConfig>(\n `w/${wid}/app-connections/${connectionId}/sync-config`\n );\n }\n\n async updateConnectionSyncConfig(\n wid: string,\n connectionId: number,\n data: ConnectionSyncConfig\n ): Promise<ConnectionSyncConfig> {\n return this.fetch<ConnectionSyncConfig>(\n `w/${wid}/app-connections/${connectionId}/sync-config`,\n { method: 'PUT', body: JSON.stringify(data) }\n );\n }\n\n async getConnectionSyncCheckpoint(\n wid: string,\n connectionId: number,\n direction: SyncDirection = 'inbound',\n syncKey: string = 'default'\n ): Promise<SyncCheckpoint> {\n const query = new URLSearchParams({\n direction,\n sync_key: syncKey,\n });\n return this.fetch<SyncCheckpoint>(\n `w/${wid}/app-connections/${connectionId}/sync/checkpoint?${query}`\n );\n }\n\n /**\n * Start a sync run. Returns the raw Response (SSE stream).\n * Callers should read the stream for sync_run and sync_item events.\n *\n * Pass ``entityType`` to scope the run to a single entity type\n * (members or records). When omitted, the run covers every enabled\n * entity type on the connection.\n *\n * Pass ``boardId`` together with ``entityType`` to further scope the\n * run to a single board mapping within that entity — useful for\n * isolating test/debug runs to one board.\n */\n async startSyncRun(\n wid: string,\n connectionId: number,\n options?: {\n dryRun?: boolean;\n resetCheckpoints?: boolean;\n entityType?: SyncEntityType;\n boardId?: string;\n /**\n * Preview cap (1..200). Server enforces ``dryRun=true`` when\n * this is set. Omit for uncapped runs.\n */\n recordLimit?: number;\n }\n ): Promise<Response> {\n return this.fetchRaw(`w/${wid}/app-connections/${connectionId}/sync/run`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({\n dryRun: options?.dryRun ?? false,\n resetCheckpoints: options?.resetCheckpoints ?? false,\n ...(options?.entityType ? { entityType: options.entityType } : {}),\n ...(options?.boardId ? { boardId: options.boardId } : {}),\n ...(typeof options?.recordLimit === 'number'\n ? { recordLimit: options.recordLimit }\n : {}),\n }),\n });\n }\n\n async getSyncRuns(\n wid: string,\n connectionId: number,\n limit: number = 20\n ): Promise<SyncRunSummary[]> {\n return this.fetch<SyncRunSummary[]>(\n `w/${wid}/app-connections/${connectionId}/sync/runs?limit=${limit}`\n );\n }\n\n async getMemberSyncSummary(wid: string, connectionId: number): Promise<MemberSyncSummary> {\n return this.fetch<MemberSyncSummary>(\n `w/${wid}/app-connections/${connectionId}/sync/member-summary`\n );\n }\n\n async getSyncRunItems(\n wid: string,\n connectionId: number,\n runId: string,\n limit: number = 500\n ): Promise<SyncRunItemDetail[]> {\n return this.fetch<SyncRunItemDetail[]>(\n `w/${wid}/app-connections/${connectionId}/sync/runs/${runId}/items?limit=${limit}`\n );\n }\n\n /**\n * Clear a manual-unlink exclusion for a member on a connection so\n * subsequent outbound syncs stop silently skipping them. Idempotent:\n * returns ``cleared=false`` when no matching exclusion exists.\n * ``boardId`` is only meaningful for multi-scope connectors (Monday).\n */\n async clearConnectionMemberExclusion(\n wid: string,\n connectionId: number,\n memberId: number,\n options?: { boardId?: string }\n ): Promise<{\n memberId: number;\n connectionId: number;\n scope: string;\n cleared: boolean;\n }> {\n const query = options?.boardId ? `?board_id=${encodeURIComponent(options.boardId)}` : '';\n return this.fetch(\n `w/${wid}/app-connections/${connectionId}/member-exclusions/${memberId}${query}`,\n { method: 'DELETE' }\n );\n }\n}\n","import type {\n HubSpotSearchRequest,\n HubSpotSearchResponse,\n HubSpotPropertyDefinition,\n ImportHubSpotMembersRequest,\n ImportHubSpotMembersResponse,\n ManagedRuleStatus,\n SyncLogsResponse,\n TransformPreset,\n} from '../types/app-connection-types';\nimport type { PaginatedResponse } from '../types/core-types';\nimport { BaseApiClient } from './base';\n\nexport interface HubspotConnectionStatus {\n connectionId: number | null;\n connected: boolean;\n state: string | null;\n portalId: string | null;\n authorizeUrl: string | null;\n error: string | null;\n authorizedByMemberId: number | null;\n authorizedAt: string | null;\n}\n\nexport interface ConfigureHubspotRequest {\n clientId: string;\n clientSecret: string;\n}\n\nexport interface HubspotReconciliationMatch {\n memberId: number;\n hubspotRecordId: string;\n hubspotName: string | null;\n hubspotEmail: string | null;\n hubspotPhone: string | null;\n matchType: string;\n objectType: string;\n}\n\nexport interface LinkMemberToHubspotRequest {\n memberId: number;\n hubspotRecordId: string;\n objectType?: string;\n}\n\nexport interface BulkLinkHubspotRequest {\n links: LinkMemberToHubspotRequest[];\n}\n\nexport interface LinkedHubspotMember {\n memberId: number;\n hubspotRecordId: string;\n memberName: string | null;\n memberEmail: string | null;\n memberPhone: string | null;\n lastSyncedAt: string | null;\n lastSyncStatus: string | null;\n}\n\nexport class HubspotApi extends BaseApiClient {\n async configureHubspot(\n wid: string,\n data: ConfigureHubspotRequest\n ): Promise<HubspotConnectionStatus> {\n return this.fetch<HubspotConnectionStatus>(`w/${wid}/app-connections/hubspot/configure`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async startHubspotOAuth(wid: string): Promise<HubspotConnectionStatus> {\n return this.fetch<HubspotConnectionStatus>(`w/${wid}/app-connections/hubspot/oauth/start`, {\n method: 'POST',\n });\n }\n\n async getHubspotStatus(wid: string): Promise<HubspotConnectionStatus> {\n return this.fetch<HubspotConnectionStatus>(`w/${wid}/app-connections/hubspot/status`);\n }\n\n async disconnectHubspot(wid: string): Promise<HubspotConnectionStatus> {\n return this.fetch<HubspotConnectionStatus>(`w/${wid}/app-connections/hubspot/disconnect`, {\n method: 'DELETE',\n });\n }\n\n async disableHubspot(wid: string): Promise<HubspotConnectionStatus> {\n return this.fetch<HubspotConnectionStatus>(`w/${wid}/app-connections/hubspot/disable`, {\n method: 'POST',\n });\n }\n\n async enableHubspot(wid: string): Promise<HubspotConnectionStatus> {\n return this.fetch<HubspotConnectionStatus>(`w/${wid}/app-connections/hubspot/enable`, {\n method: 'POST',\n });\n }\n\n async deleteHubspot(wid: string): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/app-connections/hubspot/delete`, {\n method: 'DELETE',\n });\n }\n\n async getHubspotReconciliationMatches(\n wid: string,\n params?: { limit?: number; offset?: number }\n ): Promise<HubspotReconciliationMatch[]> {\n const query = new URLSearchParams();\n if (params?.limit !== undefined) query.set('limit', String(params.limit));\n if (params?.offset !== undefined) query.set('offset', String(params.offset));\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<HubspotReconciliationMatch[]>(\n `w/${wid}/app-connections/hubspot/reconciliation/matches${qs}`\n );\n }\n\n async linkMemberToHubspot(\n wid: string,\n data: LinkMemberToHubspotRequest\n ): Promise<{ status: string; memberId: number; hubspotRecordId: string }> {\n return this.fetch(`w/${wid}/app-connections/hubspot/reconciliation/link`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async bulkLinkMembersToHubspot(\n wid: string,\n data: BulkLinkHubspotRequest\n ): Promise<{ linked: number }> {\n return this.fetch(`w/${wid}/app-connections/hubspot/reconciliation/link/bulk`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async unlinkMemberFromHubspot(\n wid: string,\n memberId: number\n ): Promise<{ status: string; memberId: number }> {\n return this.fetch(`w/${wid}/app-connections/hubspot/reconciliation/unlink/${memberId}`, {\n method: 'DELETE',\n });\n }\n\n async getLinkedHubspotMembers(\n wid: string,\n params?: { page?: number; pageSize?: number; search?: string }\n ): Promise<PaginatedResponse<LinkedHubspotMember>> {\n const query = new URLSearchParams();\n if (params?.page !== undefined) query.set('page', String(params.page));\n if (params?.pageSize !== undefined) query.set('pageSize', String(params.pageSize));\n if (params?.search?.trim()) query.set('search', params.search.trim());\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<LinkedHubspotMember>>(\n `w/${wid}/app-connections/hubspot/reconciliation/linked${qs}`\n );\n }\n\n async searchHubspotRecords(\n wid: string,\n data: HubSpotSearchRequest\n ): Promise<HubSpotSearchResponse> {\n return this.fetch<HubSpotSearchResponse>(`w/${wid}/app-connections/hubspot/search`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async importHubspotMembers(\n wid: string,\n data: ImportHubSpotMembersRequest\n ): Promise<ImportHubSpotMembersResponse> {\n return this.fetch<ImportHubSpotMembersResponse>(\n `w/${wid}/app-connections/hubspot/import-members`,\n { method: 'POST', body: JSON.stringify(data) }\n );\n }\n\n async getHubspotContactProperties(wid: string): Promise<HubSpotPropertyDefinition[]> {\n return this.fetch<HubSpotPropertyDefinition[]>(\n `w/${wid}/app-connections/hubspot/sync-settings/hs-properties`\n );\n }\n\n async getHubspotManagedRules(wid: string): Promise<ManagedRuleStatus[]> {\n return this.fetch<ManagedRuleStatus[]>(`w/${wid}/app-connections/hubspot/managed-rules`);\n }\n\n async getHubspotSyncLogs(\n wid: string,\n params?: { pageSize?: number; cursor?: string }\n ): Promise<SyncLogsResponse> {\n const query = new URLSearchParams();\n if (params?.pageSize) query.set('pageSize', String(params.pageSize));\n if (params?.cursor) query.set('cursor', params.cursor);\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch(`w/${wid}/app-connections/hubspot/sync/logs${qs}`);\n }\n\n async getHubspotTransformPresets(wid: string): Promise<TransformPreset[]> {\n return this.fetch<TransformPreset[]>(\n `w/${wid}/app-connections/hubspot/sync-settings/transform-presets`\n );\n }\n}\n","import {\n FileUploadRequest,\n FileUploadResponse,\n MenuItem,\n MenuItemFormData,\n MenuTree,\n Page,\n PageFormData,\n PagesQueryParams,\n PaginatedResponse,\n RenderedPage,\n ReorderMenuItemsData,\n Site,\n SiteCountsResponse,\n SiteFormData,\n SiteSignupResponse,\n SiteSlugAvailability,\n} from '../types';\nimport { BaseApiClient } from './base';\n\nexport class SitesApi extends BaseApiClient {\n /** List all sites in a workspace. */\n async getSites(wid: string): Promise<Site[]> {\n return this.fetch<Site[]>(`w/${wid}/sites`);\n }\n\n /** Check whether a site slug is available for use. */\n async checkSiteSlugAvailability(\n wid: string,\n slug: string,\n siteUuid: string | null = null\n ): Promise<SiteSlugAvailability> {\n const params = new URLSearchParams();\n if (siteUuid) params.append('site_uuid', siteUuid);\n return this.fetch<SiteSlugAvailability>(\n `w/${wid}/sites/available/${slug}?${params.toString()}`\n );\n }\n\n /** Check whether a custom domain is available for a site. */\n async checkSiteDomainAvailability(\n wid: string,\n domain: string,\n siteUuid: string | null = null\n ): Promise<{ result: boolean }> {\n const params = new URLSearchParams();\n if (siteUuid) params.append('site_uuid', siteUuid);\n return this.fetch<{ result: boolean }>(\n `w/${wid}/sites/domain-available/${domain}?${params.toString()}`\n );\n }\n\n /** Get a single site by ID. */\n async getSite(wid: string, id: number): Promise<Site> {\n return this.fetch<Site>(`w/${wid}/sites/${id}`);\n }\n\n /** Get a single site by UUID. */\n async getSiteByUuid(wid: string, uuid: string): Promise<Site> {\n return this.fetch<Site>(`s/${wid}/${uuid}`);\n }\n\n /** Get a fully rendered page from a site by slug or ID. */\n async getSiteRenderedPage(\n wid: string,\n siteUuid: string,\n pageSlugOrId: string | number\n ): Promise<RenderedPage> {\n return this.fetch<RenderedPage>(`s/${wid}/${siteUuid}/pages/${pageSlugOrId}`);\n }\n\n /** Get the rendered navigation menu for a site, including all translations. */\n async getSiteRenderedMenu(wid: string, siteUuid: string): Promise<MenuTree> {\n // Menu always includes all translations - client picks the right one\n return this.fetch<MenuTree>(`s/${wid}/${siteUuid}/menu`);\n }\n\n /** Sign up a new user through a site's public registration. */\n async siteSignup(wid: string, siteUuid: string): Promise<SiteSignupResponse> {\n return this.fetch<SiteSignupResponse>(`s/${wid}/${siteUuid}/signup`, {\n method: 'POST',\n });\n }\n\n /** Send a phone verification code for site-specific authentication. */\n async siteSendPhoneCode(\n wid: string,\n siteUuid: string,\n phoneNumber: string\n ): Promise<{ success: boolean; message: string }> {\n return this.fetch<{ success: boolean; message: string }>(\n `s/${wid}/${siteUuid}/auth/send-phone-code`,\n {\n method: 'POST',\n body: JSON.stringify({ phoneNumber }),\n }\n );\n }\n\n /** Send an email verification code for site-specific authentication. */\n async siteSendEmailCode(\n wid: string,\n siteUuid: string,\n email: string\n ): Promise<{ success: boolean; message: string }> {\n return this.fetch<{ success: boolean; message: string }>(\n `s/${wid}/${siteUuid}/auth/send-email-code`,\n {\n method: 'POST',\n body: JSON.stringify({ email }),\n }\n );\n }\n\n /** Verify a phone or email code and complete site authentication. */\n async siteVerifyCode(\n wid: string,\n siteUuid: string,\n code: string,\n phoneNumber?: string,\n email?: string\n ): Promise<{ token: string; accountId: number; memberId?: number }> {\n // Verify code and auto-create account+member if needed\n const verifyResponse = await this.fetch<{\n token: string;\n accountId: number;\n memberId?: number;\n }>(`s/${wid}/${siteUuid}/auth/verify`, {\n method: 'POST',\n body: JSON.stringify({ code, phoneNumber, email }),\n });\n\n // Set the auth cookies using the local complete endpoint\n const completeResponse = await fetch(`/api/auth/complete`, {\n method: 'POST',\n headers: { 'Content-Type': 'application/json' },\n body: JSON.stringify({ token: verifyResponse.token }),\n });\n\n if (!completeResponse.ok) {\n throw new Error('Failed to complete authentication');\n }\n\n return verifyResponse;\n }\n\n /** Trigger a crawl of the site's external content source. */\n async crawlSite(wid: string, siteId: number): Promise<Site> {\n return this.fetch<Site>(`w/${wid}/sites/${siteId}/crawl`, {\n method: 'POST',\n });\n }\n\n /** Create a new site in the workspace. */\n async createSite(wid: string, site: SiteFormData): Promise<Site> {\n return this.fetch<Site>(`w/${wid}/sites`, {\n method: 'POST',\n body: JSON.stringify(site),\n });\n }\n\n /** Update a site's configuration. */\n async updateSite(wid: string, id: number, site: Partial<SiteFormData>): Promise<Site> {\n return this.fetch<Site>(`w/${wid}/sites/${id}`, {\n method: 'PUT',\n body: JSON.stringify(site),\n });\n }\n\n /** Delete a site by ID. */\n async deleteSite(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/sites/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** List pages for a site with optional pagination, sorting, and search. */\n async getSitePages(\n wid: string,\n siteId: number,\n options: PagesQueryParams = {}\n ): Promise<PaginatedResponse<Page>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.search) params.append('search', options.search);\n\n return this.fetch<PaginatedResponse<Page>>(\n `w/${wid}/sites/${siteId}/pages${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Get a single page by ID within a site. */\n async getPage(wid: string, siteId: number, pageId: number): Promise<Page> {\n return this.fetch<Page>(`w/${wid}/sites/${siteId}/pages/${pageId}`);\n }\n\n /** Get a single page by its slug within a site. */\n async getPageBySlug(wid: string, siteId: number, slug: string): Promise<Page> {\n return this.fetch<Page>(`w/${wid}/sites/${siteId}/pages/by-slug/${slug}`);\n }\n\n /** Create a new page within a site. */\n async createPage(wid: string, siteId: number, page: PageFormData): Promise<Page> {\n return this.fetch<Page>(`w/${wid}/sites/${siteId}/pages`, {\n method: 'POST',\n body: JSON.stringify(page),\n });\n }\n\n /** Update a page's content or metadata. */\n async updatePage(\n wid: string,\n siteId: number,\n pageId: number,\n page: Partial<PageFormData>\n ): Promise<Page> {\n return this.fetch<Page>(`w/${wid}/sites/${siteId}/pages/${pageId}`, {\n method: 'PUT',\n body: JSON.stringify(page),\n });\n }\n\n /** Delete a page from a site. */\n async deletePage(wid: string, siteId: number, pageId: number): Promise<void> {\n return this.fetch(`w/${wid}/sites/${siteId}/pages/${pageId}`, {\n method: 'DELETE',\n });\n }\n\n /** Get aggregate counts (pages, menu items, etc.) for a site. */\n async getSiteCounts(wid: string, siteId: number): Promise<SiteCountsResponse> {\n return this.fetch<SiteCountsResponse>(`w/${wid}/sites/${siteId}/counts`);\n }\n\n /** Get the full menu tree for a site. */\n async getSiteMenu(wid: string, siteId: number): Promise<MenuTree> {\n return this.fetch<MenuTree>(`w/${wid}/sites/${siteId}/menu`);\n }\n\n /** List menu items for a site, optionally filtered by parent item. */\n async getMenuItems(wid: string, siteId: number, parentId?: number | null): Promise<MenuItem[]> {\n const params = new URLSearchParams();\n if (parentId !== undefined && parentId !== null) {\n params.append('parent_id', parentId.toString());\n }\n const query = params.toString();\n return this.fetch<MenuItem[]>(\n `w/${wid}/sites/${siteId}/menu/items${query ? `?${query}` : ''}`\n );\n }\n\n /** Create a new menu item in a site's navigation. */\n async createMenuItem(wid: string, siteId: number, item: MenuItemFormData): Promise<MenuItem> {\n return this.fetch<MenuItem>(`w/${wid}/sites/${siteId}/menu/items`, {\n method: 'POST',\n body: JSON.stringify(item),\n });\n }\n\n /** Update a menu item's properties. */\n async updateMenuItem(\n wid: string,\n siteId: number,\n itemId: number,\n item: Partial<MenuItemFormData>\n ): Promise<MenuItem> {\n return this.fetch<MenuItem>(`w/${wid}/sites/${siteId}/menu/items/${itemId}`, {\n method: 'PUT',\n body: JSON.stringify(item),\n });\n }\n\n /** Delete a menu item from a site's navigation. */\n async deleteMenuItem(wid: string, siteId: number, itemId: number): Promise<void> {\n return this.fetch(`w/${wid}/sites/${siteId}/menu/items/${itemId}`, {\n method: 'DELETE',\n });\n }\n\n /** Reorder menu items within a site's navigation. */\n async reorderMenuItems(wid: string, siteId: number, data: ReorderMenuItemsData): Promise<void> {\n return this.fetch(`w/${wid}/sites/${siteId}/menu/reorder`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Generate a pre-signed upload URL for site media content. */\n async generateSiteMediaUploadUrl(\n wid: string,\n siteId: number,\n uploadRequest: FileUploadRequest\n ): Promise<FileUploadResponse> {\n return this.fetch<FileUploadResponse>(`w/${wid}/sites/${siteId}/media/upload-url`, {\n method: 'POST',\n body: JSON.stringify(uploadRequest),\n });\n }\n\n /** Initiate Google OAuth flow for site-specific authentication. */\n async siteGoogleOAuthInitiate(\n wid: string,\n siteUuid: string,\n origin: string\n ): Promise<{ authorizationUrl: string }> {\n const params = new URLSearchParams({ origin });\n return this.fetch<{ authorizationUrl: string }>(\n `s/${wid}/${siteUuid}/auth/google/initiate?${params.toString()}`\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport { Subscription } from '../types';\n\nexport class SubscriptionsApi extends BaseApiClient {\n /** List all subscriptions for the current account. */\n async getSubscriptions(): Promise<Subscription[]> {\n return this.fetch<Subscription[]>('subscriptions');\n }\n\n /** List all subscriptions associated with a workspace. */\n async getWorkspaceSubscriptions(wid: string): Promise<Subscription[]> {\n return this.fetch<Subscription[]>(`w/${wid}/subscriptions`);\n }\n\n /** Cancel an active subscription. */\n async cancelSubscription(subscriptionId: number): Promise<void> {\n return this.fetch(`subscriptions/${subscriptionId}/cancel`, {\n method: 'POST',\n credentials: 'include',\n });\n }\n\n /** Reactivate a previously cancelled subscription. */\n async reactivateSubscription(subscriptionId: number): Promise<{ message: string }> {\n return this.fetch(`subscriptions/${subscriptionId}/reactivate`, {\n method: 'POST',\n credentials: 'include',\n });\n }\n\n /** Update a subscription's budget, plan period, or credit settings. */\n async updateSubscription(\n subscriptionId: number,\n updates: {\n planPeriod?: string; // Plan period (e.g., \"month\", \"year\")\n extraUsageEnabled?: boolean;\n reloadAmountCents?: number | null;\n reloadThresholdCents?: number | null;\n monthlyReloadLimitCents?: number | null;\n }\n ): Promise<{ message: string }> {\n return this.fetch(`subscriptions/${subscriptionId}`, {\n method: 'PUT',\n credentials: 'include',\n body: JSON.stringify(updates),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n }\n\n /** Add a workspace to an existing subscription. */\n async addWorkspaceToSubscription(\n subscriptionId: number,\n data: {\n product_id: number;\n workspace_id: number;\n plan_period?: string;\n name?: string;\n slug?: string;\n template_workspace_uuid?: string;\n }\n ): Promise<{\n success: boolean;\n itemsCreated: number;\n subscriptionId: number;\n workspaceId: number;\n }> {\n return this.fetch(`subscriptions/${subscriptionId}/add-workspace`, {\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify(data),\n headers: {\n 'Content-Type': 'application/json',\n },\n });\n }\n\n /** Purchase extra credits on a subscription (org-level). */\n async purchaseCredits(\n subscriptionId: number,\n amountCents: number\n ): Promise<{\n success: boolean;\n grantId: number;\n creditsAdded: number;\n amountChargedCents: number;\n newBalance: number;\n }> {\n return this.fetch(`subscriptions/${subscriptionId}/purchase-credits`, {\n method: 'POST',\n credentials: 'include',\n body: JSON.stringify({ amount_cents: amountCents }),\n headers: { 'Content-Type': 'application/json' },\n });\n }\n}\n","import type {\n CloseSupportRequestRequest,\n CreateSupportRequestCommentRequest,\n CreateSupportRequestRequest,\n RecordResourceClickRequest,\n SupportRequest,\n SupportRequestListParams,\n SupportRequestListResponse,\n} from '../types/support-request-types';\nimport { BaseApiClient } from './base';\n\nfunction supportRequestParams(params?: SupportRequestListParams): string {\n const searchParams = new URLSearchParams();\n if (params?.page) searchParams.append('page', params.page.toString());\n if (params?.pageSize) searchParams.append('pageSize', params.pageSize.toString());\n if (params?.status) searchParams.append('status', params.status);\n if (params?.supportRequestType) {\n searchParams.append('supportRequestType', params.supportRequestType);\n }\n if (params?.severity) searchParams.append('severity', params.severity);\n if (params?.source) searchParams.append('source', params.source);\n if (params?.organizationId !== undefined) {\n searchParams.append('organizationId', params.organizationId.toString());\n }\n if (params?.workspaceId !== undefined) {\n searchParams.append('workspaceId', params.workspaceId.toString());\n }\n if (params?.linearLinked !== undefined) {\n searchParams.append('linearLinked', params.linearLinked.toString());\n }\n const query = searchParams.toString();\n return query ? `?${query}` : '';\n}\n\nexport class SupportRequestsApi extends BaseApiClient {\n async listSupportRequests(\n params?: SupportRequestListParams\n ): Promise<SupportRequestListResponse> {\n return this.fetch<SupportRequestListResponse>(\n `support-requests${supportRequestParams(params)}`\n );\n }\n\n async getSupportRequest(uuid: string): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`support-requests/${uuid}`);\n }\n\n async createSupportRequest(data: CreateSupportRequestRequest): Promise<SupportRequest> {\n return this.fetch<SupportRequest>('support-requests', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async commentOnSupportRequest(\n uuid: string,\n data: CreateSupportRequestCommentRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`support-requests/${uuid}/comments`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async listOrgSupportRequests(\n orgUuid: string,\n params?: SupportRequestListParams\n ): Promise<SupportRequestListResponse> {\n return this.fetch<SupportRequestListResponse>(\n `o/${orgUuid}/support-requests${supportRequestParams(params)}`\n );\n }\n\n async getOrgSupportRequest(orgUuid: string, uuid: string): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`o/${orgUuid}/support-requests/${uuid}`);\n }\n\n async createOrgSupportRequest(\n orgUuid: string,\n data: CreateSupportRequestRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`o/${orgUuid}/support-requests`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async commentOnOrgSupportRequest(\n orgUuid: string,\n uuid: string,\n data: CreateSupportRequestCommentRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`o/${orgUuid}/support-requests/${uuid}/comments`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async listWorkspaceSupportRequests(\n workspaceUuid: string,\n params?: SupportRequestListParams\n ): Promise<SupportRequestListResponse> {\n return this.fetch<SupportRequestListResponse>(\n `w/${workspaceUuid}/support-requests${supportRequestParams(params)}`\n );\n }\n\n async getWorkspaceSupportRequest(workspaceUuid: string, uuid: string): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`w/${workspaceUuid}/support-requests/${uuid}`);\n }\n\n async createWorkspaceSupportRequest(\n workspaceUuid: string,\n data: CreateSupportRequestRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`w/${workspaceUuid}/support-requests`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async commentOnWorkspaceSupportRequest(\n workspaceUuid: string,\n uuid: string,\n data: CreateSupportRequestCommentRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`w/${workspaceUuid}/support-requests/${uuid}/comments`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async closeWorkspaceSupportRequest(\n workspaceUuid: string,\n uuid: string,\n data: CloseSupportRequestRequest = {}\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`w/${workspaceUuid}/support-requests/${uuid}/close`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Record a click on a pushed resource (Proactive Support). For a\n * manager_prompt, pass the Manager Chat UUID it opened so the\n * resource→chat linkage is preserved.\n */\n async clickWorkspaceSupportRequestResource(\n workspaceUuid: string,\n uuid: string,\n resourceUuid: string,\n data: RecordResourceClickRequest = {}\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(\n `w/${workspaceUuid}/support-requests/${uuid}/resources/${resourceUuid}/click`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport type {\n CreditGrantListResponse,\n Customer,\n CustomerAccount,\n Invoice,\n StripePaymentMethod,\n UpdateCustomerRequest,\n} from '../types';\nimport type { Subscription } from '../types';\n\n// Response type includes the user's role on this customer\nexport interface MyCustomerResponse extends Customer {\n role: string;\n}\n\nexport class CustomersApi extends BaseApiClient {\n async getMyCustomers(): Promise<MyCustomerResponse[]> {\n return this.fetch<MyCustomerResponse[]>('customers');\n }\n\n async getMyCustomer(uuid: string): Promise<MyCustomerResponse> {\n return this.fetch<MyCustomerResponse>(`customers/${uuid}`);\n }\n\n async getMyCustomerAccounts(uuid: string): Promise<CustomerAccount[]> {\n return this.fetch<CustomerAccount[]>(`customers/${uuid}/accounts`);\n }\n\n async getMyCustomerSubscriptions(\n uuid: string,\n opts?: { status?: string; page?: number; pageSize?: number }\n ): Promise<{ items: Subscription[]; total: number; page: number; pageSize: number }> {\n const params = new URLSearchParams();\n if (opts?.status) params.set('status', opts.status);\n if (opts?.page !== undefined) params.set('page', String(opts.page));\n if (opts?.pageSize !== undefined) params.set('page_size', String(opts.pageSize));\n const qs = params.toString();\n return this.fetch(`customers/${uuid}/subscriptions${qs ? '?' + qs : ''}`);\n }\n\n async getMyCustomerInvoices(uuid: string): Promise<Invoice[]> {\n return this.fetch<Invoice[]>(`customers/${uuid}/invoices`);\n }\n\n async updateMyCustomer(uuid: string, data: UpdateCustomerRequest): Promise<MyCustomerResponse> {\n return this.fetch<MyCustomerResponse>(`customers/${uuid}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n // ===== Payment Methods =====\n\n async createMyCustomerSetupIntent(\n uuid: string\n ): Promise<{ clientSecret: string; setupIntentId: string; status: string }> {\n return this.fetch(`customers/${uuid}/stripe/setup-intent`, { method: 'POST' });\n }\n\n async getMyCustomerPaymentMethods(uuid: string): Promise<StripePaymentMethod[]> {\n return this.fetch<StripePaymentMethod[]>(`customers/${uuid}/stripe/payment-methods`);\n }\n\n async attachMyCustomerPaymentMethod(\n uuid: string,\n paymentMethodId: string,\n setAsDefault: boolean = false\n ): Promise<{ success: boolean; message: string; paymentMethodId: string; type: string }> {\n return this.fetch(`customers/${uuid}/stripe/payment-methods/${paymentMethodId}/attach`, {\n method: 'POST',\n body: JSON.stringify({ setAsDefault }),\n });\n }\n\n async detachMyCustomerPaymentMethod(\n uuid: string,\n paymentMethodId: string\n ): Promise<{ success: string; message: string }> {\n return this.fetch(`customers/${uuid}/stripe/payment-methods/${paymentMethodId}`, {\n method: 'DELETE',\n });\n }\n\n async setDefaultMyCustomerPaymentMethod(\n uuid: string,\n paymentMethodId: string\n ): Promise<{ success: string; message: string }> {\n return this.fetch(`customers/${uuid}/stripe/payment-methods/${paymentMethodId}/set-default`, {\n method: 'PUT',\n });\n }\n\n async getMyCustomerCreditGrants(\n uuid: string,\n opts?: { subscriptionId?: number; page?: number; pageSize?: number }\n ): Promise<CreditGrantListResponse> {\n const params = new URLSearchParams();\n if (opts?.subscriptionId !== undefined) {\n params.set('subscription_id', String(opts.subscriptionId));\n }\n if (opts?.page !== undefined) params.set('page', String(opts.page));\n if (opts?.pageSize !== undefined) params.set('page_size', String(opts.pageSize));\n const qs = params.toString();\n return this.fetch(`customers/${uuid}/credit-grants${qs ? '?' + qs : ''}`);\n }\n}\n","import { BaseApiClient } from './base';\nimport type { Reseller, ResellerAccount, UpdateResellerRequest, Subscription } from '../types';\nimport type { Product } from '../types';\n\n// Response type includes the user's role on this reseller\nexport interface MyResellerResponse extends Reseller {\n role: string;\n}\n\nexport class ResellersApi extends BaseApiClient {\n async getMyResellers(): Promise<MyResellerResponse[]> {\n return this.fetch<MyResellerResponse[]>('resellers');\n }\n\n async getMyReseller(uuid: string): Promise<MyResellerResponse> {\n return this.fetch<MyResellerResponse>(`resellers/${uuid}`);\n }\n\n async getMyResellerAccounts(uuid: string): Promise<ResellerAccount[]> {\n return this.fetch<ResellerAccount[]>(`resellers/${uuid}/accounts`);\n }\n\n async getMyResellerProducts(uuid: string): Promise<Product[]> {\n return this.fetch<Product[]>(`resellers/${uuid}/products`);\n }\n\n async getMyResellerSubscriptions(\n uuid: string,\n opts?: { status?: string; page?: number; pageSize?: number }\n ): Promise<{ items: Subscription[]; total: number; page: number; pageSize: number }> {\n const params = new URLSearchParams();\n if (opts?.status) params.set('status', opts.status);\n if (opts?.page) params.set('page', String(opts.page));\n if (opts?.pageSize) params.set('page_size', String(opts.pageSize));\n const qs = params.toString();\n return this.fetch(`resellers/${uuid}/subscriptions${qs ? '?' + qs : ''}`);\n }\n\n async updateMyReseller(uuid: string, data: UpdateResellerRequest): Promise<MyResellerResponse> {\n return this.fetch<MyResellerResponse>(`resellers/${uuid}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n headers: { 'Content-Type': 'application/json' },\n });\n }\n}\n","import { BaseApiClient } from './base';\nimport { CustomTool } from '../types';\n\nexport interface SupervisorFormData {\n name: string;\n displayName?: string;\n description?: string;\n prompt: string;\n chatModel?: string;\n tools?: string[];\n files?: Array<{\n id: number;\n accessMode: string;\n choicePrompt?: string;\n }>;\n dataTypes?: Array<{\n id: number;\n accessMode: string;\n }>;\n}\n\nexport class SupervisorsApi extends BaseApiClient {\n /** List all supervisors in a workspace. */\n async getSupervisors(wid: string): Promise<CustomTool[]> {\n return this.fetch<CustomTool[]>(`w/${wid}/supervisors`);\n }\n\n /** Get a single supervisor by ID. */\n async getSupervisor(wid: string, id: number): Promise<CustomTool> {\n return this.fetch<CustomTool>(`w/${wid}/supervisors/${id}`);\n }\n\n /** Create a new supervisor in a workspace. */\n async createSupervisor(wid: string, supervisor: SupervisorFormData): Promise<CustomTool> {\n return this.fetch<CustomTool>(`w/${wid}/supervisors`, {\n method: 'POST',\n body: JSON.stringify(supervisor),\n });\n }\n\n /** Update an existing supervisor with partial data. */\n async updateSupervisor(\n wid: string,\n id: number,\n supervisor: Partial<SupervisorFormData>\n ): Promise<CustomTool> {\n return this.fetch<CustomTool>(`w/${wid}/supervisors/${id}`, {\n method: 'PUT',\n body: JSON.stringify(supervisor),\n });\n }\n\n /** Delete a supervisor by ID. */\n async deleteSupervisor(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/supervisors/${id}`, {\n method: 'DELETE',\n });\n }\n}\n","import { BaseApiClient } from './base';\nimport { Task, TaskFormData } from '../types';\n\nexport class TasksApi extends BaseApiClient {\n /** List all tasks in a workspace, optionally filtering by workflow or including archived. */\n async getTasks(\n wid: string,\n options: {\n includeArchived?: boolean;\n workflowId?: number;\n } = {}\n ): Promise<Task[]> {\n const params = new URLSearchParams();\n if (options.includeArchived) {\n params.append('include_archived', 'true');\n }\n if (options.workflowId) {\n params.append('workflow_id', options.workflowId.toString());\n }\n return this.fetch<Task[]>(\n `w/${wid}/tasks${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n /** Get a single task by ID. */\n async getTask(wid: string, id: number | string): Promise<Task> {\n return this.fetch<Task>(`w/${wid}/tasks/${id}`);\n }\n\n /** Create a new task in a workspace. */\n async createTask(wid: string, task: TaskFormData): Promise<Task> {\n return this.fetch<Task>(`w/${wid}/tasks`, {\n method: 'POST',\n body: JSON.stringify(task),\n });\n }\n\n /** Update an existing task with partial data. */\n async updateTask(wid: string, id: number, task: Partial<TaskFormData>): Promise<Task> {\n return this.fetch<Task>(`w/${wid}/tasks/${id}`, {\n method: 'PUT',\n body: JSON.stringify(task),\n });\n }\n\n /** Delete a task by ID. */\n async deleteTask(wid: string, id: number): Promise<void> {\n return this.fetch(`w/${wid}/tasks/${id}`, {\n method: 'DELETE',\n });\n }\n\n /** Archive a task, hiding it from default listings. */\n async archiveTask(wid: string, id: number): Promise<Task> {\n return this.fetch<Task>(`w/${wid}/tasks/${id}/archive`, {\n method: 'PUT',\n });\n }\n\n /** Restore an archived task back to active status. */\n async unarchiveTask(wid: string, id: number): Promise<Task> {\n return this.fetch<Task>(`w/${wid}/tasks/${id}/unarchive`, {\n method: 'PUT',\n });\n }\n\n /**\n * Clone a task with all its dependencies including abilities.\n *\n * This creates a complete copy of the task on the backend, including:\n * - Task properties (name, description, prompt, etc.)\n * - File associations\n * - Data type associations\n * - Event rules\n * - Abilities (task-scoped)\n */\n async cloneTask(wid: string, taskId: number, name: string, slug?: string): Promise<Task> {\n return this.fetch<Task>(`w/${wid}/tasks/${taskId}/clone`, {\n method: 'POST',\n body: JSON.stringify({ name, slug }),\n });\n }\n}\n","import { BaseApiClient } from './base';\n\n/**\n * A template variable available for autocomplete.\n */\nexport interface TemplateVariable {\n path: string; // e.g., \"record.data.title\"\n type: string; // e.g., \"string\", \"number\", \"date\"\n description: string; // e.g., \"Title field from the data record\"\n sampleValue: any; // e.g., \"a-title\" for string fields\n}\n\n/**\n * Parameters for requesting template context.\n */\nexport interface TemplateContextRequest {\n workflowId?: number;\n taskId?: number;\n dataTypeId?: number;\n eventType?: string; // e.g., \"data_record:created\"\n objectType?: string; // e.g., \"data_record\"\n}\n\n/**\n * Response containing available template variables and namespaces.\n */\nexport interface TemplateContextResponse {\n variables: TemplateVariable[];\n namespaces: string[]; // Available top-level namespaces\n sampleContext: Record<string, any>; // Full sample context for preview rendering\n}\n\n/**\n * Parameters for requesting a template preview.\n */\nexport interface TemplatePreviewRequest {\n template: string;\n workflowId?: number;\n taskId?: number;\n dataTypeId?: number;\n eventType?: string;\n objectType?: string;\n}\n\n/**\n * Response containing rendered template and any errors.\n */\nexport interface TemplatePreviewResponse {\n rendered: string;\n errors: string[];\n}\n\n/**\n * A variable from the central registry with extended metadata.\n */\nexport interface RegistryVariable {\n path: string; // e.g., \"member.name\"\n type: string; // e.g., \"string\", \"number\"\n description: string;\n example: any;\n namespace: string;\n deprecated: boolean;\n deprecatedFor?: string | null;\n permissionScope?: string | null;\n}\n\n/**\n * Parameters for requesting variables from the registry.\n */\nexport interface VariableRegistryRequest {\n eventType?: string;\n includeDeprecated?: boolean;\n}\n\n/**\n * Response containing variables from the central registry.\n */\nexport interface VariableRegistryResponse {\n variables: RegistryVariable[];\n namespaces: string[];\n sampleContext: Record<string, any>;\n}\n\nexport class TemplatesApi extends BaseApiClient {\n /**\n * Get available template variables and sample context for template editing.\n *\n * Returns variables appropriate for the given context (event type, data type, etc.)\n * with sample values for live preview.\n */\n async getTemplateContext(\n wid: string,\n request: TemplateContextRequest\n ): Promise<TemplateContextResponse> {\n return this.fetch<TemplateContextResponse>(`w/${wid}/templates/context`, {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Render a template with sample data for preview.\n *\n * Uses the same Jinja2 renderer as the actual template system,\n * but with sample data instead of real data.\n */\n async previewTemplate(\n wid: string,\n request: TemplatePreviewRequest\n ): Promise<TemplatePreviewResponse> {\n return this.fetch<TemplatePreviewResponse>(`w/${wid}/templates/preview`, {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n /**\n * Get variables from the central variable registry.\n *\n * This provides variables defined in the single source of truth registry\n * with extended metadata including deprecation info and permission scopes.\n */\n async getVariableRegistry(\n wid: string,\n request: VariableRegistryRequest = {}\n ): Promise<VariableRegistryResponse> {\n const params = new URLSearchParams();\n if (request.eventType) {\n params.append('event_type', request.eventType);\n }\n if (request.includeDeprecated) {\n params.append('include_deprecated', 'true');\n }\n const queryString = params.toString();\n const url = queryString\n ? `w/${wid}/templates/variables/registry?${queryString}`\n : `w/${wid}/templates/variables/registry`;\n return this.fetch<VariableRegistryResponse>(url, { method: 'GET' });\n }\n}\n","import type { ToolkitsResponse, ToolResponse } from '../types/toolkit-types';\nimport { BaseApiClient } from './base';\n\n/**\n * API client for toolkit-related operations.\n */\nexport class ToolkitsApi extends BaseApiClient {\n /**\n * Get available toolkits for the workspace\n */\n async getToolkits(wid: string): Promise<ToolkitsResponse> {\n return this.fetch<ToolkitsResponse>(`w/${wid}/toolkits`);\n }\n\n /**\n * Get details for a specific tool by name within a chat context.\n * Searches tools available to the chat's assistant.\n */\n async getTool(wid: string, chatId: number, toolName: string): Promise<ToolResponse> {\n return this.fetch<ToolResponse>(\n `w/${wid}/chats/${chatId}/tool/${encodeURIComponent(toolName)}`\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport type {\n Journey,\n JourneyFormData,\n JourneyGoal,\n JourneyGoalFormData,\n JourneyHealthResponse,\n JourneyNote,\n JourneyNoteFormData,\n JourneyStep,\n JourneyStepConnectionFormData,\n JourneyStepConnection,\n JourneyStepFormData,\n JourneyTestRunResponse,\n MemberJourney,\n EnrollMemberFormData,\n ReenrollMemberFormData,\n UnenrollMemberFormData,\n PaginatedResponse,\n} from '../types';\n\nexport class JourneysApi extends BaseApiClient {\n /** List journeys, optionally including archived, paginated. */\n async getJourneys(\n wid: string,\n includeArchived: boolean = false,\n pageOpts?: { page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<Journey>> {\n const query = new URLSearchParams();\n if (includeArchived) query.set('include_archived', 'true');\n if (pageOpts?.page !== undefined) query.set('page', String(pageOpts.page));\n if (pageOpts?.pageSize !== undefined) query.set('pageSize', String(pageOpts.pageSize));\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<Journey>>(`w/${wid}/journeys${qs}`);\n }\n\n /** Get a single journey by ID (includes steps and goals). */\n async getJourney(wid: string, journeyId: number): Promise<Journey> {\n return this.fetch<Journey>(`w/${wid}/journeys/${journeyId}`);\n }\n\n /** Create a new journey. */\n async createJourney(wid: string, data: JourneyFormData): Promise<Journey> {\n return this.fetch<Journey>(`w/${wid}/journeys`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update an existing journey. */\n async updateJourney(\n wid: string,\n journeyId: number,\n data: Partial<JourneyFormData>\n ): Promise<Journey> {\n return this.fetch<Journey>(`w/${wid}/journeys/${journeyId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Archive a journey (soft delete). */\n async archiveJourney(wid: string, journeyId: number): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/journeys/${journeyId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Get Journey Health diagnostics — authoring issues and runtime\n * failures for a single journey. PHI-safe: response carries IDs,\n * counts, error_type strings, and timestamps only.\n */\n async getJourneyHealth(wid: string, journeyId: number): Promise<JourneyHealthResponse> {\n return this.fetch<JourneyHealthResponse>(`w/${wid}/journeys/${journeyId}/health`);\n }\n\n /** Create a step within a journey. */\n async createStep(\n wid: string,\n journeyId: number,\n data: JourneyStepFormData\n ): Promise<JourneyStep> {\n return this.fetch<JourneyStep>(`w/${wid}/journeys/${journeyId}/steps`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update an existing step. */\n async updateStep(\n wid: string,\n journeyId: number,\n stepUuid: string,\n data: Partial<JourneyStepFormData>\n ): Promise<JourneyStep> {\n return this.fetch<JourneyStep>(`w/${wid}/journeys/${journeyId}/steps/${stepUuid}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Archive a step (soft delete). */\n async archiveStep(\n wid: string,\n journeyId: number,\n stepUuid: string\n ): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/journeys/${journeyId}/steps/${stepUuid}`, {\n method: 'DELETE',\n });\n }\n\n /** Create a connection (DAG edge) between two steps. */\n async createConnection(\n wid: string,\n journeyId: number,\n data: JourneyStepConnectionFormData\n ): Promise<JourneyStepConnection> {\n return this.fetch<JourneyStepConnection>(`w/${wid}/journeys/${journeyId}/connections`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update a connection (edge) by ID. */\n async updateConnection(\n wid: string,\n journeyId: number,\n connectionId: number,\n data: Partial<JourneyStepConnectionFormData>\n ): Promise<JourneyStepConnection> {\n return this.fetch<JourneyStepConnection>(\n `w/${wid}/journeys/${journeyId}/connections/${connectionId}`,\n { method: 'PUT', body: JSON.stringify(data) }\n );\n }\n\n /** Delete a connection by ID. */\n async deleteConnection(\n wid: string,\n journeyId: number,\n connectionId: number\n ): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(\n `w/${wid}/journeys/${journeyId}/connections/${connectionId}`,\n { method: 'DELETE' }\n );\n }\n\n /** Create a goal for a journey. */\n async createGoal(\n wid: string,\n journeyId: number,\n data: JourneyGoalFormData\n ): Promise<JourneyGoal> {\n return this.fetch<JourneyGoal>(`w/${wid}/journeys/${journeyId}/goals`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update an existing goal. */\n async updateGoal(\n wid: string,\n journeyId: number,\n goalUuid: string,\n data: Partial<JourneyGoalFormData>\n ): Promise<JourneyGoal> {\n return this.fetch<JourneyGoal>(`w/${wid}/journeys/${journeyId}/goals/${goalUuid}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Delete a goal. */\n async deleteGoal(wid: string, journeyId: number, goalUuid: string): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/journeys/${journeyId}/goals/${goalUuid}`, {\n method: 'DELETE',\n });\n }\n\n /** List enrolled members for a journey (paginated). */\n async getJourneyMembers(\n wid: string,\n journeyId: number,\n params?: {\n page?: number;\n pageSize?: number;\n search?: string;\n /** MemberJourneyStatus filter (e.g., 'active', 'completed'). */\n status?: string;\n /** ISO 8601 timestamp — only enrollments on/after this time. */\n enrolledAfter?: string;\n /** ISO 8601 timestamp — only enrollments on/before this time. */\n enrolledBefore?: string;\n /** Only enrollments whose current step is this JourneyStep id. */\n currentTaskId?: number;\n /**\n * Only enrollments that have a Journey Health runtime breadcrumb\n * for this edge. The backend validates that the edge belongs to\n * the journey.\n */\n runtimeFailureEdgeId?: number;\n }\n ): Promise<PaginatedResponse<MemberJourney>> {\n const qs = new URLSearchParams();\n if (params?.page) qs.set('page', String(params.page));\n if (params?.pageSize) qs.set('pageSize', String(params.pageSize));\n if (params?.search) qs.set('search', params.search);\n if (params?.status) qs.set('status', params.status);\n if (params?.enrolledAfter) qs.set('enrolledAfter', params.enrolledAfter);\n if (params?.enrolledBefore) qs.set('enrolledBefore', params.enrolledBefore);\n if (params?.currentTaskId !== undefined)\n qs.set('currentTaskId', String(params.currentTaskId));\n if (params?.runtimeFailureEdgeId !== undefined)\n qs.set('runtimeFailureEdgeId', String(params.runtimeFailureEdgeId));\n const query = qs.toString();\n return this.fetch<PaginatedResponse<MemberJourney>>(\n `w/${wid}/journeys/${journeyId}/members${query ? `?${query}` : ''}`\n );\n }\n\n /** Enroll one or more members in a journey. */\n async enrollMembers(\n wid: string,\n journeyId: number,\n data: EnrollMemberFormData\n ): Promise<MemberJourney[]> {\n return this.fetch<MemberJourney[]>(`w/${wid}/journeys/${journeyId}/enroll`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Unenroll one or more members from a journey. */\n async unenrollMembers(\n wid: string,\n journeyId: number,\n data: UnenrollMemberFormData\n ): Promise<MemberJourney[]> {\n return this.fetch<MemberJourney[]>(`w/${wid}/journeys/${journeyId}/unenroll`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Re-enroll a canceled member back to enrolled status. */\n async reenrollMember(\n wid: string,\n journeyId: number,\n data: ReenrollMemberFormData\n ): Promise<MemberJourney> {\n return this.fetch<MemberJourney>(`w/${wid}/journeys/${journeyId}/reenroll`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Hard-delete a canceled enrollment so the member can be re-enrolled fresh. */\n async deleteEnrollment(wid: string, journeyId: number, memberId: number): Promise<void> {\n await this.fetch(`w/${wid}/journeys/${journeyId}/members/${memberId}`, {\n method: 'DELETE',\n });\n }\n\n /** Get all journey enrollments for a member. */\n async getMemberJourneys(wid: string, memberId: number): Promise<MemberJourney[]> {\n return this.fetch<MemberJourney[]>(`w/${wid}/journeys/by-member/${memberId}`);\n }\n\n /**\n * Dry-run heartbeat CEL evaluation for an enrolled member.\n *\n * Evaluates all PENDING steps exactly as the heartbeat would, but writes no\n * state changes. Returns step-by-step results for debugging stuck members.\n */\n async testRunJourney(\n wid: string,\n journeyId: number,\n memberId: number\n ): Promise<JourneyTestRunResponse> {\n return this.fetch<JourneyTestRunResponse>(\n `w/${wid}/journeys/${journeyId}/members/${memberId}/test-run`,\n { method: 'POST' }\n );\n }\n\n // ===== JOURNEY NOTES =====\n\n /** List notes for a journey. */\n async getJourneyNotes(wid: string, journeyId: number): Promise<JourneyNote[]> {\n return this.fetch<JourneyNote[]>(`w/${wid}/journeys/${journeyId}/notes`);\n }\n\n /** Create a note on a journey. */\n async createJourneyNote(\n wid: string,\n journeyId: number,\n data: JourneyNoteFormData\n ): Promise<JourneyNote> {\n return this.fetch<JourneyNote>(`w/${wid}/journeys/${journeyId}/notes`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update an existing journey note. */\n async updateJourneyNote(\n wid: string,\n journeyId: number,\n noteId: number,\n data: Partial<JourneyNoteFormData>\n ): Promise<JourneyNote> {\n return this.fetch<JourneyNote>(`w/${wid}/journeys/${journeyId}/notes/${noteId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Delete a journey note. */\n async deleteJourneyNote(wid: string, journeyId: number, noteId: number): Promise<void> {\n return this.fetch<void>(`w/${wid}/journeys/${journeyId}/notes/${noteId}`, {\n method: 'DELETE',\n });\n }\n}\n","import { BaseApiClient } from './base';\nimport type { Workflow, WorkflowFormData } from '../types';\nimport type {\n WorkflowTemplate,\n CreateWorkflowFromTemplateFormData,\n WorkflowActivity,\n TaskAssignmentStats,\n TaskChatsListResponse,\n WorkflowAccessValidationResponse,\n WorkflowConfigValidationResponse,\n WorkflowRouteDryRunResponse,\n WorkflowContributor,\n CreateWorkflowContributorRequest,\n UpdateWorkflowContributorRequest,\n} from '../types/task-types';\nimport type {\n WorkspaceBuilderInfo,\n BuildWorkspaceResponse,\n ValidateWorkflowNameResponse,\n} from '../types/workspace-builder-types';\nimport type {\n WorkflowVersionResponse,\n WorkflowVersionDetailResponse,\n WorkflowVersionListResponse,\n PublishVersionRequest,\n UpdateVersionRequest,\n WorkflowVersionDiffResponse,\n} from '../types/workflow-version-types';\n\nexport class WorkflowsApi extends BaseApiClient {\n /** List all workflows in a workspace, optionally including archived ones. */\n async getWorkflows(wid: string, archived: boolean = false): Promise<Workflow[]> {\n const url = archived ? `w/${wid}/workflows?archived=true` : `w/${wid}/workflows`;\n return this.fetch<Workflow[]>(url);\n }\n\n /** Get a single workflow by ID. */\n async getWorkflow(wid: string, id: number | string): Promise<Workflow> {\n return this.fetch<Workflow>(`w/${wid}/workflows/${id}`);\n }\n\n /** Get activity metrics for a single workflow. */\n async getWorkflowActivity(\n wid: string,\n id: number,\n options?: { days?: number }\n ): Promise<WorkflowActivity> {\n const params = options?.days ? `?days=${options.days}` : '';\n return this.fetch<WorkflowActivity>(`w/${wid}/workflows/${id}/activity${params}`);\n }\n\n /** Get activity metrics for multiple workflows in a single request. */\n async getWorkflowsActivityBatch(\n wid: string,\n workflowIds: number[],\n options?: { days?: number }\n ): Promise<Record<string, WorkflowActivity>> {\n const params = new URLSearchParams();\n params.set('workflow_ids', workflowIds.join(','));\n if (options?.days) params.set('days', String(options.days));\n return this.fetch<Record<string, WorkflowActivity>>(\n `w/${wid}/workflows/activity/batch?${params.toString()}`\n );\n }\n\n /** Get the Mermaid diagram representation of a workflow. */\n async getWorkflowDiagram(\n wid: string,\n id: number\n ): Promise<{ mermaid: string; taskCount: number }> {\n return this.fetch<{ mermaid: string; taskCount: number }>(`w/${wid}/workflows/${id}/diagram`);\n }\n\n /**\n * Get workflow thumbnail URL.\n * For cross-domain setups, returns a same-origin proxy URL to ensure cookies are sent.\n * For same-origin setups, returns the direct API URL.\n */\n getWorkflowThumbnailUrl(wid: string, id: number): string {\n if (this.isCrossDomain) {\n // Use same-origin proxy route to ensure cookies are sent with the request\n return `/api/v2/w/${wid}/workflows/${id}/thumbnail`;\n }\n // Same-origin: use direct API URL\n return `${this.baseUrl}/api/v2/w/${wid}/workflows/${id}/thumbnail`;\n }\n\n /** Create a new workflow in a workspace. */\n async createWorkflow(wid: string, workflow: WorkflowFormData): Promise<Workflow> {\n return this.fetch<Workflow>(`w/${wid}/workflows`, {\n method: 'POST',\n body: JSON.stringify(workflow),\n });\n }\n\n /** Update an existing workflow. */\n async updateWorkflow(\n wid: string,\n id: number,\n workflow: Partial<WorkflowFormData>\n ): Promise<Workflow> {\n return this.fetch<Workflow>(`w/${wid}/workflows/${id}`, {\n method: 'PUT',\n body: JSON.stringify(workflow),\n });\n }\n\n /** Preview the impact of deleting a workflow, including affected tasks and assignments. */\n async getWorkflowDeletionPreview(\n wid: string,\n id: number\n ): Promise<{\n items: Array<{ id: number; name: string; description: string | null }>;\n total: number;\n hasAssignments: boolean;\n }> {\n return this.fetch(`w/${wid}/workflows/${id}/deletion-preview`);\n }\n\n /** Delete a workflow, optionally cascading to delete its tasks. */\n async deleteWorkflow(\n wid: string,\n id: number,\n cascade: boolean = false\n ): Promise<{ status: string; deletedTaskCount: number }> {\n const url = cascade ? `w/${wid}/workflows/${id}?cascade=true` : `w/${wid}/workflows/${id}`;\n return this.fetch(url, {\n method: 'DELETE',\n });\n }\n\n /** Archive a workflow. */\n async archiveWorkflow(wid: string, id: number): Promise<{ status: string }> {\n return this.fetch(`w/${wid}/workflows/${id}/archive`, {\n method: 'POST',\n });\n }\n\n /** Unarchive a previously archived workflow. */\n async unarchiveWorkflow(wid: string, id: number): Promise<{ status: string }> {\n return this.fetch(`w/${wid}/workflows/${id}/unarchive`, {\n method: 'POST',\n });\n }\n\n /** Clone a workflow with a new name. */\n async cloneWorkflow(wid: string, id: number, data: { name: string }): Promise<Workflow> {\n return this.fetch<Workflow>(`w/${wid}/workflows/${id}/clone`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** List available workflow templates. */\n async getWorkflowTemplates(wid: string): Promise<WorkflowTemplate[]> {\n return this.fetch<WorkflowTemplate[]>(`w/${wid}/workflows/templates`);\n }\n\n /** Create a new workflow from a template. */\n async createWorkflowFromTemplate(\n wid: string,\n templateUuid: string,\n data: CreateWorkflowFromTemplateFormData\n ): Promise<Workflow> {\n return this.fetch<Workflow>(`w/${wid}/workflows/templates/${templateUuid}/create-workflow`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Get task assignment statistics for a workflow within an optional date range. */\n async getWorkflowTaskAssignmentStats(\n wid: string,\n id: number,\n fromDate?: string,\n toDate?: string\n ): Promise<Record<number, TaskAssignmentStats>> {\n const params = new URLSearchParams();\n if (fromDate) params.append('from_date', fromDate);\n if (toDate) params.append('to_date', toDate);\n\n return this.fetch<Record<number, TaskAssignmentStats>>(\n `w/${wid}/workflows/${id}/task-assignment-stats?${params.toString()}`\n );\n }\n\n /** List chats for a specific task within a workflow. */\n async getTaskChats(\n wid: string,\n workflowId: number,\n taskId: number,\n fromDate?: string,\n toDate?: string,\n limit: number = 100,\n offset: number = 0\n ): Promise<TaskChatsListResponse> {\n const params = new URLSearchParams();\n if (fromDate) params.append('from_date', fromDate);\n if (toDate) params.append('to_date', toDate);\n params.append('limit', limit.toString());\n params.append('offset', offset.toString());\n\n return this.fetch<TaskChatsListResponse>(\n `w/${wid}/workflows/${workflowId}/tasks/${taskId}/chats?${params.toString()}`\n );\n }\n\n async getWorkflowAccessValidation(\n wid: string,\n workflowId: number\n ): Promise<WorkflowAccessValidationResponse> {\n return this.fetch<WorkflowAccessValidationResponse>(\n `w/${wid}/workflows/${workflowId}/validate-access`\n );\n }\n\n async getWorkflowConfigValidation(\n wid: string,\n workflowId: number\n ): Promise<WorkflowConfigValidationResponse> {\n return this.fetch<WorkflowConfigValidationResponse>(\n `w/${wid}/workflows/${workflowId}/validate-config`\n );\n }\n\n /**\n * Replay automatic routing for a Chat without performing the transition.\n *\n * Operator tool: returns a PHI-safe trace describing what the\n * automatic-edge evaluator would do at the next turn. Never returns\n * raw CEL, Form values, Member values, Chat content, or raw\n * exception strings — only IDs, status labels, and the exception\n * class name when the evaluator raises.\n *\n * Requires Workflow edit permission.\n */\n async getWorkflowRouteDryRun(\n wid: string,\n workflowId: number,\n args: {\n chatId: number;\n currentTaskId?: number;\n currentAssignmentTaskId?: number;\n }\n ): Promise<WorkflowRouteDryRunResponse> {\n const params = new URLSearchParams();\n params.set('chat_id', String(args.chatId));\n if (args.currentTaskId !== undefined) {\n params.set('current_task_id', String(args.currentTaskId));\n }\n if (args.currentAssignmentTaskId !== undefined) {\n params.set('current_assignment_task_id', String(args.currentAssignmentTaskId));\n }\n return this.fetch<WorkflowRouteDryRunResponse>(\n `w/${wid}/workflows/${workflowId}/route-dry-run?${params.toString()}`\n );\n }\n\n // Workflow Contributors API\n\n /** List all contributors for a workflow. */\n async getWorkflowContributors(wid: string, workflowId: number): Promise<WorkflowContributor[]> {\n return this.fetch<WorkflowContributor[]>(`w/${wid}/workflows/${workflowId}/contributors`);\n }\n\n /** Add a contributor to a workflow. */\n async createWorkflowContributor(\n wid: string,\n workflowId: number,\n data: CreateWorkflowContributorRequest\n ): Promise<WorkflowContributor> {\n return this.fetch<WorkflowContributor>(`w/${wid}/workflows/${workflowId}/contributors`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update a workflow contributor's settings. */\n async updateWorkflowContributor(\n wid: string,\n workflowId: number,\n contributorId: number,\n data: UpdateWorkflowContributorRequest\n ): Promise<WorkflowContributor> {\n return this.fetch<WorkflowContributor>(\n `w/${wid}/workflows/${workflowId}/contributors/${contributorId}`,\n {\n method: 'PATCH',\n body: JSON.stringify(data),\n }\n );\n }\n\n /** Remove a contributor from a workflow. */\n async deleteWorkflowContributor(\n wid: string,\n workflowId: number,\n contributorId: number\n ): Promise<{ success: boolean }> {\n return this.fetch<{ success: boolean }>(\n `w/${wid}/workflows/${workflowId}/contributors/${contributorId}`,\n {\n method: 'DELETE',\n }\n );\n }\n\n // Workspace Builders API\n\n /**\n * Get list of available workspace builders.\n */\n async getWorkspaceBuilders(wid: string): Promise<WorkspaceBuilderInfo[]> {\n const response = await this.fetch<{ items: WorkspaceBuilderInfo[] }>(`w/${wid}/builders`);\n return response.items;\n }\n\n /**\n * Get information about a specific workspace builder.\n */\n async getWorkspaceBuilder(wid: string, builderId: string): Promise<WorkspaceBuilderInfo> {\n return this.fetch<WorkspaceBuilderInfo>(`w/${wid}/builders/${builderId}`);\n }\n\n /**\n * Build and import a workflow from a builder template in one step.\n * Returns the created workflow ID and UUID.\n */\n async buildWorkspace(\n wid: string,\n builderId: string,\n params: Record<string, unknown>\n ): Promise<BuildWorkspaceResponse> {\n return this.fetch<BuildWorkspaceResponse>(`w/${wid}/builders/build`, {\n method: 'POST',\n body: JSON.stringify({ builderId, params }),\n });\n }\n\n /**\n * Validate if a workflow name is available.\n * Returns availability and a suggested alternative if taken.\n */\n async validateWorkflowName(wid: string, name: string): Promise<ValidateWorkflowNameResponse> {\n return this.fetch<ValidateWorkflowNameResponse>(`w/${wid}/builders/validate-name`, {\n method: 'POST',\n body: JSON.stringify({ name }),\n });\n }\n\n // Workflow Versions API\n\n /** List all versions of a workflow. */\n async getWorkflowVersions(\n wid: string,\n workflowUuid: string\n ): Promise<WorkflowVersionListResponse> {\n return this.fetch<WorkflowVersionListResponse>(`w/${wid}/workflows/${workflowUuid}/versions`);\n }\n\n /** Get the active version of a workflow. */\n async getWorkflowVersionActive(\n wid: string,\n workflowUuid: string\n ): Promise<WorkflowVersionDetailResponse> {\n return this.fetch<WorkflowVersionDetailResponse>(\n `w/${wid}/workflows/${workflowUuid}/versions/active`\n );\n }\n\n /** Get a specific version of a workflow by version number. */\n async getWorkflowVersion(\n wid: string,\n workflowUuid: string,\n versionNumber: number\n ): Promise<WorkflowVersionDetailResponse> {\n return this.fetch<WorkflowVersionDetailResponse>(\n `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}`\n );\n }\n\n /** Publish the live workflow as a new immutable version. */\n async publishWorkflowVersion(\n wid: string,\n workflowUuid: string,\n data: PublishVersionRequest\n ): Promise<WorkflowVersionResponse> {\n return this.fetch<WorkflowVersionResponse>(`w/${wid}/workflows/${workflowUuid}/versions`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updateWorkflowVersion(\n wid: string,\n workflowUuid: string,\n versionNumber: number,\n data: UpdateVersionRequest\n ): Promise<WorkflowVersionResponse> {\n return this.fetch<WorkflowVersionResponse>(\n `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}`,\n { method: 'PATCH', body: JSON.stringify(data) }\n );\n }\n\n /** Activate a published version. */\n async activateWorkflowVersion(\n wid: string,\n workflowUuid: string,\n versionNumber: number\n ): Promise<WorkflowVersionResponse> {\n return this.fetch<WorkflowVersionResponse>(\n `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}/activate`,\n {\n method: 'POST',\n }\n );\n }\n\n /** Deactivate a published version. */\n async deactivateWorkflowVersion(\n wid: string,\n workflowUuid: string,\n versionNumber: number\n ): Promise<WorkflowVersionResponse> {\n return this.fetch<WorkflowVersionResponse>(\n `w/${wid}/workflows/${workflowUuid}/versions/${versionNumber}/deactivate`,\n {\n method: 'POST',\n }\n );\n }\n\n /** Compare two workflow versions (0 = draft). */\n async diffWorkflowVersions(\n wid: string,\n workflowUuid: string,\n fromVersion: number,\n toVersion: number\n ): Promise<WorkflowVersionDiffResponse> {\n return this.fetch<WorkflowVersionDiffResponse>(\n `w/${wid}/workflows/${workflowUuid}/versions/diff?from=${fromVersion}&to=${toVersion}`\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport type { WorkflowNote, WorkflowNoteFormData } from '../types/task-types';\n\nexport class WorkflowNotesApi extends BaseApiClient {\n /** List all notes for a specific workflow. */\n async getWorkflowNotes(wid: string, workflowId: number): Promise<WorkflowNote[]> {\n return this.fetch<WorkflowNote[]>(`w/${wid}/workflows/${workflowId}/notes`);\n }\n\n /** Create a new note on a workflow. */\n async createWorkflowNote(\n wid: string,\n workflowId: number,\n data: WorkflowNoteFormData\n ): Promise<WorkflowNote> {\n return this.fetch<WorkflowNote>(`w/${wid}/workflows/${workflowId}/notes`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update an existing workflow note with partial data. */\n async updateWorkflowNote(\n wid: string,\n workflowId: number,\n noteId: number,\n data: Partial<WorkflowNoteFormData>\n ): Promise<WorkflowNote> {\n return this.fetch<WorkflowNote>(`w/${wid}/workflows/${workflowId}/notes/${noteId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Delete a workflow note by ID. */\n async deleteWorkflowNote(wid: string, workflowId: number, noteId: number): Promise<void> {\n return this.fetch<void>(`w/${wid}/workflows/${workflowId}/notes/${noteId}`, {\n method: 'DELETE',\n });\n }\n}\n","// Event-related types for event rules, webhooks, routines, and automation.\n// Server response shapes are generated from Pydantic via emit_openapi.py → Orval.\n// Client-only action params, form data, and query params are defined below.\n\nimport type { SortOrder } from './core-types';\nimport type { MemberNotifyActionParams } from './notification-types';\nimport type {\n EventRunSortField,\n RoutineSortField,\n RuleExecutionSortField,\n WebhookLogSortField,\n} from './sort-types';\n\n// ===== GENERATED SERVER TYPES =====\n\nimport type { EventRuleResponse as GeneratedEventRuleResponse } from './generated/event_rule';\n\nexport type { EventActionMapping, EventActionMappingsResponse } from './generated/event_rule';\n\n/** Client enums — preserve UPPER_SNAKE member names used across the app.\n *\n * OpenAPI codegen emits lowercase const-objects in `generated/event_rule.ts`.\n * The app imports these enums everywhere (config objects, switch statements, i18n\n * keys). We keep hand-written enums here and assert below that every generated\n * string-literal value has a matching client member. When the backend adds a new\n * event/action/object type, add it to the Pydantic model, run `yarn generate:types`,\n * then add the UPPER_SNAKE member here. */\nexport enum EventRuleObjectType {\n TASK = 'task',\n WORKSPACE = 'workspace',\n CHAT = 'chat',\n DATA_RECORD = 'data_record',\n MEMBER = 'member',\n ROUTINE = 'routine',\n WORKFLOW = 'workflow',\n CALENDAR = 'calendar',\n CALENDAR_EVENT_TYPE = 'calendar_event_type',\n JOURNEY = 'journey',\n CALL = 'call',\n}\n\nexport enum EventRuleEventType {\n TASK_EXECUTE = 'task:execute',\n MEMBER_JOINED = 'workspace:member_joined',\n MEMBER_LEFT = 'workspace:member_left',\n DATA_RECORD_CREATED = 'data_record:created',\n DATA_RECORD_UPDATED = 'data_record:updated',\n CHAT_CREATED = 'chat:created',\n CHAT_CALLBACK = 'chat:callback',\n MEMBER_UPDATED = 'member:updated',\n ROUTINE_TRIGGERED = 'routine:triggered',\n ASSISTANT_MESSAGE = 'workflow:assistant_message',\n USER_MESSAGE = 'workflow:user_message',\n CALENDAR_EVENT_CREATED = 'calendar_event:created',\n CALENDAR_EVENT_UPDATED = 'calendar_event:updated',\n CALENDAR_EVENT_CANCELLED = 'calendar_event:cancelled',\n CALENDAR_EVENT_STARTING = 'calendar_event:starting',\n CALENDAR_EVENT_ENDED = 'calendar_event:ended',\n CONNECTOR_EVENT = 'connector:event',\n ASSIGNMENT_CONCLUDED = 'assignment:concluded',\n JOURNEY_STEP_EXECUTE = 'journey_step:execute',\n JOURNEY_ENROLLED = 'journey:enrolled',\n JOURNEY_COMPLETED = 'journey:completed',\n CALL_STARTED = 'call:started',\n CALL_COMPLETED = 'call:completed',\n CALL_SUMMARY = 'call:summary',\n}\n\nexport enum EventRuleActionType {\n MEMBER_NOTIFY_ACTION = 'member:notify',\n MEMBER_LABEL_ACTION = 'member:label',\n MEMBER_UPSERT = 'member:upsert',\n SEND_WEBHOOK = 'webhook:send',\n SWITCH_TASK_ACTION = 'task:switch',\n ASSISTANT_MESSAGE = 'assistant:message',\n FORM_FIELD_UPDATE = 'form:update_field',\n MESSAGE_VALIDATION = 'message:validation',\n CHAT_CREATE = 'chat:create',\n CHAT_CONTINUE = 'chat:continue',\n CHAT_PAUSE = 'chat:pause',\n CHAT_SUMMARIZE = 'chat:summarize',\n EMAIL_SEND = 'email:send',\n INVOKE_CUSTOM_TOOL = 'custom_tool:invoke',\n MONDAY_UPSERT_ITEM = 'monday:upsert_item',\n MONDAY_REFRESH = 'monday:refresh',\n ASSIGNMENT_CONCLUDE = 'assignment:conclude',\n JOURNEY_ENROLL = 'journey:enroll',\n SMS_SEND = 'sms:send',\n WHATSAPP_SEND = 'whatsapp:send',\n PHONE_CALL = 'phone:call',\n CONNECTION_SYNC = 'connection:sync',\n CONNECTOR_OPERATION = 'connector:operation',\n ECW_REFRESH_MEMBER_ENCOUNTERS = 'ecw:refresh_member_encounters',\n PLAY_AUDIO = 'audio:play',\n}\n\nimport type {\n EventRuleActionType as GeneratedEventRuleActionType,\n EventRuleEventType as GeneratedEventRuleEventType,\n EventRuleObjectType as GeneratedEventRuleObjectType,\n} from './generated/event_rule';\n\n/** Fail compile if OpenAPI adds a value with no UPPER_SNAKE client enum member. */\ntype _AssertGeneratedEventTypesCovered = GeneratedEventRuleEventType extends `${EventRuleEventType}`\n ? true\n : never;\ntype _AssertGeneratedActionTypesCovered =\n GeneratedEventRuleActionType extends `${EventRuleActionType}` ? true : never;\ntype _AssertGeneratedObjectTypesCovered =\n GeneratedEventRuleObjectType extends `${EventRuleObjectType}` ? true : never;\n\nconst _eventRuleEnumDriftCheck: [\n _AssertGeneratedEventTypesCovered,\n _AssertGeneratedActionTypesCovered,\n _AssertGeneratedObjectTypesCovered,\n] = [true, true, true];\nvoid _eventRuleEnumDriftCheck;\n\n/** Narrow actionParams — OpenAPI types this as Record<string, unknown>. */\nexport function eventRuleActionParams<T>(params: Record<string, unknown> | null | undefined): T {\n return (params ?? {}) as T;\n}\n\n/** Re-bind enum fields to client enums (generated OpenAPI uses string-literal unions). */\nexport type EventRuleResponse = Omit<\n GeneratedEventRuleResponse,\n 'objectType' | 'eventType' | 'actionType' | 'actionParams' | 'triggerParams'\n> & {\n objectType: EventRuleObjectType;\n eventType: EventRuleEventType;\n actionType: EventRuleActionType;\n actionParams: Record<string, unknown> | null;\n triggerParams: Record<string, unknown> | null;\n};\n\nexport type EventRule = EventRuleResponse;\n\nexport type {\n MemberSummary,\n RoutineRunResponse,\n RoutineRunResponse as RoutineRun,\n SchedulePreviewResponse,\n} from './generated/routine';\n\nimport type {\n RoutineResponse as GeneratedRoutineResponse,\n RoutineRunResponse,\n} from './generated/routine';\n\n/** OpenAPI omits nested last run; list/detail endpoints include it when available. */\nexport type RoutineVisibility = 'private' | 'workspace';\nexport type RoutineScheduleMode = 'ONCE' | 'CRON' | 'INTERVAL';\n\nexport interface RoutineResponse extends Omit<\n GeneratedRoutineResponse,\n 'eventRules' | 'visibility' | 'scheduleMode' | 'webhookEnabled'\n> {\n visibility: RoutineVisibility;\n scheduleMode: RoutineScheduleMode;\n webhookEnabled: boolean;\n lastRun?: RoutineRunResponse;\n eventRules?: EventRuleResponse[];\n}\n\nexport type Routine = RoutineResponse;\n\nexport type {\n RuleExecutionResponse,\n RuleExecutionResponse as RuleExecution,\n WebhookLogResponse,\n WebhookLogResponse as WebhookLog,\n} from './generated/rule_execution';\n\n// ===== SECRET HANDLING =====\n\n/**\n * Sentinel value returned by the API when a secret field (like apiToken) is set.\n * The client should detect this value and show a \"secret is set\" state instead\n * of the actual value. When sending updates, if the user hasn't changed the\n * secret, either omit the field or don't include it in the request.\n */\nexport const MASKED_SECRET_SENTINEL = '__SECRET_SET__';\n\n// ===== EVENT RULE ACTION PARAMETERS =====\n\n// Re-export MemberNotifyActionParams for backward compatibility\nexport type { MemberNotifyActionParams };\n\nexport interface MemberLabelActionParams {\n addLabelIds?: string[];\n removeLabelIds?: string[];\n}\n\nexport type MemberUpsertBehavior = 'upsert' | 'create_only' | 'update_only';\n\nexport interface MemberUpsertActionParams {\n /** Controls create/update behavior: 'upsert' (default), 'create_only', or 'update_only' */\n behavior?: MemberUpsertBehavior;\n /** If true and member exists, skip instead of failing (only for create_only) */\n skipIfExists?: boolean;\n /** If true and member not found, skip instead of failing (only for update_only) */\n skipIfNotFound?: boolean;\n}\n\nexport interface WebhookActionParams {\n webhookUrl: string;\n signingSecret?: string;\n}\n\nexport interface SwitchTaskActionParams {\n taskUUID: string;\n}\n\nexport interface AssistantMessageActionParams {\n message: string;\n suggestions?: string[];\n // Translation support - maps locale to translated message/suggestions\n messageTranslations?: Record<string, string>;\n suggestionTranslations?: Record<string, string[]>;\n // Per-direction overrides (Phase 1). When set and non-empty, these win over\n // `message` for the matching direction; otherwise `message` is used as the\n // universal fallback.\n inboundMessage?: string;\n outboundMessage?: string;\n /**\n * When false, the injected assistant message does NOT end the agent\n * turn — the loop keeps running so a follow-up model response can be\n * generated after the canned filler. Default true preserves the\n * existing \"ends-the-turn\" semantics for every existing rule whose\n * JSON lacks the new key.\n */\n waitForResponse?: boolean;\n}\n\nexport interface FormFieldUpdateActionParams {\n fieldPath?: string; // Format: \"datatype.field\"\n value: any;\n updateType?: 'newest' | 'oldest' | 'create'; // For collection data types\n}\n\nexport interface MessageValidationActionParams {\n condition?: string; // CEL expression that determines if the message is invalid\n reason?: string; // Custom rejection reason\n}\n\nexport interface ChatCreateActionParams {\n workflowUUID?: string; // New workflow-based approach\n taskUUID?: string; // Legacy task-based approach (for backward compatibility)\n channel?: string; // Single channel: 'phone-sms' | 'phone-voice' | 'email' | 'web-chat'\n channels?: string[]; // Legacy array of channels (for backward compatibility)\n phoneNumberUUID?: string; // Required when phone-sms or phone-voice is selected\n inboxUUID?: string; // Required when email is selected\n initialUserMessage?: string; // Optional initial message to send from user\n}\n\nexport interface ChatContinueActionParams {\n assistantPrompt?: string; // Optional prompt to determine if continuation is needed (e.g., \"if the chat has not yet been continued\")\n updateType?: string; // Optional update type\n}\n\nexport interface ChatPauseActionParams {\n message?: string; // Optional assistant message to send when pausing the chat\n}\n\nexport interface ChatSummarizeActionParams {\n summarizationPrompt?: string; // Optional prompt to focus the summarization\n chatModel?: string; // Optional chat model to use for summarization\n}\n\nexport interface InvokeCustomToolActionParams {\n /** UUID of the custom tool to invoke (canonical identifier, issue #10893). */\n customToolUUID?: string;\n /** Legacy integer id of the custom tool. Kept for backward compat with pre-rename rules. */\n customToolId?: number;\n outputMode?: 'none' | 'tool_output' | 'assistant_message';\n}\n\nexport interface ConcludeAssignmentActionParams {\n // Completion outcomes: 'success' | 'failed' | 'referred'\n // Cancellation outcomes: 'caller_hangup' | 'member_unsubscribe' | 'admin_canceled'\n // | 'expired' | 'system_error' | 'busy' | 'no_answer'\n outcome: string;\n reason?: string; // Optional reason for conclusion\n}\n\nexport interface JourneyEnrollActionParams {\n /** UUID of the journey to enroll the member in. */\n journeyUUID: string;\n}\n\n/**\n * Parameters for the ``audio:play`` event-rule action.\n *\n * Plays a pre-recorded workspace audio file on the current voice call.\n * Composes with ``task:execute`` rules + CEL conditions on\n * ``call.answered_by`` to deliver guaranteed-delivery disclosure\n * recordings without the LLM in the loop. See the backend handler at\n * ``lib/rules/actions/builtin/play_audio.py``.\n */\nexport interface PlayAudioActionParams {\n /** UUID of the workspace File row to play. Required. */\n clipFileUuid: string;\n /**\n * When false, the clip plays end-to-end ignoring barge-in. Pair with\n * ``hangUpOnAudioEnd: true`` for compliance recordings that must not\n * be interrupted by speech. Defaults to true.\n */\n allowInterrupt?: boolean;\n /**\n * When true, the call hangs up immediately after the clip finishes\n * streaming — no further LLM turns. Defaults to false.\n */\n hangUpOnAudioEnd?: boolean;\n /**\n * Playback volume as a percent in [0, 100]. ``80`` is the unity\n * baseline — no gain adjustment is applied. Higher values boost,\n * lower values attenuate. Clipped at the int16 ceiling so a 100%\n * setting on already-hot source material won't introduce\n * distortion beyond the source's own. Defaults to 80.\n */\n volume?: number;\n}\n\nexport interface EmailSendActionParams {\n subjectTemplate?: string; // Email subject — required for one-off, optional for workflow-only; if provided with workflow, sent as initial message\n bodyTemplate?: string; // Email body — required for one-off, optional for workflow-only; if provided with workflow, sent as initial message\n inboxUUID: string; // UUID of the inbox to send from\n toEmail?: string; // Override recipient email (defaults to member's email); ignored when workflow is set\n contentType?: 'text' | 'html'; // Content type: 'text' for plain text, 'html' for HTML (default: 'text')\n workflowUUID?: string; // Start a conversation with this workflow after sending\n initialUserMessage?: string; // Initial message to send from user when starting conversation\n}\n\nexport interface SmsSendActionParams {\n phoneNumberUUID: string; // UUID of the phone number to send from\n messageTemplate?: string; // SMS body — required for one-off, optional for workflow-only; if provided with workflow, sent as initial message\n workflowUUID?: string; // Start a conversation with this workflow after sending\n initialUserMessage?: string; // Initial message to send from user when starting conversation\n}\n\nexport interface PhoneCallActionParams {\n phoneNumberUUID: string; // Required: UUID of the phone number to call from\n workflowUUID: string; // Required: UUID of the workflow to use for the call\n}\n\n/**\n * Parameters for the ecw:refresh_member_encounters action.\n * Refreshes the local eCW encounter cache for the target member before\n * later actions (such as phone:call) run in the same rule chain.\n */\nexport interface EcwRefreshMemberEncountersActionParams {\n /** ID of the eCW FHIR connection whose encounter cache should be refreshed. */\n connectionId: number;\n /** Days of encounter history to pull on this refresh. Defaults to 30. */\n lookbackDays?: number;\n /**\n * When true (default), a refresh failure raises a non-retryable action\n * error so later rules in the same chain do not run. Set to false only\n * when a time-critical outreach must proceed with stale cache on refresh\n * failure.\n */\n haltOnFailure?: boolean;\n}\n\n/**\n * Column mapping for Monday.com create item action.\n * Stores the column slug (e.g., 'text_abc123') and the user-friendly label\n * along with the Jinja template value.\n */\nexport interface MondayColumnMapping {\n columnId: string; // Monday.com column slug (e.g., 'text_abc123', 'status')\n columnTitle: string; // User-friendly column label (e.g., 'Description', 'Status')\n columnType: string; // Column type (e.g., 'text', 'status', 'date')\n template: string; // Jinja template string for the value\n}\n\n/**\n * Upsert mode for Monday.com item action.\n * Controls whether to create new items, update existing items, or both.\n */\nexport type MondayUpsertMode = 'create_only' | 'update_only' | 'upsert';\n\n/**\n * Lookup type for Monday.com item action.\n * Controls how to find existing items to update.\n */\nexport type MondayLookupType = 'column_value' | 'item_id';\n\n/**\n * Behavior when multiple items match the lookup criteria.\n */\nexport type MultiMatchBehavior = 'fail' | 'update_first' | 'update_all';\n\n/**\n * Parameters for upserting (create or update) a Monday.com item.\n * This is the primary action for Monday.com item operations.\n */\nexport interface MondayUpsertItemActionParams {\n boardId: string; // Monday.com board ID\n groupId?: string; // Optional: Group ID within the board (for new items)\n itemNameTemplate?: string; // Template for item name when creating (required for create modes)\n columnMappings?: MondayColumnMapping[]; // Column mappings with templates\n\n // Lookup configuration - used to find existing items to update\n lookupType?: MondayLookupType; // 'column_value' (default) or 'item_id'\n lookupColumnId?: string; // Column ID to search by (only for column_value lookup)\n lookupValueTemplate?: string; // Template for lookup value or Item ID\n\n // Upsert mode controls the action behavior\n upsertMode?: MondayUpsertMode; // 'create_only' | 'update_only' | 'upsert' (default: 'upsert')\n\n // Behavior flags\n multiMatchBehavior?: MultiMatchBehavior; // Behavior when multiple items match (default: 'fail')\n\n // OAuth token is copied from user's connection at rule creation time\n apiToken?: string; // Monday.com API token (auto-populated from OAuth, encrypted at rest)\n}\n\n/**\n * Column mapping for Monday.com refresh action.\n * Maps Monday.com columns to member or data fields.\n */\nexport interface MondayRefreshColumnMapping {\n columnId: string; // Monday.com column slug (e.g., 'text_abc123')\n columnType: string; // Column type (e.g., 'text', 'email', 'phone', 'status')\n}\n\n/**\n * Parameters for refreshing member data from Monday.com.\n * Fetches data from a Monday.com item and updates the local member record.\n */\nexport interface MondayRefreshActionParams {\n boardId: string; // Monday.com board ID containing the item\n itemIdSource?: string; // Template to get Monday item ID (default: '{{member.external_id}}')\n skipIfNoItemId?: boolean; // Skip if item ID cannot be determined (default: true)\n\n // Member field mappings: field_name -> {columnId, columnType}\n memberFieldMappings?: Record<string, MondayRefreshColumnMapping>;\n\n // Data field mappings for form data\n dataFieldMappings?: Record<string, any>;\n\n // OAuth token is copied from user's connection at rule creation time\n apiToken?: string; // Monday.com API token (auto-populated from OAuth, encrypted at rest)\n}\n\n// ===== CLIENT-ONLY FORM / INPUT TYPES =====\n\nexport interface EventRuleFormData {\n name?: string | null;\n uuid?: string; // Optional - if provided, will be used instead of auto-generated\n // can only set object type on create\n objectType: EventRuleObjectType;\n eventType: EventRuleEventType;\n conditions?: string | null;\n actionType: EventRuleActionType;\n actionParams?: Record<string, any>;\n triggerParams?: Record<string, any>;\n active?: boolean;\n taskId?: number | null;\n dataTypeId?: number | null;\n routineId?: number | null;\n workflowId?: number | null;\n calendarId?: number | null;\n calendarEventTypeId?: number | null;\n journeyStepId?: number | null;\n delay?: number; // Delay in seconds\n order?: number; // Order of execution\n}\n\nexport interface UpdateEventRuleFormData {\n // Only allow updating these fields after creation\n name?: string | null;\n conditions?: string | null;\n actionParams?: Record<string, any>;\n triggerParams?: Record<string, any>;\n active?: boolean;\n delay?: number; // Delay in seconds\n order?: number; // Order of execution\n // NOTE: objectType, eventType, actionType, and source object fields (taskId, etc.)\n // cannot be updated after creation\n}\n\n/**\n * Input type for batch event rule operations (create/update with parent object).\n * Used when syncing event rules as part of a task or workflow update.\n * UUID is required and used for matching existing rules.\n */\nexport interface EventRuleInput {\n uuid: string; // Required - used for matching/creating rules\n name?: string | null;\n objectType?: EventRuleObjectType; // Optional - inferred from parent object when used inline\n eventType: EventRuleEventType;\n actionType: EventRuleActionType;\n actionParams?: Record<string, any> | null;\n triggerParams?: Record<string, any> | null;\n conditions?: string | null;\n active?: boolean;\n delay?: number; // Delay in seconds (default 0)\n}\n\nexport interface WebhookLogsQueryParams {\n page?: number;\n pageSize?: number;\n sortBy?: WebhookLogSortField;\n sortOrder?: SortOrder;\n eventType?: EventRuleEventType;\n success?: boolean;\n}\n\nexport interface RuleExecutionsQueryParams {\n cursor?: string;\n pageSize?: number;\n sortBy?: RuleExecutionSortField;\n sortOrder?: SortOrder;\n ruleId?: number;\n status?: string;\n triggerType?: string;\n actionSlug?: string;\n objectType?: string;\n eventType?: string;\n actionType?: string;\n workflowId?: number;\n}\n\n// ===== ROUTINES (CLIENT-ONLY) =====\n\nexport type RoutineRunStatus =\n | 'PENDING'\n | 'IN_PROGRESS'\n | 'COMPLETED'\n | 'FAILED'\n | 'CANCELLED'\n | 'SKIPPED';\n\nexport interface CreateRoutineRequest {\n name: string;\n description?: string;\n scheduleEnabled?: boolean;\n scheduleMode?: 'ONCE' | 'CRON' | 'INTERVAL';\n scheduledTime?: string;\n intervalSeconds?: number;\n repeatCount?: number;\n cronString?: string;\n /** IANA timezone the cronString is interpreted in (e.g.\n * \"America/Los_Angeles\"). Omit to default to the workspace timezone,\n * else UTC. Only meaningful for CRON mode. */\n timezone?: string;\n startDate?: string;\n memberFilterId?: number | null;\n targetMemberId?: number | null;\n workflowId?: number | null;\n limit?: number;\n visibility?: 'private' | 'workspace';\n /** When true, the server generates a webhook secret and returns its\n * plaintext exactly once in the create response. */\n webhookEnabled?: boolean;\n /** Ordered event rules to attach in the same request. Server syncs by\n * UUID: same-UUID updates, new UUID creates, omitted UUIDs are deleted. */\n eventRules?: EventRuleInput[];\n}\n\nexport interface UpdateRoutineRequest {\n name?: string;\n description?: string;\n scheduleEnabled?: boolean;\n scheduleMode?: 'ONCE' | 'CRON' | 'INTERVAL';\n scheduledTime?: string;\n intervalSeconds?: number;\n repeatCount?: number;\n cronString?: string;\n /** IANA timezone the cronString is interpreted in. Pass empty string \"\"\n * to clear the override (revert to UTC). Omit to leave unchanged. */\n timezone?: string;\n /** ISO 8601 datetime string for deferred start. Pass empty string \"\" to clear the start date. */\n startDate?: string;\n memberFilterId?: number | null;\n targetMemberId?: number | null;\n workflowId?: number | null;\n limit?: number;\n visibility?: 'private' | 'workspace';\n /** Ordered event rules to attach. Server syncs by UUID: same-UUID rows\n * update, new UUIDs create, UUIDs missing from the list are deleted.\n * Omit the field to leave existing rules untouched. */\n eventRules?: EventRuleInput[];\n /** Toggle inbound webhook. Enabling without a stored secret generates one and surfaces plaintext in the response exactly once. */\n webhookEnabled?: boolean;\n /** Rotate the stored secret without toggling enabled. Ignored when webhookEnabled=false. */\n rotateWebhookSecret?: boolean;\n}\n\nexport interface RoutinesQueryParams {\n page?: number;\n pageSize?: number;\n sortBy?: RoutineSortField;\n sortOrder?: SortOrder;\n /**\n * 'mine' = routines I own, 'shared' = workspace-visible from others,\n * 'all' = both. 'all_including_private' = every routine in the\n * workspace; requires AUTOMATIONS_ADMIN and will 403 otherwise.\n */\n owner?: 'mine' | 'shared' | 'all' | 'all_including_private';\n}\n\nexport interface RoutineRunsQueryParams {\n page?: number;\n pageSize?: number;\n sortBy?: EventRunSortField;\n sortOrder?: SortOrder;\n routineId?: number;\n memberId?: number;\n status?: RoutineRunStatus;\n}\n\nexport interface SchedulePreviewRequest {\n cronString: string;\n count?: number;\n /** IANA timezone the cronString is interpreted in (default UTC) so the\n * previewed run times match what the dispatcher will fire. */\n timezone?: string;\n}\n\nexport interface TaskExportEventRuleRelation {\n taskUuid: string;\n eventRuleUuid: string;\n ruleType: string;\n}\n\nexport interface EventRuleExportItem {\n uuid: string;\n name: string;\n eventType: string;\n objectType: string;\n conditions: string | null;\n actionType: string;\n actionParams: Record<string, any>;\n}\n","import {\n Invitation,\n InvitationListResponse,\n InvitationStatus,\n ListInvitationsParams,\n UpdateInvitationFormData,\n} from '../types';\nimport { BaseApiClient } from './base';\n\nexport class WorkspaceInvitationsApi extends BaseApiClient {\n /**\n * List user's own invitations (both org and workspace).\n * For admin listing of a specific workspace's invitations, use listWorkspaceInvitationsAdmin.\n */\n async listWorkspaceInvitations(params?: ListInvitationsParams): Promise<InvitationListResponse> {\n const queryParams = new URLSearchParams();\n\n if (params?.status) queryParams.append('status', params.status);\n if (params?.page) queryParams.append('page', params.page.toString());\n if (params?.pageSize) queryParams.append('page_size', params.pageSize.toString());\n\n const queryString = queryParams.toString();\n const url = `invitations${queryString ? `?${queryString}` : ''}`;\n\n return this.fetch<InvitationListResponse>(url);\n }\n\n async getWorkspaceInvitation(requestId: number): Promise<Invitation> {\n return this.fetch<Invitation>(`invitations/${requestId}`);\n }\n\n async deleteWorkspaceInvitation(requestId: number): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(`invitations/${requestId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Request membership to a public workspace.\n * Creates a membership request that workspace admins can approve or deny.\n */\n async requestWorkspaceMembership(workspaceUuid: string, message?: string): Promise<Invitation> {\n return this.fetch<Invitation>(`invitations/workspaces/${workspaceUuid}/request-membership`, {\n method: 'POST',\n body: JSON.stringify({ message }),\n });\n }\n\n // ============================================\n // Workspace-scoped admin methods\n // These require the user to be a workspace member with admin permissions\n // ============================================\n\n /**\n * List invitations for a specific workspace (requires workspace admin permission).\n * Uses the workspace-scoped route: /api/v2/w/{workspaceUuid}/invitations\n */\n async listWorkspaceInvitationsAdmin(\n workspaceUuid: string,\n params?: {\n accountId?: number;\n status?: InvitationStatus;\n page?: number;\n pageSize?: number;\n }\n ): Promise<InvitationListResponse> {\n const queryParams = new URLSearchParams();\n if (params?.accountId) queryParams.append('accountId', params.accountId.toString());\n if (params?.status) queryParams.append('status', params.status);\n if (params?.page) queryParams.append('page', params.page.toString());\n if (params?.pageSize) queryParams.append('page_size', params.pageSize.toString());\n\n const queryString = queryParams.toString();\n const url = `w/${workspaceUuid}/invitations${queryString ? `?${queryString}` : ''}`;\n\n return this.fetch<InvitationListResponse>(url);\n }\n\n /**\n * Invite someone to a workspace (requires workspace admin permission).\n * Uses the workspace-scoped route: POST /api/v2/w/{workspaceUuid}/invitations\n */\n async inviteToWorkspace(\n workspaceUuid: string,\n emailOrAccountId: number | string,\n message?: string,\n memberRoleId?: number,\n name?: string\n ): Promise<Invitation> {\n const body: Record<string, unknown> = {\n message,\n memberRoleId,\n name,\n };\n\n // Check if it's an email (string) or accountId (number)\n if (typeof emailOrAccountId === 'string') {\n body.email = emailOrAccountId;\n } else {\n body.accountId = emailOrAccountId;\n }\n\n return this.fetch<Invitation>(`w/${workspaceUuid}/invitations`, {\n method: 'POST',\n body: JSON.stringify(body),\n });\n }\n\n /**\n * Update an invitation status (requires workspace admin permission).\n * Uses the workspace-scoped route: PUT /api/v2/w/{workspaceUuid}/invitations/{id}\n */\n async updateWorkspaceInvitationAdmin(\n workspaceUuid: string,\n invitationId: number,\n data: UpdateInvitationFormData\n ): Promise<Invitation> {\n return this.fetch<Invitation>(`w/${workspaceUuid}/invitations/${invitationId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /**\n * Delete an invitation (requires workspace admin permission).\n * Uses the workspace-scoped route: DELETE /api/v2/w/{workspaceUuid}/invitations/{id}\n */\n async deleteWorkspaceInvitationAdmin(\n workspaceUuid: string,\n invitationId: number\n ): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(`w/${workspaceUuid}/invitations/${invitationId}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Approve an invitation (grant access) - requires workspace admin permission.\n */\n async approveWorkspaceInvitation(\n workspaceUuid: string,\n invitationId: number\n ): Promise<Invitation> {\n return this.updateWorkspaceInvitationAdmin(workspaceUuid, invitationId, {\n status: InvitationStatus.GRANTED,\n });\n }\n\n /**\n * Deny an invitation - requires workspace admin permission.\n */\n async denyWorkspaceInvitation(workspaceUuid: string, invitationId: number): Promise<Invitation> {\n return this.updateWorkspaceInvitationAdmin(workspaceUuid, invitationId, {\n status: InvitationStatus.DENIED,\n });\n }\n\n /**\n * Block an invitation - requires workspace admin permission.\n */\n async blockWorkspaceInvitation(\n workspaceUuid: string,\n invitationId: number\n ): Promise<Invitation> {\n return this.updateWorkspaceInvitationAdmin(workspaceUuid, invitationId, {\n status: InvitationStatus.BLOCKED,\n });\n }\n\n /**\n * Accept an invitation by ID (for invitees accepting their own invitations)\n * Works for both organization and workspace invitations.\n */\n async acceptInvitation(requestId: number): Promise<Invitation> {\n return this.fetch<Invitation>(`invitations/${requestId}/accept`, {\n method: 'POST',\n });\n }\n\n /**\n * Decline an invitation by ID (for invitees declining their own invitations)\n * Works for both organization and workspace invitations.\n */\n async declineInvitation(requestId: number): Promise<Invitation> {\n return this.fetch<Invitation>(`invitations/${requestId}/decline`, {\n method: 'POST',\n });\n }\n}\n","import {\n UsageDashboardResponse,\n ClientWorkspace,\n FirstRunState,\n NoticesResponse,\n Notification,\n PaginatedResponse,\n Product,\n PublicWorkspace,\n ThemesListResponse,\n Workspace,\n WorkspaceCounts,\n WorkspaceDefaults,\n WorkspaceDefaultsFormData,\n WorkspaceFeatureInfo,\n WorkspaceFormData,\n} from '../types';\nimport {\n WorkspaceAutoMapEntities,\n WorkspaceCreateNewEntities,\n WorkspaceExportData,\n WorkspaceImportMapping,\n WorkspaceImportPreviewResponse,\n} from '../types_workspace_transfer';\nimport type { WorkspaceAvailableDomainsResponse } from '../types/organization-types';\nimport { BaseApiClient } from './base';\n\n/**\n * Workspace-grantable scope metadata.\n * These are scopes that can be assigned to member roles.\n */\nexport interface WorkspaceScope {\n name: string;\n category: string;\n description: string;\n implies: string[];\n dangerous: boolean;\n}\n\n/**\n * Response containing all workspace-grantable scopes.\n */\nexport interface WorkspaceScopesResponse {\n items: WorkspaceScope[];\n categories: string[];\n}\n\nexport class WorkspacesApi extends BaseApiClient {\n /** List all workspaces accessible to the current user. */\n async getWorkspaces(): Promise<Workspace[]> {\n return this.fetch<Workspace[]>('w/');\n }\n\n /** List all publicly visible workspaces. */\n async getPublicWorkspaces(): Promise<PublicWorkspace[]> {\n return this.fetch<PublicWorkspace[]>('w/public');\n }\n\n /** Get a single workspace by ID. */\n async getWorkspace(wid: string): Promise<Workspace> {\n return this.fetch<Workspace>(`w/${wid}`);\n }\n\n /** Create a new workspace. */\n async createWorkspace(workspace: WorkspaceFormData): Promise<Workspace> {\n return this.fetch<Workspace>('w/', {\n method: 'POST',\n body: JSON.stringify(workspace),\n });\n }\n\n /** Update an existing workspace. */\n async updateWorkspace(wid: string, workspace: Partial<WorkspaceFormData>): Promise<Workspace> {\n return this.fetch<Workspace>(`w/${wid}`, {\n method: 'PUT',\n body: JSON.stringify(workspace),\n });\n }\n\n /** Delete a workspace. */\n async deleteWorkspace(wid: string): Promise<void> {\n return this.fetch(`w/${wid}`, {\n method: 'DELETE',\n });\n }\n\n /** Leave a workspace as the current user. */\n async leaveWorkspace(wid: string): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(`w/${wid}/me`, {\n method: 'DELETE',\n });\n }\n\n /** Get the default settings for a workspace. */\n async getWorkspaceDefaults(wid: string): Promise<WorkspaceDefaults> {\n return this.fetch<WorkspaceDefaults>(`w/${wid}/defaults`);\n }\n\n /** Update the default settings for a workspace. */\n async updateWorkspaceDefaults(\n wid: string,\n defaults: WorkspaceDefaultsFormData\n ): Promise<WorkspaceDefaults> {\n return this.fetch<WorkspaceDefaults>(`w/${wid}/defaults`, {\n method: 'PUT',\n body: JSON.stringify(defaults),\n });\n }\n\n /** Get the full first-run onboarding state for a workspace. */\n async getFirstRunState(wid: string): Promise<FirstRunState> {\n return this.fetch<FirstRunState>(`w/${wid}/first-run-state`);\n }\n\n /** Update the first-run onboarding state for a workspace. */\n async updateFirstRunState(wid: string, state: FirstRunState): Promise<FirstRunState> {\n return this.fetch<FirstRunState>(`w/${wid}/first-run-state`, {\n method: 'PUT',\n body: JSON.stringify(state),\n });\n }\n\n /** Get entity counts (members, tasks, workflows, etc.) for a workspace. */\n async getWorkspaceCounts(wid: string): Promise<WorkspaceCounts> {\n return this.fetch<WorkspaceCounts>(`w/${wid}/counts`);\n }\n\n /** Check whether the workspace is currently within business hours. */\n async getBusinessHoursStatus(wid: string): Promise<{ isBusinessHours: boolean }> {\n return this.fetch<{ isBusinessHours: boolean }>(`w/${wid}/business-hours-status`);\n }\n\n /** List all available workspace feature flags from the registry. */\n async getAvailableWorkspaceFeatures(): Promise<WorkspaceFeatureInfo[]> {\n const result = await this.fetch<{ features: WorkspaceFeatureInfo[] }>(`features/registry`);\n return result.features;\n }\n\n /** Get active notices for a workspace. */\n async getWorkspaceNotices(wid: string): Promise<NoticesResponse> {\n return this.fetch<NoticesResponse>(`w/${wid}/notices`);\n }\n\n /** List notifications for the current user in a workspace. */\n async getNotifications(\n wid: string,\n options: {\n page?: number;\n pageSize?: number;\n } = {}\n ): Promise<PaginatedResponse<Notification>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n\n const queryString = params.toString();\n const url = `w/${wid}/notifications${queryString ? `?${queryString}` : ''}`;\n\n return this.fetch<PaginatedResponse<Notification>>(url);\n }\n\n /** Get a single notification by ID. */\n async getNotification(wid: string, id: number): Promise<Notification> {\n return this.fetch<Notification>(`w/${wid}/notifications/${id}`);\n }\n\n /** Get the count of unread notifications for the current user. */\n async getUnreadNotificationCount(wid: string): Promise<number> {\n return this.fetch<number>(`w/${wid}/notifications/unread-count`);\n }\n\n /** Mark a notification as read. */\n async markNotificationAsRead(wid: string, id: number): Promise<Notification> {\n return this.fetch<Notification>(`w/${wid}/notifications/${id}/read`, {\n method: 'POST',\n });\n }\n\n /** Dismiss a single notification. */\n async dismissNotification(wid: string, id: number): Promise<Notification> {\n return this.fetch<Notification>(`w/${wid}/notifications/${id}/dismiss`, {\n method: 'POST',\n });\n }\n\n /** Dismiss all notifications for the current user in a workspace. */\n async dismissAllNotifications(wid: string): Promise<{ dismissedCount: number }> {\n return this.fetch<{ dismissedCount: number }>(`w/${wid}/notifications/dismiss-all`, {\n method: 'POST',\n });\n }\n\n // ===== Push Notifications =====\n\n /** Get the VAPID public key for Web Push subscription registration. */\n async getVapidPublicKey(): Promise<string | null> {\n const response = await this.fetch<{ publicKey: string | null }>('push/vapid-public-key');\n return response.publicKey;\n }\n\n /** Register a Web Push subscription for the current user. */\n async registerPushSubscription(\n wid: string,\n subscription: { endpoint: string; p256dhKey: string; authKey: string; userAgent?: string }\n ): Promise<{ id: number; endpoint: string; createdAt: string }> {\n return this.fetch<{ id: number; endpoint: string; createdAt: string }>(\n `w/${wid}/push-subscriptions`,\n {\n method: 'POST',\n body: JSON.stringify(subscription),\n }\n );\n }\n\n /** Unregister a Web Push subscription by endpoint URL. */\n async unregisterPushSubscription(wid: string, endpoint: string): Promise<{ deleted: boolean }> {\n return this.fetch<{ deleted: boolean }>(\n `w/${wid}/push-subscriptions?endpoint=${encodeURIComponent(endpoint)}`,\n {\n method: 'DELETE',\n }\n );\n }\n\n /** List all active Web Push subscriptions for the current user. */\n async listPushSubscriptions(\n wid: string\n ): Promise<{ id: number; endpoint: string; createdAt: string; userAgent: string | null }[]> {\n return this.fetch<\n { id: number; endpoint: string; createdAt: string; userAgent: string | null }[]\n >(`w/${wid}/push-subscriptions`);\n }\n\n /** List org domains available for workspace email inbox routing. */\n async getWorkspaceEmailDomains(wid: string): Promise<WorkspaceAvailableDomainsResponse> {\n return this.fetch<WorkspaceAvailableDomainsResponse>(`w/${wid}/domains/for-email`);\n }\n\n /** List org domains available for workspace custom site routing. */\n async getWorkspaceSiteDomains(wid: string): Promise<WorkspaceAvailableDomainsResponse> {\n return this.fetch<WorkspaceAvailableDomainsResponse>(`w/${wid}/domains/for-site`);\n }\n\n /** List client workspaces managed by this reseller workspace, paginated. */\n async getResellerWorkspaces(\n wid: string,\n params?: { page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<ClientWorkspace>> {\n const query = new URLSearchParams();\n if (params?.page !== undefined) query.set('page', String(params.page));\n if (params?.pageSize !== undefined) query.set('pageSize', String(params.pageSize));\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<ClientWorkspace>>(`w/${wid}/reseller/workspaces${qs}`);\n }\n\n /** Create a new client workspace under a reseller workspace. */\n async createClientWorkspace(\n wid: string,\n data: { name: string; slug?: string }\n ): Promise<ClientWorkspace> {\n return this.fetch<ClientWorkspace>(`w/${wid}/reseller/workspaces`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Get a single client workspace by ID. */\n async getClientWorkspace(wid: string, workspaceId: number): Promise<ClientWorkspace> {\n return this.fetch<ClientWorkspace>(`w/${wid}/reseller/workspaces/${workspaceId}`);\n }\n\n /** Update a client workspace's name or slug. */\n async updateClientWorkspace(\n wid: string,\n workspaceId: number,\n data: { name?: string; slug?: string }\n ): Promise<ClientWorkspace> {\n return this.fetch<ClientWorkspace>(`w/${wid}/reseller/workspaces/${workspaceId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n /** Delete a client workspace. */\n async deleteClientWorkspace(wid: string, workspaceId: number): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(`w/${wid}/reseller/workspaces/${workspaceId}`, {\n method: 'DELETE',\n });\n }\n\n /** Provision a client workspace, setting up its database and resources. */\n async provisionClientWorkspace(\n wid: string,\n workspaceId: number\n ): Promise<{ message: string; status: string }> {\n return this.fetch<{ message: string; status: string }>(\n `w/${wid}/reseller/workspaces/${workspaceId}/provision`,\n {\n method: 'POST',\n }\n );\n }\n\n /** List products available from a reseller workspace, optionally filtering by featured status. */\n async getProducts(wid: string, featured?: boolean): Promise<Product[]> {\n const params = featured !== undefined ? `?featured=${featured}` : '';\n return this.fetch<Product[]>(`w/${wid}/reseller/products${params}`);\n }\n\n /** Get a product by ID using the global endpoint. */\n async getProduct(id: number): Promise<Product> {\n // Use global endpoint - access control is handled server-side based on\n // public flag, superuser status, or subscription membership\n return this.fetch<Product>(`products/${id}`);\n }\n\n /** Get a product from a reseller workspace. Requires workspace admin scope. */\n async getWorkspaceProduct(wid: string, id: number): Promise<Product> {\n return this.fetch<Product>(`w/${wid}/reseller/products/${id}`);\n }\n\n /** List public products for a workspace's storefront. No auth required. */\n async getPublicProducts(workspaceUuid: string, featured?: boolean): Promise<Product[]> {\n const params = new URLSearchParams({ workspace_uuid: workspaceUuid });\n if (featured !== undefined) params.set('featured', String(featured));\n return this.fetch<Product[]>(`products?${params.toString()}`);\n }\n\n /** Get a publicly accessible product by ID. */\n async getPublicProduct(id: number): Promise<Product> {\n return this.fetch<Product>(`products/${id}`);\n }\n\n /** Create a new product for a reseller workspace. */\n async createProduct(wid: string, product: any): Promise<Product> {\n return this.fetch<Product>(`w/${wid}/reseller/products`, {\n method: 'POST',\n body: JSON.stringify(product),\n });\n }\n\n /** Update an existing product. */\n async updateProduct(wid: string, id: number, updates: any): Promise<Product> {\n return this.fetch<Product>(`w/${wid}/reseller/products/${id}`, {\n method: 'PUT',\n body: JSON.stringify(updates),\n });\n }\n\n /** Delete a product from a reseller workspace. */\n async deleteProduct(wid: string, id: number): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(`w/${wid}/reseller/products/${id}`, {\n method: 'DELETE',\n });\n }\n\n // Workspace Export/Import API\n\n /** Export workspace configuration, optionally scoped to a single workflow or workflows-only.\n * @param workflowId - Export a single workflow by ID\n * @param scope - Export scope (\"workflows\" for all workflows only). Cannot be combined with workflowId.\n * @param exclude - Comma-separated entity categories to exclude (e.g. \"channels\")\n */\n async exportWorkspace(\n wid: string,\n workflowId?: number,\n scope?: 'workflows',\n exclude?: string\n ): Promise<WorkspaceExportData> {\n const searchParams = new URLSearchParams();\n if (workflowId !== undefined) searchParams.set('workflow_id', String(workflowId));\n if (scope !== undefined) searchParams.set('scope', scope);\n if (exclude !== undefined) searchParams.set('exclude', exclude);\n const qs = searchParams.toString();\n return this.fetch<WorkspaceExportData>(`w/${wid}/export${qs ? `?${qs}` : ''}`);\n }\n\n /** Preview the result of importing workspace configuration without applying changes. */\n async previewWorkspaceImport(\n wid: string,\n exportData: WorkspaceExportData,\n importMappings: WorkspaceImportMapping,\n createNew: WorkspaceCreateNewEntities,\n autoMap?: WorkspaceAutoMapEntities\n ): Promise<WorkspaceImportPreviewResponse> {\n return this.fetch<WorkspaceImportPreviewResponse>(`w/${wid}/preview-import`, {\n method: 'POST',\n body: JSON.stringify({\n exportData,\n importMappings,\n createNew,\n autoMap,\n }),\n });\n }\n\n /** Import workspace configuration from exported data. */\n async importWorkspace(\n wid: string,\n exportData: WorkspaceExportData,\n importMappings: WorkspaceImportMapping,\n createNew: WorkspaceCreateNewEntities\n ): Promise<WorkspaceImportPreviewResponse> {\n return this.fetch<WorkspaceImportPreviewResponse>(`w/${wid}/import`, {\n method: 'POST',\n body: JSON.stringify({\n exportData,\n importMappings,\n createNew,\n }),\n });\n }\n\n /** Preview a workspace import using the legacy untyped interface. */\n // Legacy method for backward compatibility\n async previewImportWorkspace(\n wid: string,\n exportData: any,\n importMappings: any = {},\n createNew: any = {}\n ): Promise<any> {\n return this.fetch<any>(`w/${wid}/preview-import`, {\n method: 'POST',\n body: JSON.stringify({\n exportData,\n importMappings,\n createNew,\n }),\n });\n }\n\n /** List available themes for a workspace. */\n async getWorkspaceThemes(wid: string): Promise<ThemesListResponse> {\n return this.fetch<ThemesListResponse>(`w/${wid}/themes`);\n }\n\n /** Update the active themes for a workspace. */\n async updateWorkspaceThemes(wid: string, themes: string[]): Promise<Workspace> {\n return this.fetch<Workspace>(`w/${wid}/themes`, {\n method: 'PUT',\n body: JSON.stringify({ themes }),\n });\n }\n\n /**\n * Get all workspace-grantable scopes that can be assigned to member roles.\n *\n * Returns the full metadata for all scopes including name, category,\n * description, implied scopes, and whether it's a dangerous scope.\n *\n * Note: This does NOT include organization-level scopes (org:read, org:write, org:admin).\n * Org-level permissions come from OrgMember roles, not workspace member roles.\n */\n async getWorkspaceScopes(): Promise<WorkspaceScopesResponse> {\n return this.fetch<WorkspaceScopesResponse>('w/scopes');\n }\n\n /**\n * Get billing dashboard data for a workspace.\n *\n * This endpoint is available to organization owners (with org:billing scope).\n * Superusers should use the admin endpoint via getWorkspaceUsageDashboard.\n *\n * Returns comprehensive billing information including:\n * - Subscription status and plan details\n * - Current period usage metrics\n * - Overage configurations and amounts\n * - Budget tracking status\n */\n async getUsageDashboard(wid: string): Promise<UsageDashboardResponse> {\n return this.fetch<UsageDashboardResponse>(`w/${wid}/usage/dashboard`);\n }\n}\n","import { BaseApiClient } from './base';\nimport {\n TeamsApp,\n TeamsAppInstallation,\n TeamsAccount,\n CreateTeamsAppRequest,\n UpdateTeamsAppRequest,\n TeamsConversation,\n PaginatedResponse,\n TeamsAppSortField,\n SortOrder,\n} from '../types';\n\nexport class TeamsAppsApi extends BaseApiClient {\n /**\n * List all Teams apps configured for a workspace.\n */\n async getTeamsApps(\n wid: string,\n options: {\n page?: number;\n pageSize?: number;\n sortBy?: TeamsAppSortField;\n sortOrder?: SortOrder;\n search?: string;\n } = {}\n ): Promise<PaginatedResponse<TeamsApp>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.search) params.append('search', options.search);\n\n return this.fetch<PaginatedResponse<TeamsApp>>(\n `w/${wid}/app-connections/teams/apps${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n async getTeamsApp(wid: string, appId: number): Promise<TeamsApp> {\n return this.fetch<TeamsApp>(`w/${wid}/app-connections/teams/apps/${appId}`);\n }\n\n async createTeamsApp(wid: string, data: CreateTeamsAppRequest): Promise<TeamsApp> {\n return this.fetch<TeamsApp>(`w/${wid}/app-connections/teams/apps`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updateTeamsApp(\n wid: string,\n appId: number,\n data: UpdateTeamsAppRequest\n ): Promise<TeamsApp> {\n return this.fetch<TeamsApp>(`w/${wid}/app-connections/teams/apps/${appId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n async deleteTeamsApp(wid: string, appId: number): Promise<void> {\n return this.fetch(`w/${wid}/app-connections/teams/apps/${appId}`, {\n method: 'DELETE',\n });\n }\n\n async getTeamsConversations(\n wid: string,\n appId: number,\n options: { page?: number; pageSize?: number } = {}\n ): Promise<PaginatedResponse<TeamsConversation>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<PaginatedResponse<TeamsConversation>>(\n `w/${wid}/app-connections/teams/apps/${appId}/conversations${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n async getTeamsInstallations(\n wid: string,\n appId: number,\n options: { page?: number; pageSize?: number } = {}\n ): Promise<PaginatedResponse<TeamsAppInstallation>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<PaginatedResponse<TeamsAppInstallation>>(\n `w/${wid}/app-connections/teams/apps/${appId}/installations${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n async getTeamsAppAccounts(\n wid: string,\n appId: number,\n options: { page?: number; pageSize?: number } = {}\n ): Promise<PaginatedResponse<TeamsAccount>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n\n return this.fetch<PaginatedResponse<TeamsAccount>>(\n `w/${wid}/app-connections/teams/apps/${appId}/accounts${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n}\n","import { BaseApiClient } from './base';\nimport type {\n Experiment,\n ExperimentFormData,\n ExperimentGroup,\n ExperimentGroupFormData,\n ExperimentGroupUpdateData,\n ExperimentStats,\n ExperimentUpdateData,\n MemberExperimentAssignment,\n PaginatedResponse,\n} from '../types';\n\nexport class ExperimentsApi extends BaseApiClient {\n /** List experiments with group summaries and assignment counts. */\n async getExperiments(\n wid: string,\n params?: {\n page?: number;\n pageSize?: number;\n includeArchived?: boolean;\n }\n ): Promise<PaginatedResponse<Experiment>> {\n const query = new URLSearchParams();\n if (params?.page !== undefined) query.set('page', String(params.page));\n if (params?.pageSize !== undefined) query.set('pageSize', String(params.pageSize));\n if (params?.includeArchived) query.set('includeArchived', 'true');\n const qs = query.toString() ? `?${query.toString()}` : '';\n return this.fetch<PaginatedResponse<Experiment>>(`w/${wid}/experiments${qs}`);\n }\n\n /** Get a single experiment by ID (includes groups). */\n async getExperiment(wid: string, experimentId: number): Promise<Experiment> {\n return this.fetch<Experiment>(`w/${wid}/experiments/${experimentId}`);\n }\n\n /** Create a draft experiment. */\n async createExperiment(wid: string, data: ExperimentFormData): Promise<Experiment> {\n return this.fetch<Experiment>(`w/${wid}/experiments`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update experiment metadata or lifecycle status. */\n async updateExperiment(\n wid: string,\n experimentId: number,\n data: ExperimentUpdateData\n ): Promise<Experiment> {\n return this.fetch<Experiment>(`w/${wid}/experiments/${experimentId}`, {\n method: 'PATCH',\n body: JSON.stringify(data),\n });\n }\n\n /** Hard-delete a draft experiment, or archive otherwise. */\n async deleteExperiment(wid: string, experimentId: number): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(`w/${wid}/experiments/${experimentId}`, {\n method: 'DELETE',\n });\n }\n\n /** Create a group within an experiment. */\n async createExperimentGroup(\n wid: string,\n experimentId: number,\n data: ExperimentGroupFormData\n ): Promise<ExperimentGroup> {\n return this.fetch<ExperimentGroup>(`w/${wid}/experiments/${experimentId}/groups`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n /** Update a group within an experiment. */\n async updateExperimentGroup(\n wid: string,\n experimentId: number,\n groupId: number,\n data: ExperimentGroupUpdateData\n ): Promise<ExperimentGroup> {\n return this.fetch<ExperimentGroup>(`w/${wid}/experiments/${experimentId}/groups/${groupId}`, {\n method: 'PATCH',\n body: JSON.stringify(data),\n });\n }\n\n /** Delete a group that has no member assignments. */\n async deleteExperimentGroup(\n wid: string,\n experimentId: number,\n groupId: number\n ): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(\n `w/${wid}/experiments/${experimentId}/groups/${groupId}`,\n { method: 'DELETE' }\n );\n }\n\n /** Aggregate assignment and exposure counts by group. */\n async getExperimentStats(wid: string, experimentId: number): Promise<ExperimentStats> {\n return this.fetch<ExperimentStats>(`w/${wid}/experiments/${experimentId}/stats`);\n }\n\n /** List experiment assignments for a member (member profile panel). */\n async getMemberExperiments(\n wid: string,\n memberId: number\n ): Promise<MemberExperimentAssignment[]> {\n return this.fetch<MemberExperimentAssignment[]>(`w/${wid}/members/${memberId}/experiments`);\n }\n\n /** Manually assign a member to an experiment (optional group, or weighted random). */\n async createExperimentAssignment(\n wid: string,\n experimentId: number,\n data: { memberId: number; groupId?: number | null }\n ): Promise<MemberExperimentAssignment> {\n return this.fetch<MemberExperimentAssignment>(\n `w/${wid}/experiments/${experimentId}/assignments`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n\n /** Move an assigned member to a different experiment group. */\n async updateExperimentAssignment(\n wid: string,\n experimentId: number,\n memberId: number,\n data: { groupId: number }\n ): Promise<MemberExperimentAssignment> {\n return this.fetch<MemberExperimentAssignment>(\n `w/${wid}/experiments/${experimentId}/assignments/${memberId}`,\n {\n method: 'PATCH',\n body: JSON.stringify(data),\n }\n );\n }\n\n /** Remove a member's assignment from an experiment. */\n async deleteExperimentAssignment(\n wid: string,\n experimentId: number,\n memberId: number\n ): Promise<{ status: string }> {\n return this.fetch<{ status: string }>(\n `w/${wid}/experiments/${experimentId}/assignments/${memberId}`,\n { method: 'DELETE' }\n );\n }\n}\n","import {\n AbilitiesApi,\n AccessGrantsApi,\n AgentTasksApi,\n AgentsApi,\n AIModelsApi,\n ApiKeysApi,\n AppsApi,\n AssignmentsApi,\n AuthApi,\n BuildersApi,\n CalendarsApi,\n CallsApi,\n CELApi,\n ChatsApi,\n ConfluenceApi,\n ConnectionSyncApi,\n CustomToolkitsApi,\n DataTypesApi,\n DiscordBotsApi,\n SlackAppsApi,\n TeamsAppsApi,\n EventsApi,\n ExperimentsApi,\n FeaturesApi,\n FhirConnectionsApi,\n HealthieApi,\n HubspotApi,\n FilesApi,\n InboxesApi,\n InquiriesApi,\n JourneysApi,\n AppConnectionsApi,\n McpServersApi,\n MembersApi,\n MilestonesApi,\n MondayIntegrationApi,\n NotificationRulesApi,\n OAuthApi,\n OperatorApi,\n OrgApi,\n OAuthConnectionsApi,\n PhoneNumbersApi,\n PronunciationsApi,\n PersonasApi,\n QualificationsApi,\n ReportsApi,\n SalesforceApi,\n SitesApi,\n SubscriptionsApi,\n SupportRequestsApi,\n SupervisorsApi,\n TasksApi,\n TemplatesApi,\n ToolkitsApi,\n WorkflowsApi,\n WorkspaceInvitationsApi,\n CustomersApi,\n ResellersApi,\n VoiceApi,\n WorkspacesApi,\n} from '../api';\nimport { PromptsApi } from '../api/prompts';\nimport { WorkflowNotesApi } from '../api/workflow-notes';\n\nexport interface ApiModules {\n abilities: AbilitiesApi;\n accessGrants: AccessGrantsApi;\n agentTasks: AgentTasksApi;\n agents: AgentsApi;\n aiModels: AIModelsApi;\n apiKeys: ApiKeysApi;\n apps: AppsApi;\n assignments: AssignmentsApi;\n auth: AuthApi;\n builders: BuildersApi;\n calendars: CalendarsApi;\n calls: CallsApi;\n cel: CELApi;\n chats: ChatsApi;\n confluence: ConfluenceApi;\n customers: CustomersApi;\n resellers: ResellersApi;\n customToolkits: CustomToolkitsApi;\n dataTypes: DataTypesApi;\n discordBots: DiscordBotsApi;\n slackApps: SlackAppsApi;\n teamsApps: TeamsAppsApi;\n events: EventsApi;\n experiments: ExperimentsApi;\n fhirConnections: FhirConnectionsApi;\n healthie: HealthieApi;\n hubspot: HubspotApi;\n features: FeaturesApi;\n files: FilesApi;\n inboxes: InboxesApi;\n inquiries: InquiriesApi;\n journeys: JourneysApi;\n appConnections: AppConnectionsApi;\n connectionSync: ConnectionSyncApi;\n mcpServers: McpServersApi;\n members: MembersApi;\n milestones: MilestonesApi;\n mondayIntegration: MondayIntegrationApi;\n notificationRules: NotificationRulesApi;\n oauth: OAuthApi;\n operatorGroups: OperatorApi;\n org: OrgApi;\n oauthConnections: OAuthConnectionsApi;\n phoneNumbers: PhoneNumbersApi;\n pronunciations: PronunciationsApi;\n qualifications: QualificationsApi;\n personas: PersonasApi;\n reports: ReportsApi;\n salesforce: SalesforceApi;\n sites: SitesApi;\n subscriptions: SubscriptionsApi;\n supportRequests: SupportRequestsApi;\n supervisors: SupervisorsApi;\n tasks: TasksApi;\n templates: TemplatesApi;\n toolkits: ToolkitsApi;\n workflows: WorkflowsApi;\n workflowNotes: WorkflowNotesApi;\n workspaceInvitations: WorkspaceInvitationsApi;\n prompts: PromptsApi;\n voice: VoiceApi;\n workspaces: WorkspacesApi;\n}\n\nexport function createApiModules(\n apiKey: string | undefined,\n baseUrl: string,\n customFetch?: typeof fetch\n): ApiModules {\n return {\n abilities: new AbilitiesApi(apiKey, baseUrl, customFetch),\n accessGrants: new AccessGrantsApi(apiKey, baseUrl, customFetch),\n agentTasks: new AgentTasksApi(apiKey, baseUrl, customFetch),\n agents: new AgentsApi(apiKey, baseUrl, customFetch),\n aiModels: new AIModelsApi(apiKey, baseUrl, customFetch),\n apiKeys: new ApiKeysApi(apiKey, baseUrl, customFetch),\n apps: new AppsApi(apiKey, baseUrl, customFetch),\n assignments: new AssignmentsApi(apiKey, baseUrl, customFetch),\n auth: new AuthApi(apiKey, baseUrl, customFetch),\n builders: new BuildersApi(apiKey, baseUrl, customFetch),\n calendars: new CalendarsApi(apiKey, baseUrl, customFetch),\n calls: new CallsApi(apiKey, baseUrl, customFetch),\n cel: new CELApi(apiKey, baseUrl, customFetch),\n chats: new ChatsApi(apiKey, baseUrl, customFetch),\n customers: new CustomersApi(apiKey, baseUrl, customFetch),\n resellers: new ResellersApi(apiKey, baseUrl, customFetch),\n customToolkits: new CustomToolkitsApi(apiKey, baseUrl, customFetch),\n dataTypes: new DataTypesApi(apiKey, baseUrl, customFetch),\n discordBots: new DiscordBotsApi(apiKey, baseUrl, customFetch),\n slackApps: new SlackAppsApi(apiKey, baseUrl, customFetch),\n teamsApps: new TeamsAppsApi(apiKey, baseUrl, customFetch),\n events: new EventsApi(apiKey, baseUrl, customFetch),\n experiments: new ExperimentsApi(apiKey, baseUrl, customFetch),\n fhirConnections: new FhirConnectionsApi(apiKey, baseUrl, customFetch),\n healthie: new HealthieApi(apiKey, baseUrl, customFetch),\n hubspot: new HubspotApi(apiKey, baseUrl, customFetch),\n features: new FeaturesApi(apiKey, baseUrl, customFetch),\n files: new FilesApi(apiKey, baseUrl, customFetch),\n inboxes: new InboxesApi(apiKey, baseUrl, customFetch),\n inquiries: new InquiriesApi(apiKey, baseUrl, customFetch),\n journeys: new JourneysApi(apiKey, baseUrl, customFetch),\n appConnections: new AppConnectionsApi(apiKey, baseUrl, customFetch),\n connectionSync: new ConnectionSyncApi(apiKey, baseUrl, customFetch),\n mcpServers: new McpServersApi(apiKey, baseUrl, customFetch),\n members: new MembersApi(apiKey, baseUrl, customFetch),\n milestones: new MilestonesApi(apiKey, baseUrl, customFetch),\n confluence: new ConfluenceApi(apiKey, baseUrl, customFetch),\n mondayIntegration: new MondayIntegrationApi(apiKey, baseUrl, customFetch),\n notificationRules: new NotificationRulesApi(apiKey, baseUrl, customFetch),\n oauth: new OAuthApi(apiKey, baseUrl, customFetch),\n operatorGroups: new OperatorApi(apiKey, baseUrl, customFetch),\n org: new OrgApi(apiKey, baseUrl, customFetch),\n oauthConnections: new OAuthConnectionsApi(apiKey, baseUrl, customFetch),\n phoneNumbers: new PhoneNumbersApi(apiKey, baseUrl, customFetch),\n pronunciations: new PronunciationsApi(apiKey, baseUrl, customFetch),\n qualifications: new QualificationsApi(apiKey, baseUrl, customFetch),\n personas: new PersonasApi(apiKey, baseUrl, customFetch),\n reports: new ReportsApi(apiKey, baseUrl, customFetch),\n salesforce: new SalesforceApi(apiKey, baseUrl, customFetch),\n sites: new SitesApi(apiKey, baseUrl, customFetch),\n subscriptions: new SubscriptionsApi(apiKey, baseUrl, customFetch),\n supportRequests: new SupportRequestsApi(apiKey, baseUrl, customFetch),\n supervisors: new SupervisorsApi(apiKey, baseUrl, customFetch),\n tasks: new TasksApi(apiKey, baseUrl, customFetch),\n templates: new TemplatesApi(apiKey, baseUrl, customFetch),\n toolkits: new ToolkitsApi(apiKey, baseUrl, customFetch),\n workflows: new WorkflowsApi(apiKey, baseUrl, customFetch),\n workflowNotes: new WorkflowNotesApi(apiKey, baseUrl, customFetch),\n workspaceInvitations: new WorkspaceInvitationsApi(apiKey, baseUrl, customFetch),\n prompts: new PromptsApi(apiKey, baseUrl, customFetch),\n voice: new VoiceApi(apiKey, baseUrl, customFetch),\n workspaces: new WorkspacesApi(apiKey, baseUrl, customFetch),\n };\n}\n","import { AccessGrantsApi } from '../../api';\n\nexport interface AccessGrantsBindings {\n getMyReceivedGrants: AccessGrantsApi['getMyReceivedGrants'];\n getMyGivenGrants: AccessGrantsApi['getMyGivenGrants'];\n getAccessGrant: AccessGrantsApi['getAccessGrant'];\n createAccessGrant: AccessGrantsApi['createAccessGrant'];\n resolveAccessGrant: AccessGrantsApi['resolveAccessGrant'];\n revokeAccessGrant: AccessGrantsApi['revokeAccessGrant'];\n getAccessGrants: AccessGrantsApi['getAccessGrants'];\n getMemberGrants: AccessGrantsApi['getMemberGrants'];\n}\n\nexport function bindAccessGrantsMethods(\n target: AccessGrantsBindings,\n accessGrants: AccessGrantsApi\n): void {\n target.getMyReceivedGrants = accessGrants.getMyReceivedGrants.bind(accessGrants);\n target.getMyGivenGrants = accessGrants.getMyGivenGrants.bind(accessGrants);\n target.getAccessGrant = accessGrants.getAccessGrant.bind(accessGrants);\n target.createAccessGrant = accessGrants.createAccessGrant.bind(accessGrants);\n target.resolveAccessGrant = accessGrants.resolveAccessGrant.bind(accessGrants);\n target.revokeAccessGrant = accessGrants.revokeAccessGrant.bind(accessGrants);\n target.getAccessGrants = accessGrants.getAccessGrants.bind(accessGrants);\n target.getMemberGrants = accessGrants.getMemberGrants.bind(accessGrants);\n}\n","import { AgentTasksApi } from '../../api/agent-tasks';\n\nexport interface AgentTasksBindings {\n getAgentTasks: AgentTasksApi['getAgentTasks'];\n getAgentTask: AgentTasksApi['getAgentTask'];\n cancelAgentTask: AgentTasksApi['cancelAgentTask'];\n getAgentTaskMessages: AgentTasksApi['getAgentTaskMessages'];\n}\n\nexport function bindAgentTasksMethods(target: AgentTasksBindings, api: AgentTasksApi): void {\n target.getAgentTasks = api.getAgentTasks.bind(api);\n target.getAgentTask = api.getAgentTask.bind(api);\n target.cancelAgentTask = api.cancelAgentTask.bind(api);\n target.getAgentTaskMessages = api.getAgentTaskMessages.bind(api);\n}\n","import { AgentsApi } from '../../api';\n\nexport interface AgentsBindings {\n getAgents: AgentsApi['getAgents'];\n getAgent: AgentsApi['getAgent'];\n createAgent: AgentsApi['createAgent'];\n updateAgent: AgentsApi['updateAgent'];\n deleteAgent: AgentsApi['deleteAgent'];\n archiveAgent: AgentsApi['archiveAgent'];\n unarchiveAgent: AgentsApi['unarchiveAgent'];\n}\n\nexport function bindAgentsMethods(target: AgentsBindings, agents: AgentsApi): void {\n target.getAgents = agents.getAgents.bind(agents);\n target.getAgent = agents.getAgent.bind(agents);\n target.createAgent = agents.createAgent.bind(agents);\n target.updateAgent = agents.updateAgent.bind(agents);\n target.deleteAgent = agents.deleteAgent.bind(agents);\n target.archiveAgent = agents.archiveAgent.bind(agents);\n target.unarchiveAgent = agents.unarchiveAgent.bind(agents);\n}\n","import { TasksApi } from '../../api';\nimport { AbilitiesApi } from '../../api';\n\nexport interface TasksBindings {\n // Tasks API\n getTasks: TasksApi['getTasks'];\n getTask: TasksApi['getTask'];\n createTask: TasksApi['createTask'];\n updateTask: TasksApi['updateTask'];\n deleteTask: TasksApi['deleteTask'];\n archiveTask: TasksApi['archiveTask'];\n unarchiveTask: TasksApi['unarchiveTask'];\n cloneTask: TasksApi['cloneTask'];\n\n // Abilities API (only types lookup - abilities are managed inline with parent objects)\n getAbilityTypes: AbilitiesApi['getAbilityTypes'];\n}\n\nexport function bindTasksMethods(\n target: TasksBindings,\n tasks: TasksApi,\n abilities: AbilitiesApi\n): void {\n // Tasks API\n target.getTasks = tasks.getTasks.bind(tasks);\n target.getTask = tasks.getTask.bind(tasks);\n target.createTask = tasks.createTask.bind(tasks);\n target.updateTask = tasks.updateTask.bind(tasks);\n target.deleteTask = tasks.deleteTask.bind(tasks);\n target.archiveTask = tasks.archiveTask.bind(tasks);\n target.unarchiveTask = tasks.unarchiveTask.bind(tasks);\n target.cloneTask = tasks.cloneTask.bind(tasks);\n\n // Abilities API (only types lookup)\n target.getAbilityTypes = abilities.getAbilityTypes.bind(abilities);\n}\n","import { ChatsApi } from '../../api';\n\nexport interface ChatsBindings {\n // Chats API\n getChats: ChatsApi['getChats'];\n getChat: ChatsApi['getChat'];\n getChatTokenUsage: ChatsApi['getChatTokenUsage'];\n getChatTodos: ChatsApi['getChatTodos'];\n getChatSkills: ChatsApi['getChatSkills'];\n getChatsNeedsResponse: ChatsApi['getChatsNeedsResponse'];\n getChatsDailyCreationStats: ChatsApi['getChatsDailyCreationStats'];\n getToolCallNames: ChatsApi['getToolCallNames'];\n archiveChat: ChatsApi['archiveChat'];\n unarchiveChat: ChatsApi['unarchiveChat'];\n createChat: ChatsApi['createChat'];\n createWorkflowOutboundVoiceChat: ChatsApi['createWorkflowOutboundVoiceChat'];\n deleteChat: ChatsApi['deleteChat'];\n updateChat: ChatsApi['updateChat'];\n updateChatMute: ChatsApi['updateChatMute'];\n updateChatNeedsResponse: ChatsApi['updateChatNeedsResponse'];\n summarizeChat: ChatsApi['summarizeChat'];\n getChatMessages: ChatsApi['getChatMessages'];\n getChatToolCallMessages: ChatsApi['getChatToolCallMessages'];\n getChatTools: ChatsApi['getChatTools'];\n initiateOutboundCall: ChatsApi['initiateOutboundCall'];\n sendAssistantMessage: ChatsApi['sendAssistantMessage'];\n rateMessage: ChatsApi['rateMessage'];\n getChatAssignmentTasks: ChatsApi['getChatAssignmentTasks'];\n createChatCompletion: ChatsApi['createChatCompletion'];\n exportChats: ChatsApi['exportChats'];\n exportChat: ChatsApi['exportChat'];\n findOrCreateDMChat: ChatsApi['findOrCreateDMChat'];\n sendChatMessage: ChatsApi['sendChatMessage'];\n getChatPhoneCalls: ChatsApi['getChatPhoneCalls'];\n // Chat Labels API\n getChatLabels: ChatsApi['getChatLabels'];\n getChatLabel: ChatsApi['getChatLabel'];\n getChatLabelByUuid: ChatsApi['getChatLabelByUuid'];\n createChatLabel: ChatsApi['createChatLabel'];\n updateChatLabel: ChatsApi['updateChatLabel'];\n deleteChatLabel: ChatsApi['deleteChatLabel'];\n // Chat Filters API\n getChatFilters: ChatsApi['getChatFilters'];\n getChatFilter: ChatsApi['getChatFilter'];\n getChatFilterByUuid: ChatsApi['getChatFilterByUuid'];\n createChatFilter: ChatsApi['createChatFilter'];\n updateChatFilter: ChatsApi['updateChatFilter'];\n deleteChatFilter: ChatsApi['deleteChatFilter'];\n getChatFilterCount: ChatsApi['getChatFilterCount'];\n}\n\nexport function bindChatsMethods(target: ChatsBindings, chats: ChatsApi): void {\n // Chats API\n target.getChats = chats.getChats.bind(chats);\n target.getChat = chats.getChat.bind(chats);\n target.getChatTokenUsage = chats.getChatTokenUsage.bind(chats);\n target.getChatTodos = chats.getChatTodos.bind(chats);\n target.getChatSkills = chats.getChatSkills.bind(chats);\n target.getChatsNeedsResponse = chats.getChatsNeedsResponse.bind(chats);\n target.getChatsDailyCreationStats = chats.getChatsDailyCreationStats.bind(chats);\n target.getToolCallNames = chats.getToolCallNames.bind(chats);\n target.archiveChat = chats.archiveChat.bind(chats);\n target.unarchiveChat = chats.unarchiveChat.bind(chats);\n target.createChat = chats.createChat.bind(chats);\n target.createWorkflowOutboundVoiceChat = chats.createWorkflowOutboundVoiceChat.bind(chats);\n target.deleteChat = chats.deleteChat.bind(chats);\n target.updateChat = chats.updateChat.bind(chats);\n target.updateChatMute = chats.updateChatMute.bind(chats);\n target.updateChatNeedsResponse = chats.updateChatNeedsResponse.bind(chats);\n target.summarizeChat = chats.summarizeChat.bind(chats);\n target.getChatMessages = chats.getChatMessages.bind(chats);\n target.getChatToolCallMessages = chats.getChatToolCallMessages.bind(chats);\n target.getChatTools = chats.getChatTools.bind(chats);\n target.initiateOutboundCall = chats.initiateOutboundCall.bind(chats);\n target.sendAssistantMessage = chats.sendAssistantMessage.bind(chats);\n target.rateMessage = chats.rateMessage.bind(chats);\n target.getChatAssignmentTasks = chats.getChatAssignmentTasks.bind(chats);\n target.createChatCompletion = chats.createChatCompletion.bind(chats);\n target.exportChats = chats.exportChats.bind(chats);\n target.exportChat = chats.exportChat.bind(chats);\n target.findOrCreateDMChat = chats.findOrCreateDMChat.bind(chats);\n target.sendChatMessage = chats.sendChatMessage.bind(chats);\n target.getChatPhoneCalls = chats.getChatPhoneCalls.bind(chats);\n // Chat Labels API\n target.getChatLabels = chats.getChatLabels.bind(chats);\n target.getChatLabel = chats.getChatLabel.bind(chats);\n target.getChatLabelByUuid = chats.getChatLabelByUuid.bind(chats);\n target.createChatLabel = chats.createChatLabel.bind(chats);\n target.updateChatLabel = chats.updateChatLabel.bind(chats);\n target.deleteChatLabel = chats.deleteChatLabel.bind(chats);\n // Chat Filters API\n target.getChatFilters = chats.getChatFilters.bind(chats);\n target.getChatFilter = chats.getChatFilter.bind(chats);\n target.getChatFilterByUuid = chats.getChatFilterByUuid.bind(chats);\n target.createChatFilter = chats.createChatFilter.bind(chats);\n target.updateChatFilter = chats.updateChatFilter.bind(chats);\n target.deleteChatFilter = chats.deleteChatFilter.bind(chats);\n target.getChatFilterCount = chats.getChatFilterCount.bind(chats);\n}\n","import { CallsApi } from '../../api';\nimport { CELApi } from '../../api';\n\nexport interface CallsBindings {\n // Calls API\n initiateCall: CallsApi['initiateCall'];\n getVoiceToken: CallsApi['getVoiceToken'];\n getMessageTiming: CallsApi['getMessageTiming'];\n\n // CEL API\n getCelContext: CELApi['getCelContext'];\n}\n\nexport function bindCallsMethods(target: CallsBindings, calls: CallsApi, cel: CELApi): void {\n // Calls API\n target.initiateCall = calls.initiateCall.bind(calls);\n target.getVoiceToken = calls.getVoiceToken.bind(calls);\n target.getMessageTiming = calls.getMessageTiming.bind(calls);\n\n // CEL API\n target.getCelContext = cel.getCelContext.bind(cel);\n}\n","import { DataTypesApi } from '../../api';\n\nexport interface DataTypesBindings {\n // Data Types API\n getDataTypes: DataTypesApi['getDataTypes'];\n getDataType: DataTypesApi['getDataType'];\n getDataTypeBySlug: DataTypesApi['getDataTypeBySlug'];\n createDataType: DataTypesApi['createDataType'];\n updateDataType: DataTypesApi['updateDataType'];\n deleteDataType: DataTypesApi['deleteDataType'];\n archiveDataType: DataTypesApi['archiveDataType'];\n unarchiveDataType: DataTypesApi['unarchiveDataType'];\n cloneDataType: DataTypesApi['cloneDataType'];\n getDataRecords: DataTypesApi['getDataRecords'];\n getDataRecord: DataTypesApi['getDataRecord'];\n createDataRecord: DataTypesApi['createDataRecord'];\n updateDataRecord: DataTypesApi['updateDataRecord'];\n deleteDataRecord: DataTypesApi['deleteDataRecord'];\n getDataRecordChanges: DataTypesApi['getDataRecordChanges'];\n upsertDataRecord: DataTypesApi['upsertDataRecord'];\n toggleFieldIndex: DataTypesApi['toggleFieldIndex'];\n getFieldIndexStatus: DataTypesApi['getFieldIndexStatus'];\n validateDataTypeSlug: DataTypesApi['validateDataTypeSlug'];\n getMemberRecordCounts: DataTypesApi['getMemberRecordCounts'];\n}\n\nexport function bindDataTypesMethods(target: DataTypesBindings, dataTypes: DataTypesApi): void {\n target.getDataTypes = dataTypes.getDataTypes.bind(dataTypes);\n target.getDataType = dataTypes.getDataType.bind(dataTypes);\n target.getDataTypeBySlug = dataTypes.getDataTypeBySlug.bind(dataTypes);\n target.createDataType = dataTypes.createDataType.bind(dataTypes);\n target.updateDataType = dataTypes.updateDataType.bind(dataTypes);\n target.deleteDataType = dataTypes.deleteDataType.bind(dataTypes);\n target.archiveDataType = dataTypes.archiveDataType.bind(dataTypes);\n target.unarchiveDataType = dataTypes.unarchiveDataType.bind(dataTypes);\n target.cloneDataType = dataTypes.cloneDataType.bind(dataTypes);\n target.getDataRecords = dataTypes.getDataRecords.bind(dataTypes);\n target.getDataRecord = dataTypes.getDataRecord.bind(dataTypes);\n target.createDataRecord = dataTypes.createDataRecord.bind(dataTypes);\n target.updateDataRecord = dataTypes.updateDataRecord.bind(dataTypes);\n target.deleteDataRecord = dataTypes.deleteDataRecord.bind(dataTypes);\n target.getDataRecordChanges = dataTypes.getDataRecordChanges.bind(dataTypes);\n target.upsertDataRecord = dataTypes.upsertDataRecord.bind(dataTypes);\n target.toggleFieldIndex = dataTypes.toggleFieldIndex.bind(dataTypes);\n target.getFieldIndexStatus = dataTypes.getFieldIndexStatus.bind(dataTypes);\n target.validateDataTypeSlug = dataTypes.validateDataTypeSlug.bind(dataTypes);\n target.getMemberRecordCounts = dataTypes.getMemberRecordCounts.bind(dataTypes);\n}\n","import { MembersApi } from '../../api';\n\nexport interface MembersBindings {\n // Members API\n getCurrentMember: MembersApi['getCurrentMember'];\n getOwnedMembers: MembersApi['getOwnedMembers'];\n switchMember: MembersApi['switchMember'];\n clearMemberSwitch: MembersApi['clearMemberSwitch'];\n updateCurrentMember: MembersApi['updateCurrentMember'];\n getWorkspaceMembers: MembersApi['getWorkspaceMembers'];\n getWorkspaceMember: MembersApi['getWorkspaceMember'];\n createWorkspaceMember: MembersApi['createWorkspaceMember'];\n updateMember: MembersApi['updateMember'];\n deleteMember: MembersApi['deleteMember'];\n archiveMember: MembersApi['archiveMember'];\n unarchiveMember: MembersApi['unarchiveMember'];\n importMembers: MembersApi['importMembers'];\n exportMembers: MembersApi['exportMembers'];\n getMembersMessageActivity: MembersApi['getMembersMessageActivity'];\n getMemberFilters: MembersApi['getMemberFilters'];\n getMemberFilter: MembersApi['getMemberFilter'];\n createMemberFilter: MembersApi['createMemberFilter'];\n updateMemberFilter: MembersApi['updateMemberFilter'];\n deleteMemberFilter: MembersApi['deleteMemberFilter'];\n getMemberFilterCount: MembersApi['getMemberFilterCount'];\n getMemberLabels: MembersApi['getMemberLabels'];\n getMemberLabel: MembersApi['getMemberLabel'];\n getMemberLabelByUuid: MembersApi['getMemberLabelByUuid'];\n createMemberLabel: MembersApi['createMemberLabel'];\n updateMemberLabel: MembersApi['updateMemberLabel'];\n deleteMemberLabel: MembersApi['deleteMemberLabel'];\n getMemberRoles: MembersApi['getMemberRoles'];\n getMemberRole: MembersApi['getMemberRole'];\n getMemberRoleByUuid: MembersApi['getMemberRoleByUuid'];\n createMemberRole: MembersApi['createMemberRole'];\n updateMemberRole: MembersApi['updateMemberRole'];\n deleteMemberRole: MembersApi['deleteMemberRole'];\n // Member Fields\n getMemberFields: MembersApi['getMemberFields'];\n getMemberFieldDefinitions: MembersApi['getMemberFieldDefinitions'];\n createMemberField: MembersApi['createMemberField'];\n updateMemberField: MembersApi['updateMemberField'];\n deleteMemberField: MembersApi['deleteMemberField'];\n // Credential Change Invites (Admin-initiated)\n inviteMemberCredentialUpdate: MembersApi['inviteMemberCredentialUpdate'];\n cancelCredentialUpdateInvite: MembersApi['cancelCredentialUpdateInvite'];\n getCredentialUpdateInvites: MembersApi['getCredentialUpdateInvites'];\n // Anonymous Member Resolutions\n getAnonymousResolutions: MembersApi['getAnonymousResolutions'];\n getAnonymousResolution: MembersApi['getAnonymousResolution'];\n resolveAnonymousMember: MembersApi['resolveAnonymousMember'];\n expireAnonymousMember: MembersApi['expireAnonymousMember'];\n // Member Memories\n getMemberMemories: MembersApi['getMemberMemories'];\n createMemberMemory: MembersApi['createMemberMemory'];\n deleteMemberMemory: MembersApi['deleteMemberMemory'];\n}\n\nexport function bindMembersMethods(target: MembersBindings, members: MembersApi): void {\n target.getCurrentMember = members.getCurrentMember.bind(members);\n target.getOwnedMembers = members.getOwnedMembers.bind(members);\n target.switchMember = members.switchMember.bind(members);\n target.clearMemberSwitch = members.clearMemberSwitch.bind(members);\n target.updateCurrentMember = members.updateCurrentMember.bind(members);\n target.getWorkspaceMembers = members.getWorkspaceMembers.bind(members);\n target.getWorkspaceMember = members.getWorkspaceMember.bind(members);\n target.createWorkspaceMember = members.createWorkspaceMember.bind(members);\n target.updateMember = members.updateMember.bind(members);\n target.deleteMember = members.deleteMember.bind(members);\n target.archiveMember = members.archiveMember.bind(members);\n target.unarchiveMember = members.unarchiveMember.bind(members);\n target.importMembers = members.importMembers.bind(members);\n target.exportMembers = members.exportMembers.bind(members);\n target.getMembersMessageActivity = members.getMembersMessageActivity.bind(members);\n target.getMemberFilters = members.getMemberFilters.bind(members);\n target.getMemberFilter = members.getMemberFilter.bind(members);\n target.createMemberFilter = members.createMemberFilter.bind(members);\n target.updateMemberFilter = members.updateMemberFilter.bind(members);\n target.deleteMemberFilter = members.deleteMemberFilter.bind(members);\n target.getMemberFilterCount = members.getMemberFilterCount.bind(members);\n target.getMemberLabels = members.getMemberLabels.bind(members);\n target.getMemberLabel = members.getMemberLabel.bind(members);\n target.getMemberLabelByUuid = members.getMemberLabelByUuid.bind(members);\n target.createMemberLabel = members.createMemberLabel.bind(members);\n target.updateMemberLabel = members.updateMemberLabel.bind(members);\n target.deleteMemberLabel = members.deleteMemberLabel.bind(members);\n target.getMemberRoles = members.getMemberRoles.bind(members);\n target.getMemberRole = members.getMemberRole.bind(members);\n target.getMemberRoleByUuid = members.getMemberRoleByUuid.bind(members);\n target.createMemberRole = members.createMemberRole.bind(members);\n target.updateMemberRole = members.updateMemberRole.bind(members);\n target.deleteMemberRole = members.deleteMemberRole.bind(members);\n // Member Fields\n target.getMemberFields = members.getMemberFields.bind(members);\n target.getMemberFieldDefinitions = members.getMemberFieldDefinitions.bind(members);\n target.createMemberField = members.createMemberField.bind(members);\n target.updateMemberField = members.updateMemberField.bind(members);\n target.deleteMemberField = members.deleteMemberField.bind(members);\n // Credential Change Invites (Admin-initiated)\n target.inviteMemberCredentialUpdate = members.inviteMemberCredentialUpdate.bind(members);\n target.cancelCredentialUpdateInvite = members.cancelCredentialUpdateInvite.bind(members);\n target.getCredentialUpdateInvites = members.getCredentialUpdateInvites.bind(members);\n // Anonymous Member Resolutions\n target.getAnonymousResolutions = members.getAnonymousResolutions.bind(members);\n target.getAnonymousResolution = members.getAnonymousResolution.bind(members);\n target.resolveAnonymousMember = members.resolveAnonymousMember.bind(members);\n target.expireAnonymousMember = members.expireAnonymousMember.bind(members);\n // Member Memories\n target.getMemberMemories = members.getMemberMemories.bind(members);\n target.createMemberMemory = members.createMemberMemory.bind(members);\n target.deleteMemberMemory = members.deleteMemberMemory.bind(members);\n}\n","import { WorkspacesApi, WorkspaceInvitationsApi } from '../../api';\n\nexport interface WorkspacesBindings {\n // Workspaces API\n getWorkspaces: WorkspacesApi['getWorkspaces'];\n getPublicWorkspaces: WorkspacesApi['getPublicWorkspaces'];\n getWorkspace: WorkspacesApi['getWorkspace'];\n createWorkspace: WorkspacesApi['createWorkspace'];\n updateWorkspace: WorkspacesApi['updateWorkspace'];\n deleteWorkspace: WorkspacesApi['deleteWorkspace'];\n leaveWorkspace: WorkspacesApi['leaveWorkspace'];\n getWorkspaceDefaults: WorkspacesApi['getWorkspaceDefaults'];\n updateWorkspaceDefaults: WorkspacesApi['updateWorkspaceDefaults'];\n getFirstRunState: WorkspacesApi['getFirstRunState'];\n updateFirstRunState: WorkspacesApi['updateFirstRunState'];\n getWorkspaceCounts: WorkspacesApi['getWorkspaceCounts'];\n getBusinessHoursStatus: WorkspacesApi['getBusinessHoursStatus'];\n getAvailableWorkspaceFeatures: WorkspacesApi['getAvailableWorkspaceFeatures'];\n getWorkspaceNotices: WorkspacesApi['getWorkspaceNotices'];\n getNotifications: WorkspacesApi['getNotifications'];\n getNotification: WorkspacesApi['getNotification'];\n getUnreadNotificationCount: WorkspacesApi['getUnreadNotificationCount'];\n markNotificationAsRead: WorkspacesApi['markNotificationAsRead'];\n dismissNotification: WorkspacesApi['dismissNotification'];\n dismissAllNotifications: WorkspacesApi['dismissAllNotifications'];\n getResellerWorkspaces: WorkspacesApi['getResellerWorkspaces'];\n createClientWorkspace: WorkspacesApi['createClientWorkspace'];\n getClientWorkspace: WorkspacesApi['getClientWorkspace'];\n updateClientWorkspace: WorkspacesApi['updateClientWorkspace'];\n deleteClientWorkspace: WorkspacesApi['deleteClientWorkspace'];\n provisionClientWorkspace: WorkspacesApi['provisionClientWorkspace'];\n getProducts: WorkspacesApi['getProducts'];\n getProduct: WorkspacesApi['getProduct'];\n getWorkspaceProduct: WorkspacesApi['getWorkspaceProduct'];\n getPublicProducts: WorkspacesApi['getPublicProducts'];\n getPublicProduct: WorkspacesApi['getPublicProduct'];\n createProduct: WorkspacesApi['createProduct'];\n updateProduct: WorkspacesApi['updateProduct'];\n deleteProduct: WorkspacesApi['deleteProduct'];\n exportWorkspace: WorkspacesApi['exportWorkspace'];\n previewWorkspaceImport: WorkspacesApi['previewWorkspaceImport'];\n importWorkspace: WorkspacesApi['importWorkspace'];\n previewImportWorkspace: WorkspacesApi['previewImportWorkspace'];\n getWorkspaceThemes: WorkspacesApi['getWorkspaceThemes'];\n updateWorkspaceThemes: WorkspacesApi['updateWorkspaceThemes'];\n getWorkspaceBySlug: WorkspacesApi['getWorkspace'];\n getWorkspaceScopes: WorkspacesApi['getWorkspaceScopes'];\n getUsageDashboard: WorkspacesApi['getUsageDashboard'];\n\n // Push Notifications API\n getVapidPublicKey: WorkspacesApi['getVapidPublicKey'];\n registerPushSubscription: WorkspacesApi['registerPushSubscription'];\n unregisterPushSubscription: WorkspacesApi['unregisterPushSubscription'];\n listPushSubscriptions: WorkspacesApi['listPushSubscriptions'];\n getWorkspaceEmailDomains: WorkspacesApi['getWorkspaceEmailDomains'];\n getWorkspaceSiteDomains: WorkspacesApi['getWorkspaceSiteDomains'];\n\n // WorkspaceInvitations API\n listWorkspaceInvitations: WorkspaceInvitationsApi['listWorkspaceInvitations'];\n listWorkspaceInvitationsAdmin: WorkspaceInvitationsApi['listWorkspaceInvitationsAdmin'];\n getWorkspaceInvitation: WorkspaceInvitationsApi['getWorkspaceInvitation'];\n updateWorkspaceInvitationAdmin: WorkspaceInvitationsApi['updateWorkspaceInvitationAdmin'];\n deleteWorkspaceInvitation: WorkspaceInvitationsApi['deleteWorkspaceInvitation'];\n deleteWorkspaceInvitationAdmin: WorkspaceInvitationsApi['deleteWorkspaceInvitationAdmin'];\n requestWorkspaceMembership: WorkspaceInvitationsApi['requestWorkspaceMembership'];\n approveWorkspaceInvitation: WorkspaceInvitationsApi['approveWorkspaceInvitation'];\n denyWorkspaceInvitation: WorkspaceInvitationsApi['denyWorkspaceInvitation'];\n blockWorkspaceInvitation: WorkspaceInvitationsApi['blockWorkspaceInvitation'];\n inviteToWorkspace: WorkspaceInvitationsApi['inviteToWorkspace'];\n acceptInvitation: WorkspaceInvitationsApi['acceptInvitation'];\n declineInvitation: WorkspaceInvitationsApi['declineInvitation'];\n}\n\nexport function bindWorkspacesMethods(\n target: WorkspacesBindings,\n workspaces: WorkspacesApi,\n signupRequests: WorkspaceInvitationsApi\n): void {\n // Workspaces API\n target.getWorkspaces = workspaces.getWorkspaces.bind(workspaces);\n target.getPublicWorkspaces = workspaces.getPublicWorkspaces.bind(workspaces);\n target.getWorkspace = workspaces.getWorkspace.bind(workspaces);\n target.createWorkspace = workspaces.createWorkspace.bind(workspaces);\n target.updateWorkspace = workspaces.updateWorkspace.bind(workspaces);\n target.deleteWorkspace = workspaces.deleteWorkspace.bind(workspaces);\n target.leaveWorkspace = workspaces.leaveWorkspace.bind(workspaces);\n target.getWorkspaceDefaults = workspaces.getWorkspaceDefaults.bind(workspaces);\n target.updateWorkspaceDefaults = workspaces.updateWorkspaceDefaults.bind(workspaces);\n target.getFirstRunState = workspaces.getFirstRunState.bind(workspaces);\n target.updateFirstRunState = workspaces.updateFirstRunState.bind(workspaces);\n target.getWorkspaceCounts = workspaces.getWorkspaceCounts.bind(workspaces);\n target.getBusinessHoursStatus = workspaces.getBusinessHoursStatus.bind(workspaces);\n target.getAvailableWorkspaceFeatures = workspaces.getAvailableWorkspaceFeatures.bind(workspaces);\n target.getWorkspaceNotices = workspaces.getWorkspaceNotices.bind(workspaces);\n target.getNotifications = workspaces.getNotifications.bind(workspaces);\n target.getNotification = workspaces.getNotification.bind(workspaces);\n target.getUnreadNotificationCount = workspaces.getUnreadNotificationCount.bind(workspaces);\n target.markNotificationAsRead = workspaces.markNotificationAsRead.bind(workspaces);\n target.dismissNotification = workspaces.dismissNotification.bind(workspaces);\n target.dismissAllNotifications = workspaces.dismissAllNotifications.bind(workspaces);\n target.getResellerWorkspaces = workspaces.getResellerWorkspaces.bind(workspaces);\n target.createClientWorkspace = workspaces.createClientWorkspace.bind(workspaces);\n target.getClientWorkspace = workspaces.getClientWorkspace.bind(workspaces);\n target.updateClientWorkspace = workspaces.updateClientWorkspace.bind(workspaces);\n target.deleteClientWorkspace = workspaces.deleteClientWorkspace.bind(workspaces);\n target.provisionClientWorkspace = workspaces.provisionClientWorkspace.bind(workspaces);\n target.getProducts = workspaces.getProducts.bind(workspaces);\n target.getProduct = workspaces.getProduct.bind(workspaces);\n target.getWorkspaceProduct = workspaces.getWorkspaceProduct.bind(workspaces);\n target.getPublicProducts = workspaces.getPublicProducts.bind(workspaces);\n target.getPublicProduct = workspaces.getPublicProduct.bind(workspaces);\n target.createProduct = workspaces.createProduct.bind(workspaces);\n target.updateProduct = workspaces.updateProduct.bind(workspaces);\n target.deleteProduct = workspaces.deleteProduct.bind(workspaces);\n target.exportWorkspace = workspaces.exportWorkspace.bind(workspaces);\n target.previewWorkspaceImport = workspaces.previewWorkspaceImport.bind(workspaces);\n target.importWorkspace = workspaces.importWorkspace.bind(workspaces);\n target.previewImportWorkspace = workspaces.previewImportWorkspace.bind(workspaces);\n target.getWorkspaceThemes = workspaces.getWorkspaceThemes.bind(workspaces);\n target.updateWorkspaceThemes = workspaces.updateWorkspaceThemes.bind(workspaces);\n target.getWorkspaceBySlug = workspaces.getWorkspace.bind(workspaces);\n target.getWorkspaceScopes = workspaces.getWorkspaceScopes.bind(workspaces);\n target.getUsageDashboard = workspaces.getUsageDashboard.bind(workspaces);\n\n // Push Notifications API\n target.getVapidPublicKey = workspaces.getVapidPublicKey.bind(workspaces);\n target.registerPushSubscription = workspaces.registerPushSubscription.bind(workspaces);\n target.unregisterPushSubscription = workspaces.unregisterPushSubscription.bind(workspaces);\n target.listPushSubscriptions = workspaces.listPushSubscriptions.bind(workspaces);\n target.getWorkspaceEmailDomains = workspaces.getWorkspaceEmailDomains.bind(workspaces);\n target.getWorkspaceSiteDomains = workspaces.getWorkspaceSiteDomains.bind(workspaces);\n\n // WorkspaceInvitations API\n target.listWorkspaceInvitations = signupRequests.listWorkspaceInvitations.bind(signupRequests);\n target.listWorkspaceInvitationsAdmin =\n signupRequests.listWorkspaceInvitationsAdmin.bind(signupRequests);\n target.getWorkspaceInvitation = signupRequests.getWorkspaceInvitation.bind(signupRequests);\n target.updateWorkspaceInvitationAdmin =\n signupRequests.updateWorkspaceInvitationAdmin.bind(signupRequests);\n target.deleteWorkspaceInvitation = signupRequests.deleteWorkspaceInvitation.bind(signupRequests);\n target.deleteWorkspaceInvitationAdmin =\n signupRequests.deleteWorkspaceInvitationAdmin.bind(signupRequests);\n target.requestWorkspaceMembership =\n signupRequests.requestWorkspaceMembership.bind(signupRequests);\n target.approveWorkspaceInvitation =\n signupRequests.approveWorkspaceInvitation.bind(signupRequests);\n target.denyWorkspaceInvitation = signupRequests.denyWorkspaceInvitation.bind(signupRequests);\n target.blockWorkspaceInvitation = signupRequests.blockWorkspaceInvitation.bind(signupRequests);\n target.inviteToWorkspace = signupRequests.inviteToWorkspace.bind(signupRequests);\n target.acceptInvitation = signupRequests.acceptInvitation.bind(signupRequests);\n target.declineInvitation = signupRequests.declineInvitation.bind(signupRequests);\n}\n","import { AuthApi } from '../../api';\nimport { AssignmentsApi } from '../../api';\n\nexport interface AuthBindings {\n // Auth API\n getUserAccount: AuthApi['getUserAccount'];\n updateUserAccount: AuthApi['updateUserAccount'];\n login: AuthApi['login'];\n resendCode: AuthApi['resendCode'];\n verifyCodeWith2FA: AuthApi['verifyCodeWith2FA'];\n emailPasswordLogin: AuthApi['emailPasswordLogin'];\n emailPasswordSignup: AuthApi['emailPasswordSignup'];\n requestMagicLink: AuthApi['requestMagicLink'];\n validateMagicLink: AuthApi['validateMagicLink'];\n sendEmailVerification: AuthApi['sendEmailVerification'];\n verifyEmail: AuthApi['verifyEmail'];\n changePassword: AuthApi['changePassword'];\n setPassword: AuthApi['setPassword'];\n getPasswordStatus: AuthApi['getPasswordStatus'];\n logout: AuthApi['logout'];\n requestCrossDomainToken: AuthApi['requestCrossDomainToken'];\n exchangeToken: AuthApi['exchangeToken'];\n getDomainMapping: AuthApi['getDomainMapping'];\n createSignup: AuthApi['createSignup'];\n createAccount: AuthApi['emailPasswordSignup'];\n\n // Two-Factor Authentication methods\n getTwoFactorStatus: AuthApi['getTwoFactorStatus'];\n setupTOTP: AuthApi['setupTOTP'];\n verifyTOTPSetup: AuthApi['verifyTOTPSetup'];\n setupWebAuthn: AuthApi['setupWebAuthn'];\n verifyWebAuthnSetup: AuthApi['verifyWebAuthnSetup'];\n verifyTOTPAuth: AuthApi['verifyTOTPAuth'];\n verifyRecoveryCodeAuth: AuthApi['verifyRecoveryCodeAuth'];\n getWebAuthnAuthOptions: AuthApi['getWebAuthnAuthOptions'];\n verifyWebAuthnAuth: AuthApi['verifyWebAuthnAuth'];\n generateRecoveryCodes: AuthApi['generateRecoveryCodes'];\n disableTwoFactorMethod: AuthApi['disableTwoFactorMethod'];\n updateTwoFactorMethod: AuthApi['updateTwoFactorMethod'];\n\n // Organization membership methods\n getMyOrganizations: AuthApi['getMyOrganizations'];\n\n // Credential change methods (Verified Credential Architecture)\n requestCredentialChange: AuthApi['requestCredentialChange'];\n verifyCredentialChange: AuthApi['verifyCredentialChange'];\n getPendingCredentialChanges: AuthApi['getPendingCredentialChanges'];\n cancelCredentialChange: AuthApi['cancelCredentialChange'];\n // Credential change invite methods (for members to view/confirm admin-initiated invites)\n getCredentialChangeInviteDetails: AuthApi['getCredentialChangeInviteDetails'];\n confirmCredentialChangeInvite: AuthApi['confirmCredentialChangeInvite'];\n\n // Consent (GDPR Art. 7(1))\n getConsentState: AuthApi['getConsentState'];\n updateConsent: AuthApi['updateConsent'];\n\n // Assignments API\n getAssignments: AssignmentsApi['getAssignments'];\n getAssignment: AssignmentsApi['getAssignment'];\n getAssignmentMessages: AssignmentsApi['getAssignmentMessages'];\n updateAssignment: AssignmentsApi['updateAssignment'];\n deleteAssignment: AssignmentsApi['deleteAssignment'];\n getAssignmentTask: AssignmentsApi['getAssignmentTask'];\n selectCurrentAssignmentTask: AssignmentsApi['selectCurrentAssignmentTask'];\n createAssignment: AssignmentsApi['createAssignment'];\n getAssignmentTaskDetail: AssignmentsApi['getAssignmentTaskDetail'];\n getAssignmentCelContext: AssignmentsApi['getAssignmentCelContext'];\n cancelAssignment: AssignmentsApi['cancelAssignment'];\n getAssignmentTools: AssignmentsApi['getAssignmentTools'];\n executeAssignmentTool: AssignmentsApi['executeAssignmentTool'];\n}\n\nexport function bindAuthMethods(\n target: AuthBindings,\n auth: AuthApi,\n assignments: AssignmentsApi\n): void {\n // Auth API\n target.getUserAccount = auth.getUserAccount.bind(auth);\n target.updateUserAccount = auth.updateUserAccount.bind(auth);\n target.login = auth.login.bind(auth);\n target.resendCode = auth.resendCode.bind(auth);\n target.verifyCodeWith2FA = auth.verifyCodeWith2FA.bind(auth);\n target.emailPasswordLogin = auth.emailPasswordLogin.bind(auth);\n target.emailPasswordSignup = auth.emailPasswordSignup.bind(auth);\n target.requestMagicLink = auth.requestMagicLink.bind(auth);\n target.validateMagicLink = auth.validateMagicLink.bind(auth);\n target.sendEmailVerification = auth.sendEmailVerification.bind(auth);\n target.verifyEmail = auth.verifyEmail.bind(auth);\n target.changePassword = auth.changePassword.bind(auth);\n target.setPassword = auth.setPassword.bind(auth);\n target.getPasswordStatus = auth.getPasswordStatus.bind(auth);\n target.logout = auth.logout.bind(auth);\n target.requestCrossDomainToken = auth.requestCrossDomainToken.bind(auth);\n target.exchangeToken = auth.exchangeToken.bind(auth);\n target.getDomainMapping = auth.getDomainMapping.bind(auth);\n target.createSignup = auth.createSignup.bind(auth);\n target.createAccount = auth.emailPasswordSignup.bind(auth);\n\n // Two-Factor Authentication API\n target.getTwoFactorStatus = auth.getTwoFactorStatus.bind(auth);\n target.setupTOTP = auth.setupTOTP.bind(auth);\n target.verifyTOTPSetup = auth.verifyTOTPSetup.bind(auth);\n target.setupWebAuthn = auth.setupWebAuthn.bind(auth);\n target.verifyWebAuthnSetup = auth.verifyWebAuthnSetup.bind(auth);\n target.verifyTOTPAuth = auth.verifyTOTPAuth.bind(auth);\n target.verifyRecoveryCodeAuth = auth.verifyRecoveryCodeAuth.bind(auth);\n target.getWebAuthnAuthOptions = auth.getWebAuthnAuthOptions.bind(auth);\n target.verifyWebAuthnAuth = auth.verifyWebAuthnAuth.bind(auth);\n target.generateRecoveryCodes = auth.generateRecoveryCodes.bind(auth);\n target.disableTwoFactorMethod = auth.disableTwoFactorMethod.bind(auth);\n target.updateTwoFactorMethod = auth.updateTwoFactorMethod.bind(auth);\n\n // Organization membership methods\n target.getMyOrganizations = auth.getMyOrganizations.bind(auth);\n\n // Credential change methods (Verified Credential Architecture)\n target.requestCredentialChange = auth.requestCredentialChange.bind(auth);\n target.verifyCredentialChange = auth.verifyCredentialChange.bind(auth);\n target.getPendingCredentialChanges = auth.getPendingCredentialChanges.bind(auth);\n target.cancelCredentialChange = auth.cancelCredentialChange.bind(auth);\n // Credential change invite methods (for members to view/confirm admin-initiated invites)\n target.getCredentialChangeInviteDetails = auth.getCredentialChangeInviteDetails.bind(auth);\n target.confirmCredentialChangeInvite = auth.confirmCredentialChangeInvite.bind(auth);\n\n // Consent (GDPR Art. 7(1))\n target.getConsentState = auth.getConsentState.bind(auth);\n target.updateConsent = auth.updateConsent.bind(auth);\n\n // Assignments API\n target.getAssignments = assignments.getAssignments.bind(assignments);\n target.getAssignment = assignments.getAssignment.bind(assignments);\n target.getAssignmentMessages = assignments.getAssignmentMessages.bind(assignments);\n target.updateAssignment = assignments.updateAssignment.bind(assignments);\n target.deleteAssignment = assignments.deleteAssignment.bind(assignments);\n target.getAssignmentTask = assignments.getAssignmentTask.bind(assignments);\n target.selectCurrentAssignmentTask = assignments.selectCurrentAssignmentTask.bind(assignments);\n target.createAssignment = assignments.createAssignment.bind(assignments);\n target.getAssignmentTaskDetail = assignments.getAssignmentTaskDetail.bind(assignments);\n target.getAssignmentCelContext = assignments.getAssignmentCelContext.bind(assignments);\n target.cancelAssignment = assignments.cancelAssignment.bind(assignments);\n target.getAssignmentTools = assignments.getAssignmentTools.bind(assignments);\n target.executeAssignmentTool = assignments.executeAssignmentTool.bind(assignments);\n}\n","import { SitesApi } from '../../api';\n\nexport interface SitesBindings {\n // Sites API\n getSites: SitesApi['getSites'];\n checkSiteSlugAvailability: SitesApi['checkSiteSlugAvailability'];\n checkSiteDomainAvailability: SitesApi['checkSiteDomainAvailability'];\n getSite: SitesApi['getSite'];\n getSiteByUuid: SitesApi['getSiteByUuid'];\n getSiteRenderedPage: SitesApi['getSiteRenderedPage'];\n getSiteRenderedMenu: SitesApi['getSiteRenderedMenu'];\n siteSignup: SitesApi['siteSignup'];\n siteSendPhoneCode: SitesApi['siteSendPhoneCode'];\n siteSendEmailCode: SitesApi['siteSendEmailCode'];\n siteVerifyCode: SitesApi['siteVerifyCode'];\n siteGoogleOAuthInitiate: SitesApi['siteGoogleOAuthInitiate'];\n crawlSite: SitesApi['crawlSite'];\n createSite: SitesApi['createSite'];\n updateSite: SitesApi['updateSite'];\n deleteSite: SitesApi['deleteSite'];\n getSitePages: SitesApi['getSitePages'];\n getPage: SitesApi['getPage'];\n getPageBySlug: SitesApi['getPageBySlug'];\n createPage: SitesApi['createPage'];\n updatePage: SitesApi['updatePage'];\n deletePage: SitesApi['deletePage'];\n getSiteCounts: SitesApi['getSiteCounts'];\n getSiteMenu: SitesApi['getSiteMenu'];\n getMenuItems: SitesApi['getMenuItems'];\n createMenuItem: SitesApi['createMenuItem'];\n updateMenuItem: SitesApi['updateMenuItem'];\n deleteMenuItem: SitesApi['deleteMenuItem'];\n reorderMenuItems: SitesApi['reorderMenuItems'];\n generateSiteMediaUploadUrl: SitesApi['generateSiteMediaUploadUrl'];\n}\n\nexport function bindSitesMethods(target: SitesBindings, sites: SitesApi): void {\n target.getSites = sites.getSites.bind(sites);\n target.checkSiteSlugAvailability = sites.checkSiteSlugAvailability.bind(sites);\n target.checkSiteDomainAvailability = sites.checkSiteDomainAvailability.bind(sites);\n target.getSite = sites.getSite.bind(sites);\n target.getSiteByUuid = sites.getSiteByUuid.bind(sites);\n target.getSiteRenderedPage = sites.getSiteRenderedPage.bind(sites);\n target.getSiteRenderedMenu = sites.getSiteRenderedMenu.bind(sites);\n target.siteSignup = sites.siteSignup.bind(sites);\n target.siteSendPhoneCode = sites.siteSendPhoneCode.bind(sites);\n target.siteSendEmailCode = sites.siteSendEmailCode.bind(sites);\n target.siteVerifyCode = sites.siteVerifyCode.bind(sites);\n target.siteGoogleOAuthInitiate = sites.siteGoogleOAuthInitiate.bind(sites);\n target.crawlSite = sites.crawlSite.bind(sites);\n target.createSite = sites.createSite.bind(sites);\n target.updateSite = sites.updateSite.bind(sites);\n target.deleteSite = sites.deleteSite.bind(sites);\n target.getSitePages = sites.getSitePages.bind(sites);\n target.getPage = sites.getPage.bind(sites);\n target.getPageBySlug = sites.getPageBySlug.bind(sites);\n target.createPage = sites.createPage.bind(sites);\n target.updatePage = sites.updatePage.bind(sites);\n target.deletePage = sites.deletePage.bind(sites);\n target.getSiteCounts = sites.getSiteCounts.bind(sites);\n target.getSiteMenu = sites.getSiteMenu.bind(sites);\n target.getMenuItems = sites.getMenuItems.bind(sites);\n target.createMenuItem = sites.createMenuItem.bind(sites);\n target.updateMenuItem = sites.updateMenuItem.bind(sites);\n target.deleteMenuItem = sites.deleteMenuItem.bind(sites);\n target.reorderMenuItems = sites.reorderMenuItems.bind(sites);\n target.generateSiteMediaUploadUrl = sites.generateSiteMediaUploadUrl.bind(sites);\n}\n","import { FilesApi } from '../../api';\n\nexport interface FilesBindings {\n // Files API\n getFiles: FilesApi['getFiles'];\n getFile: FilesApi['getFile'];\n createFile: FilesApi['createFile'];\n updateFile: FilesApi['updateFile'];\n deleteFile: FilesApi['deleteFile'];\n convertFile: FilesApi['convertFile'];\n generateFileUploadUrl: FilesApi['generateFileUploadUrl'];\n getFolders: FilesApi['getFolders'];\n getFolder: FilesApi['getFolder'];\n createFolder: FilesApi['createFolder'];\n updateFolder: FilesApi['updateFolder'];\n deleteFolder: FilesApi['deleteFolder'];\n reindexFolder: FilesApi['reindexFolder'];\n searchFolder: FilesApi['searchFolder'];\n // File Labels API\n getFileLabels: FilesApi['getFileLabels'];\n getFileLabel: FilesApi['getFileLabel'];\n getFileLabelByUuid: FilesApi['getFileLabelByUuid'];\n createFileLabel: FilesApi['createFileLabel'];\n updateFileLabel: FilesApi['updateFileLabel'];\n deleteFileLabel: FilesApi['deleteFileLabel'];\n // File/Folder Sharing API\n getFileSharing: FilesApi['getFileSharing'];\n updateFileRoles: FilesApi['updateFileRoles'];\n removeFileRole: FilesApi['removeFileRole'];\n getFolderSharing: FilesApi['getFolderSharing'];\n updateFolderRoles: FilesApi['updateFolderRoles'];\n removeFolderRole: FilesApi['removeFolderRole'];\n // Batch Sharing API\n updateFileSharing: FilesApi['updateFileSharing'];\n updateFolderSharing: FilesApi['updateFolderSharing'];\n // Public Sharing API\n getPublicFile: FilesApi['getPublicFile'];\n getPublicFolder: FilesApi['getPublicFolder'];\n getPublicFolderFiles: FilesApi['getPublicFolderFiles'];\n}\n\nexport function bindFilesMethods(target: FilesBindings, files: FilesApi): void {\n target.getFiles = files.getFiles.bind(files);\n target.getFile = files.getFile.bind(files);\n target.createFile = files.createFile.bind(files);\n target.updateFile = files.updateFile.bind(files);\n target.deleteFile = files.deleteFile.bind(files);\n target.convertFile = files.convertFile.bind(files);\n target.generateFileUploadUrl = files.generateFileUploadUrl.bind(files);\n target.getFolders = files.getFolders.bind(files);\n target.getFolder = files.getFolder.bind(files);\n target.createFolder = files.createFolder.bind(files);\n target.updateFolder = files.updateFolder.bind(files);\n target.deleteFolder = files.deleteFolder.bind(files);\n target.reindexFolder = files.reindexFolder.bind(files);\n target.searchFolder = files.searchFolder.bind(files);\n // Scoped Folders API\n // File Labels API\n target.getFileLabels = files.getFileLabels.bind(files);\n target.getFileLabel = files.getFileLabel.bind(files);\n target.getFileLabelByUuid = files.getFileLabelByUuid.bind(files);\n target.createFileLabel = files.createFileLabel.bind(files);\n target.updateFileLabel = files.updateFileLabel.bind(files);\n target.deleteFileLabel = files.deleteFileLabel.bind(files);\n // File/Folder Sharing API\n target.getFileSharing = files.getFileSharing.bind(files);\n target.updateFileRoles = files.updateFileRoles.bind(files);\n target.removeFileRole = files.removeFileRole.bind(files);\n target.getFolderSharing = files.getFolderSharing.bind(files);\n target.updateFolderRoles = files.updateFolderRoles.bind(files);\n target.removeFolderRole = files.removeFolderRole.bind(files);\n // Batch Sharing API\n target.updateFileSharing = files.updateFileSharing.bind(files);\n target.updateFolderSharing = files.updateFolderSharing.bind(files);\n // Public Sharing API\n target.getPublicFile = files.getPublicFile.bind(files);\n target.getPublicFolder = files.getPublicFolder.bind(files);\n target.getPublicFolderFiles = files.getPublicFolderFiles.bind(files);\n}\n","import { EventsApi } from '../../api';\n\nexport interface EventsBindings {\n // Event Rules API\n getEventRules: EventsApi['getEventRules'];\n getAvailableActions: EventsApi['getAvailableActions'];\n searchEventRules: EventsApi['searchEventRules'];\n getEventRule: EventsApi['getEventRule'];\n createEventRule: EventsApi['createEventRule'];\n updateEventRule: EventsApi['updateEventRule'];\n deleteEventRule: EventsApi['deleteEventRule'];\n reorderEventRules: EventsApi['reorderEventRules'];\n getWebhookLogs: EventsApi['getWebhookLogs'];\n getRuleExecutions: EventsApi['getRuleExecutions'];\n\n // Routines API\n getRoutines: EventsApi['getRoutines'];\n getRoutine: EventsApi['getRoutine'];\n createRoutine: EventsApi['createRoutine'];\n updateRoutine: EventsApi['updateRoutine'];\n deleteRoutine: EventsApi['deleteRoutine'];\n runRoutine: EventsApi['runRoutine'];\n getRoutineRuns: EventsApi['getRoutineRuns'];\n resetRoutineRuns: EventsApi['resetRoutineRuns'];\n previewSchedule: EventsApi['previewSchedule'];\n}\n\nexport function bindEventsMethods(target: EventsBindings, events: EventsApi): void {\n // Event Rules API\n target.getEventRules = events.getEventRules.bind(events);\n target.getAvailableActions = events.getAvailableActions.bind(events);\n target.searchEventRules = events.searchEventRules.bind(events);\n target.getEventRule = events.getEventRule.bind(events);\n target.createEventRule = events.createEventRule.bind(events);\n target.updateEventRule = events.updateEventRule.bind(events);\n target.deleteEventRule = events.deleteEventRule.bind(events);\n target.reorderEventRules = events.reorderEventRules.bind(events);\n target.getWebhookLogs = events.getWebhookLogs.bind(events);\n target.getRuleExecutions = events.getRuleExecutions.bind(events);\n\n // Routines API\n target.getRoutines = events.getRoutines.bind(events);\n target.getRoutine = events.getRoutine.bind(events);\n target.createRoutine = events.createRoutine.bind(events);\n target.updateRoutine = events.updateRoutine.bind(events);\n target.deleteRoutine = events.deleteRoutine.bind(events);\n target.runRoutine = events.runRoutine.bind(events);\n target.getRoutineRuns = events.getRoutineRuns.bind(events);\n target.resetRoutineRuns = events.resetRoutineRuns.bind(events);\n target.previewSchedule = events.previewSchedule.bind(events);\n}\n","import { ExperimentsApi } from '../../api';\n\nexport interface ExperimentsBindings {\n getExperiments: ExperimentsApi['getExperiments'];\n getExperiment: ExperimentsApi['getExperiment'];\n createExperiment: ExperimentsApi['createExperiment'];\n updateExperiment: ExperimentsApi['updateExperiment'];\n deleteExperiment: ExperimentsApi['deleteExperiment'];\n createExperimentGroup: ExperimentsApi['createExperimentGroup'];\n updateExperimentGroup: ExperimentsApi['updateExperimentGroup'];\n deleteExperimentGroup: ExperimentsApi['deleteExperimentGroup'];\n getExperimentStats: ExperimentsApi['getExperimentStats'];\n getMemberExperiments: ExperimentsApi['getMemberExperiments'];\n createExperimentAssignment: ExperimentsApi['createExperimentAssignment'];\n updateExperimentAssignment: ExperimentsApi['updateExperimentAssignment'];\n deleteExperimentAssignment: ExperimentsApi['deleteExperimentAssignment'];\n}\n\nexport function bindExperimentsMethods(\n target: ExperimentsBindings,\n experiments: ExperimentsApi\n): void {\n target.getExperiments = experiments.getExperiments.bind(experiments);\n target.getExperiment = experiments.getExperiment.bind(experiments);\n target.createExperiment = experiments.createExperiment.bind(experiments);\n target.updateExperiment = experiments.updateExperiment.bind(experiments);\n target.deleteExperiment = experiments.deleteExperiment.bind(experiments);\n target.createExperimentGroup = experiments.createExperimentGroup.bind(experiments);\n target.updateExperimentGroup = experiments.updateExperimentGroup.bind(experiments);\n target.deleteExperimentGroup = experiments.deleteExperimentGroup.bind(experiments);\n target.getExperimentStats = experiments.getExperimentStats.bind(experiments);\n target.getMemberExperiments = experiments.getMemberExperiments.bind(experiments);\n target.createExperimentAssignment = experiments.createExperimentAssignment.bind(experiments);\n target.updateExperimentAssignment = experiments.updateExperimentAssignment.bind(experiments);\n target.deleteExperimentAssignment = experiments.deleteExperimentAssignment.bind(experiments);\n}\n","import { WorkflowsApi } from '../../api';\nimport { WorkflowNotesApi } from '../../api/workflow-notes';\nimport { VoiceApi, SupervisorsApi } from '../../api';\n\nexport interface WorkflowsBindings {\n // Workflows API\n getWorkflows: WorkflowsApi['getWorkflows'];\n getWorkflow: WorkflowsApi['getWorkflow'];\n getWorkflowActivity: WorkflowsApi['getWorkflowActivity'];\n getWorkflowsActivityBatch: WorkflowsApi['getWorkflowsActivityBatch'];\n getWorkflowDiagram: WorkflowsApi['getWorkflowDiagram'];\n getWorkflowThumbnailUrl: WorkflowsApi['getWorkflowThumbnailUrl'];\n createWorkflow: WorkflowsApi['createWorkflow'];\n updateWorkflow: WorkflowsApi['updateWorkflow'];\n getWorkflowDeletionPreview: WorkflowsApi['getWorkflowDeletionPreview'];\n deleteWorkflow: WorkflowsApi['deleteWorkflow'];\n archiveWorkflow: WorkflowsApi['archiveWorkflow'];\n unarchiveWorkflow: WorkflowsApi['unarchiveWorkflow'];\n cloneWorkflow: WorkflowsApi['cloneWorkflow'];\n getWorkflowTemplates: WorkflowsApi['getWorkflowTemplates'];\n createWorkflowFromTemplate: WorkflowsApi['createWorkflowFromTemplate'];\n getWorkflowTaskAssignmentStats: WorkflowsApi['getWorkflowTaskAssignmentStats'];\n getTaskChats: WorkflowsApi['getTaskChats'];\n getWorkflowAccessValidation: WorkflowsApi['getWorkflowAccessValidation'];\n getWorkflowConfigValidation: WorkflowsApi['getWorkflowConfigValidation'];\n\n // Workflow Notes API\n getWorkflowNotes: WorkflowNotesApi['getWorkflowNotes'];\n createWorkflowNote: WorkflowNotesApi['createWorkflowNote'];\n updateWorkflowNote: WorkflowNotesApi['updateWorkflowNote'];\n deleteWorkflowNote: WorkflowNotesApi['deleteWorkflowNote'];\n\n // Workflow Contributors API\n getWorkflowContributors: WorkflowsApi['getWorkflowContributors'];\n createWorkflowContributor: WorkflowsApi['createWorkflowContributor'];\n updateWorkflowContributor: WorkflowsApi['updateWorkflowContributor'];\n deleteWorkflowContributor: WorkflowsApi['deleteWorkflowContributor'];\n\n // Workflow Versions API\n getWorkflowVersions: WorkflowsApi['getWorkflowVersions'];\n getWorkflowVersionActive: WorkflowsApi['getWorkflowVersionActive'];\n getWorkflowVersion: WorkflowsApi['getWorkflowVersion'];\n publishWorkflowVersion: WorkflowsApi['publishWorkflowVersion'];\n updateWorkflowVersion: WorkflowsApi['updateWorkflowVersion'];\n activateWorkflowVersion: WorkflowsApi['activateWorkflowVersion'];\n deactivateWorkflowVersion: WorkflowsApi['deactivateWorkflowVersion'];\n diffWorkflowVersions: WorkflowsApi['diffWorkflowVersions'];\n\n // Workspace Builders API\n getWorkspaceBuilders: WorkflowsApi['getWorkspaceBuilders'];\n getWorkspaceBuilder: WorkflowsApi['getWorkspaceBuilder'];\n buildWorkspace: WorkflowsApi['buildWorkspace'];\n validateWorkflowName: WorkflowsApi['validateWorkflowName'];\n\n // Voice API\n previewTTS: VoiceApi['previewTTS'];\n previewThinkingSound: VoiceApi['previewThinkingSound'];\n\n // Supervisors API\n getSupervisors: SupervisorsApi['getSupervisors'];\n getSupervisor: SupervisorsApi['getSupervisor'];\n createSupervisor: SupervisorsApi['createSupervisor'];\n updateSupervisor: SupervisorsApi['updateSupervisor'];\n deleteSupervisor: SupervisorsApi['deleteSupervisor'];\n}\n\nexport function bindWorkflowsMethods(\n target: WorkflowsBindings,\n workflows: WorkflowsApi,\n workflowNotes: WorkflowNotesApi,\n voice: VoiceApi,\n supervisors: SupervisorsApi\n): void {\n // Workflows API\n target.getWorkflows = workflows.getWorkflows.bind(workflows);\n target.getWorkflow = workflows.getWorkflow.bind(workflows);\n target.getWorkflowActivity = workflows.getWorkflowActivity.bind(workflows);\n target.getWorkflowsActivityBatch = workflows.getWorkflowsActivityBatch.bind(workflows);\n target.getWorkflowDiagram = workflows.getWorkflowDiagram.bind(workflows);\n target.getWorkflowThumbnailUrl = workflows.getWorkflowThumbnailUrl.bind(workflows);\n target.createWorkflow = workflows.createWorkflow.bind(workflows);\n target.updateWorkflow = workflows.updateWorkflow.bind(workflows);\n target.getWorkflowDeletionPreview = workflows.getWorkflowDeletionPreview.bind(workflows);\n target.deleteWorkflow = workflows.deleteWorkflow.bind(workflows);\n target.archiveWorkflow = workflows.archiveWorkflow.bind(workflows);\n target.unarchiveWorkflow = workflows.unarchiveWorkflow.bind(workflows);\n target.cloneWorkflow = workflows.cloneWorkflow.bind(workflows);\n target.getWorkflowTemplates = workflows.getWorkflowTemplates.bind(workflows);\n target.createWorkflowFromTemplate = workflows.createWorkflowFromTemplate.bind(workflows);\n target.getWorkflowTaskAssignmentStats = workflows.getWorkflowTaskAssignmentStats.bind(workflows);\n target.getTaskChats = workflows.getTaskChats.bind(workflows);\n target.getWorkflowAccessValidation = workflows.getWorkflowAccessValidation.bind(workflows);\n target.getWorkflowConfigValidation = workflows.getWorkflowConfigValidation.bind(workflows);\n\n // Workflow Notes API\n target.getWorkflowNotes = workflowNotes.getWorkflowNotes.bind(workflowNotes);\n target.createWorkflowNote = workflowNotes.createWorkflowNote.bind(workflowNotes);\n target.updateWorkflowNote = workflowNotes.updateWorkflowNote.bind(workflowNotes);\n target.deleteWorkflowNote = workflowNotes.deleteWorkflowNote.bind(workflowNotes);\n\n // Workflow Contributors API\n target.getWorkflowContributors = workflows.getWorkflowContributors.bind(workflows);\n target.createWorkflowContributor = workflows.createWorkflowContributor.bind(workflows);\n target.updateWorkflowContributor = workflows.updateWorkflowContributor.bind(workflows);\n target.deleteWorkflowContributor = workflows.deleteWorkflowContributor.bind(workflows);\n\n // Workflow Versions API\n target.getWorkflowVersions = workflows.getWorkflowVersions.bind(workflows);\n target.getWorkflowVersionActive = workflows.getWorkflowVersionActive.bind(workflows);\n target.getWorkflowVersion = workflows.getWorkflowVersion.bind(workflows);\n target.publishWorkflowVersion = workflows.publishWorkflowVersion.bind(workflows);\n target.updateWorkflowVersion = workflows.updateWorkflowVersion.bind(workflows);\n target.activateWorkflowVersion = workflows.activateWorkflowVersion.bind(workflows);\n target.deactivateWorkflowVersion = workflows.deactivateWorkflowVersion.bind(workflows);\n target.diffWorkflowVersions = workflows.diffWorkflowVersions.bind(workflows);\n\n // Workspace Builders API\n target.getWorkspaceBuilders = workflows.getWorkspaceBuilders.bind(workflows);\n target.getWorkspaceBuilder = workflows.getWorkspaceBuilder.bind(workflows);\n target.buildWorkspace = workflows.buildWorkspace.bind(workflows);\n target.validateWorkflowName = workflows.validateWorkflowName.bind(workflows);\n\n // Voice API\n target.previewTTS = voice.previewTTS.bind(voice);\n target.previewThinkingSound = voice.previewThinkingSound.bind(voice);\n\n // Supervisors API\n target.getSupervisors = supervisors.getSupervisors.bind(supervisors);\n target.getSupervisor = supervisors.getSupervisor.bind(supervisors);\n target.createSupervisor = supervisors.createSupervisor.bind(supervisors);\n target.updateSupervisor = supervisors.updateSupervisor.bind(supervisors);\n target.deleteSupervisor = supervisors.deleteSupervisor.bind(supervisors);\n}\n","import { CalendarsApi, MilestonesApi } from '../../api';\n\nexport interface CalendarsBindings {\n // Calendars API\n getCalendars: CalendarsApi['getCalendars'];\n getCalendar: CalendarsApi['getCalendar'];\n createCalendar: CalendarsApi['createCalendar'];\n updateCalendar: CalendarsApi['updateCalendar'];\n deleteCalendar: CalendarsApi['deleteCalendar'];\n getCalendarSchedules: CalendarsApi['getCalendarSchedules'];\n createCalendarSchedule: CalendarsApi['createCalendarSchedule'];\n updateCalendarSchedule: CalendarsApi['updateCalendarSchedule'];\n deleteCalendarSchedule: CalendarsApi['deleteCalendarSchedule'];\n checkAvailability: CalendarsApi['checkAvailability'];\n getAvailableSlots: CalendarsApi['getAvailableSlots'];\n getCalendarEvents: CalendarsApi['getCalendarEvents'];\n getCalendarEvent: CalendarsApi['getCalendarEvent'];\n createCalendarEvent: CalendarsApi['createCalendarEvent'];\n updateCalendarEvent: CalendarsApi['updateCalendarEvent'];\n cancelCalendarEvent: CalendarsApi['cancelCalendarEvent'];\n deleteCalendarEvent: CalendarsApi['deleteCalendarEvent'];\n updateEventAttendee: CalendarsApi['updateEventAttendee'];\n getCalendarEventTypes: CalendarsApi['getEventTypes'];\n getCalendarEventType: CalendarsApi['getEventType'];\n createCalendarEventType: CalendarsApi['createEventType'];\n updateCalendarEventType: CalendarsApi['updateEventType'];\n deleteCalendarEventType: CalendarsApi['deleteEventType'];\n generateICalToken: CalendarsApi['generateICalToken'];\n revokeICalToken: CalendarsApi['revokeICalToken'];\n getICalFeedUrl: CalendarsApi['getICalFeedUrl'];\n getGoogleCalendarStatus: CalendarsApi['getGoogleCalendarStatus'];\n listGoogleCalendars: CalendarsApi['listGoogleCalendars'];\n linkCalendarToGoogle: CalendarsApi['linkCalendarToGoogle'];\n unlinkCalendarFromGoogle: CalendarsApi['unlinkCalendarFromGoogle'];\n syncCalendarWithGoogle: CalendarsApi['syncCalendarWithGoogle'];\n\n // Milestones API\n getMilestones: MilestonesApi['getMilestones'];\n getMilestone: MilestonesApi['getMilestone'];\n createMilestone: MilestonesApi['createMilestone'];\n updateMilestone: MilestonesApi['updateMilestone'];\n deleteMilestone: MilestonesApi['deleteMilestone'];\n}\n\nexport function bindCalendarsMethods(\n target: CalendarsBindings,\n calendars: CalendarsApi,\n milestones: MilestonesApi\n): void {\n // Calendars API\n target.getCalendars = calendars.getCalendars.bind(calendars);\n target.getCalendar = calendars.getCalendar.bind(calendars);\n target.createCalendar = calendars.createCalendar.bind(calendars);\n target.updateCalendar = calendars.updateCalendar.bind(calendars);\n target.deleteCalendar = calendars.deleteCalendar.bind(calendars);\n target.getCalendarSchedules = calendars.getCalendarSchedules.bind(calendars);\n target.createCalendarSchedule = calendars.createCalendarSchedule.bind(calendars);\n target.updateCalendarSchedule = calendars.updateCalendarSchedule.bind(calendars);\n target.deleteCalendarSchedule = calendars.deleteCalendarSchedule.bind(calendars);\n target.checkAvailability = calendars.checkAvailability.bind(calendars);\n target.getAvailableSlots = calendars.getAvailableSlots.bind(calendars);\n target.getCalendarEvents = calendars.getCalendarEvents.bind(calendars);\n target.getCalendarEvent = calendars.getCalendarEvent.bind(calendars);\n target.createCalendarEvent = calendars.createCalendarEvent.bind(calendars);\n target.updateCalendarEvent = calendars.updateCalendarEvent.bind(calendars);\n target.cancelCalendarEvent = calendars.cancelCalendarEvent.bind(calendars);\n target.deleteCalendarEvent = calendars.deleteCalendarEvent.bind(calendars);\n target.updateEventAttendee = calendars.updateEventAttendee.bind(calendars);\n target.getCalendarEventTypes = calendars.getEventTypes.bind(calendars);\n target.getCalendarEventType = calendars.getEventType.bind(calendars);\n target.createCalendarEventType = calendars.createEventType.bind(calendars);\n target.updateCalendarEventType = calendars.updateEventType.bind(calendars);\n target.deleteCalendarEventType = calendars.deleteEventType.bind(calendars);\n target.generateICalToken = calendars.generateICalToken.bind(calendars);\n target.revokeICalToken = calendars.revokeICalToken.bind(calendars);\n target.getICalFeedUrl = calendars.getICalFeedUrl.bind(calendars);\n target.getGoogleCalendarStatus = calendars.getGoogleCalendarStatus.bind(calendars);\n target.listGoogleCalendars = calendars.listGoogleCalendars.bind(calendars);\n target.linkCalendarToGoogle = calendars.linkCalendarToGoogle.bind(calendars);\n target.unlinkCalendarFromGoogle = calendars.unlinkCalendarFromGoogle.bind(calendars);\n target.syncCalendarWithGoogle = calendars.syncCalendarWithGoogle.bind(calendars);\n\n // Milestones API\n target.getMilestones = milestones.getMilestones.bind(milestones);\n target.getMilestone = milestones.getMilestone.bind(milestones);\n target.createMilestone = milestones.createMilestone.bind(milestones);\n target.updateMilestone = milestones.updateMilestone.bind(milestones);\n target.deleteMilestone = milestones.deleteMilestone.bind(milestones);\n}\n","import { PhoneNumbersApi, InboxesApi, NotificationRulesApi } from '../../api';\n\nexport interface CommunicationsBindings {\n // Phone Numbers API\n getPhoneNumbers: PhoneNumbersApi['getPhoneNumbers'];\n getAvailablePhoneNumbers: PhoneNumbersApi['getAvailablePhoneNumbers'];\n requestPhoneNumber: PhoneNumbersApi['requestPhoneNumber'];\n getPhoneNumber: PhoneNumbersApi['getPhoneNumber'];\n createPhoneNumber: PhoneNumbersApi['createPhoneNumber'];\n updatePhoneNumber: PhoneNumbersApi['updatePhoneNumber'];\n getArchiveBlockers: PhoneNumbersApi['getArchiveBlockers'];\n archivePhoneNumber: PhoneNumbersApi['archivePhoneNumber'];\n getPhoneNumberCalls: PhoneNumbersApi['getPhoneNumberCalls'];\n getPhoneNumberMessages: PhoneNumbersApi['getPhoneNumberMessages'];\n getPhoneNumberVoicemails: PhoneNumbersApi['getPhoneNumberVoicemails'];\n fetchVoicemailAudio: PhoneNumbersApi['fetchVoicemailAudio'];\n updateVoicemailStatus: PhoneNumbersApi['updateVoicemailStatus'];\n releasePhoneNumber: PhoneNumbersApi['releasePhoneNumber'];\n getLinkablePhones: PhoneNumbersApi['getLinkablePhones'];\n linkPhoneNumber: PhoneNumbersApi['linkPhoneNumber'];\n\n // Inboxes API\n getInboxes: InboxesApi['getInboxes'];\n getInbox: InboxesApi['getInbox'];\n createInbox: InboxesApi['createInbox'];\n updateInbox: InboxesApi['updateInbox'];\n deleteInbox: InboxesApi['deleteInbox'];\n getInboxEmails: InboxesApi['getInboxEmails'];\n getInboxEmail: InboxesApi['getInboxEmail'];\n markEmailAsRead: InboxesApi['markEmailAsRead'];\n markEmailAsUnread: InboxesApi['markEmailAsUnread'];\n convertEmail: InboxesApi['convertEmail'];\n downloadEmailAttachment: InboxesApi['downloadEmailAttachment'];\n getInboxThreads: InboxesApi['getInboxThreads'];\n getThreadEmails: InboxesApi['getThreadEmails'];\n getChatEmails: InboxesApi['getChatEmails'];\n replyToEmail: InboxesApi['replyToEmail'];\n\n // Notification Rules API\n getNotificationRules: NotificationRulesApi['getNotificationRules'];\n createNotificationRule: NotificationRulesApi['createNotificationRule'];\n updateNotificationRule: NotificationRulesApi['updateNotificationRule'];\n deleteNotificationRule: NotificationRulesApi['deleteNotificationRule'];\n}\n\nexport function bindCommunicationsMethods(\n target: CommunicationsBindings,\n phoneNumbers: PhoneNumbersApi,\n inboxes: InboxesApi,\n notificationRules: NotificationRulesApi\n): void {\n // Phone Numbers API\n target.getPhoneNumbers = phoneNumbers.getPhoneNumbers.bind(phoneNumbers);\n target.getAvailablePhoneNumbers = phoneNumbers.getAvailablePhoneNumbers.bind(phoneNumbers);\n target.requestPhoneNumber = phoneNumbers.requestPhoneNumber.bind(phoneNumbers);\n target.getPhoneNumber = phoneNumbers.getPhoneNumber.bind(phoneNumbers);\n target.createPhoneNumber = phoneNumbers.createPhoneNumber.bind(phoneNumbers);\n target.updatePhoneNumber = phoneNumbers.updatePhoneNumber.bind(phoneNumbers);\n target.getArchiveBlockers = phoneNumbers.getArchiveBlockers.bind(phoneNumbers);\n target.archivePhoneNumber = phoneNumbers.archivePhoneNumber.bind(phoneNumbers);\n target.getPhoneNumberCalls = phoneNumbers.getPhoneNumberCalls.bind(phoneNumbers);\n target.getPhoneNumberMessages = phoneNumbers.getPhoneNumberMessages.bind(phoneNumbers);\n target.getPhoneNumberVoicemails = phoneNumbers.getPhoneNumberVoicemails.bind(phoneNumbers);\n target.fetchVoicemailAudio = phoneNumbers.fetchVoicemailAudio.bind(phoneNumbers);\n target.updateVoicemailStatus = phoneNumbers.updateVoicemailStatus.bind(phoneNumbers);\n target.releasePhoneNumber = phoneNumbers.releasePhoneNumber.bind(phoneNumbers);\n target.getLinkablePhones = phoneNumbers.getLinkablePhones.bind(phoneNumbers);\n target.linkPhoneNumber = phoneNumbers.linkPhoneNumber.bind(phoneNumbers);\n\n // Inboxes API\n target.getInboxes = inboxes.getInboxes.bind(inboxes);\n target.getInbox = inboxes.getInbox.bind(inboxes);\n target.createInbox = inboxes.createInbox.bind(inboxes);\n target.updateInbox = inboxes.updateInbox.bind(inboxes);\n target.deleteInbox = inboxes.deleteInbox.bind(inboxes);\n target.getInboxEmails = inboxes.getInboxEmails.bind(inboxes);\n target.getInboxEmail = inboxes.getInboxEmail.bind(inboxes);\n target.markEmailAsRead = inboxes.markEmailAsRead.bind(inboxes);\n target.markEmailAsUnread = inboxes.markEmailAsUnread.bind(inboxes);\n target.convertEmail = inboxes.convertEmail.bind(inboxes);\n target.downloadEmailAttachment = inboxes.downloadEmailAttachment.bind(inboxes);\n target.getInboxThreads = inboxes.getInboxThreads.bind(inboxes);\n target.getThreadEmails = inboxes.getThreadEmails.bind(inboxes);\n target.getChatEmails = inboxes.getChatEmails.bind(inboxes);\n target.replyToEmail = inboxes.replyToEmail.bind(inboxes);\n\n // Notification Rules API\n target.getNotificationRules = notificationRules.getNotificationRules.bind(notificationRules);\n target.createNotificationRule = notificationRules.createNotificationRule.bind(notificationRules);\n target.updateNotificationRule = notificationRules.updateNotificationRule.bind(notificationRules);\n target.deleteNotificationRule = notificationRules.deleteNotificationRule.bind(notificationRules);\n}\n","import {\n ToolkitsApi,\n CustomToolkitsApi,\n McpServersApi,\n TemplatesApi,\n FeaturesApi,\n AIModelsApi,\n} from '../../api';\n\nexport interface ToolkitsBindings {\n // Toolkits API\n getToolkits: ToolkitsApi['getToolkits'];\n getTool: ToolkitsApi['getTool'];\n\n // Templates API\n getTemplateContext: TemplatesApi['getTemplateContext'];\n previewTemplate: TemplatesApi['previewTemplate'];\n getVariableRegistry: TemplatesApi['getVariableRegistry'];\n\n // AI Models API\n getChatModels: AIModelsApi['getChatModels'];\n getRealtimeModels: AIModelsApi['getRealtimeModels'];\n getSTTModels: AIModelsApi['getSTTModels'];\n getTTSModels: AIModelsApi['getTTSModels'];\n getVoiceModels: AIModelsApi['getVoiceModels'];\n getAllModels: AIModelsApi['getAllModels'];\n\n // Custom Toolkits API\n getCustomToolkits: CustomToolkitsApi['getCustomToolkits'];\n getCustomToolkit: CustomToolkitsApi['getCustomToolkit'];\n createCustomToolkit: CustomToolkitsApi['createCustomToolkit'];\n updateCustomToolkit: CustomToolkitsApi['updateCustomToolkit'];\n deleteCustomToolkit: CustomToolkitsApi['deleteCustomToolkit'];\n enableCustomToolkit: CustomToolkitsApi['enableCustomToolkit'];\n disableCustomToolkit: CustomToolkitsApi['disableCustomToolkit'];\n createCustomTool: CustomToolkitsApi['createCustomTool'];\n updateCustomTool: CustomToolkitsApi['updateCustomTool'];\n deleteCustomTool: CustomToolkitsApi['deleteCustomTool'];\n\n // MCP Servers API\n getMcpServers: McpServersApi['getMcpServers'];\n getMcpServer: McpServersApi['getMcpServer'];\n createMcpServer: McpServersApi['createMcpServer'];\n updateMcpServer: McpServersApi['updateMcpServer'];\n deleteMcpServer: McpServersApi['deleteMcpServer'];\n enableMcpServer: McpServersApi['enableMcpServer'];\n disableMcpServer: McpServersApi['disableMcpServer'];\n getMcpServerTools: McpServersApi['getMcpServerTools'];\n getMcpServerResources: McpServersApi['getMcpServerResources'];\n getMcpServerPrompts: McpServersApi['getMcpServerPrompts'];\n testMcpServerConnection: McpServersApi['testMcpServerConnection'];\n discoverOAuthMetadata: McpServersApi['discoverOAuthMetadata'];\n\n // Features API\n getFeatureRegistry: FeaturesApi['getFeatureRegistry'];\n getPublicFeatureRegistry: FeaturesApi['getPublicFeatureRegistry'];\n getFeatureBySlug: FeaturesApi['getFeatureBySlug'];\n}\n\nexport function bindToolkitsMethods(\n target: ToolkitsBindings,\n toolkits: ToolkitsApi,\n templates: TemplatesApi,\n aiModels: AIModelsApi,\n customToolkits: CustomToolkitsApi,\n mcpServers: McpServersApi,\n features: FeaturesApi\n): void {\n // Toolkits API\n target.getToolkits = toolkits.getToolkits.bind(toolkits);\n target.getTool = toolkits.getTool.bind(toolkits);\n\n // Templates API\n target.getTemplateContext = templates.getTemplateContext.bind(templates);\n target.previewTemplate = templates.previewTemplate.bind(templates);\n target.getVariableRegistry = templates.getVariableRegistry.bind(templates);\n\n // AI Models API\n target.getChatModels = aiModels.getChatModels.bind(aiModels);\n target.getRealtimeModels = aiModels.getRealtimeModels.bind(aiModels);\n target.getSTTModels = aiModels.getSTTModels.bind(aiModels);\n target.getTTSModels = aiModels.getTTSModels.bind(aiModels);\n target.getVoiceModels = aiModels.getVoiceModels.bind(aiModels);\n target.getAllModels = aiModels.getAllModels.bind(aiModels);\n\n // Custom Toolkits API\n target.getCustomToolkits = customToolkits.getCustomToolkits.bind(customToolkits);\n target.getCustomToolkit = customToolkits.getCustomToolkit.bind(customToolkits);\n target.createCustomToolkit = customToolkits.createCustomToolkit.bind(customToolkits);\n target.updateCustomToolkit = customToolkits.updateCustomToolkit.bind(customToolkits);\n target.deleteCustomToolkit = customToolkits.deleteCustomToolkit.bind(customToolkits);\n target.enableCustomToolkit = customToolkits.enableCustomToolkit.bind(customToolkits);\n target.disableCustomToolkit = customToolkits.disableCustomToolkit.bind(customToolkits);\n target.createCustomTool = customToolkits.createCustomTool.bind(customToolkits);\n target.updateCustomTool = customToolkits.updateCustomTool.bind(customToolkits);\n target.deleteCustomTool = customToolkits.deleteCustomTool.bind(customToolkits);\n\n // MCP Servers API\n target.getMcpServers = mcpServers.getMcpServers.bind(mcpServers);\n target.getMcpServer = mcpServers.getMcpServer.bind(mcpServers);\n target.createMcpServer = mcpServers.createMcpServer.bind(mcpServers);\n target.updateMcpServer = mcpServers.updateMcpServer.bind(mcpServers);\n target.deleteMcpServer = mcpServers.deleteMcpServer.bind(mcpServers);\n target.enableMcpServer = mcpServers.enableMcpServer.bind(mcpServers);\n target.disableMcpServer = mcpServers.disableMcpServer.bind(mcpServers);\n target.getMcpServerTools = mcpServers.getMcpServerTools.bind(mcpServers);\n target.getMcpServerResources = mcpServers.getMcpServerResources.bind(mcpServers);\n target.getMcpServerPrompts = mcpServers.getMcpServerPrompts.bind(mcpServers);\n target.testMcpServerConnection = mcpServers.testMcpServerConnection.bind(mcpServers);\n target.discoverOAuthMetadata = mcpServers.discoverOAuthMetadata.bind(mcpServers);\n\n // Features API\n target.getFeatureRegistry = features.getFeatureRegistry.bind(features);\n target.getPublicFeatureRegistry = features.getPublicFeatureRegistry.bind(features);\n target.getFeatureBySlug = features.getFeatureBySlug.bind(features);\n}\n","import { ApiKeysApi, SubscriptionsApi, ReportsApi } from '../../api';\n\nexport interface BillingBindings {\n // API Keys API (Workspace-level)\n getApiKeys: ApiKeysApi['getApiKeys'];\n createApiKey: ApiKeysApi['createApiKey'];\n revokeApiKey: ApiKeysApi['revokeApiKey'];\n\n // API Keys API (Global/Account-level)\n getGlobalApiKeys: ApiKeysApi['getGlobalApiKeys'];\n createGlobalApiKey: ApiKeysApi['createGlobalApiKey'];\n revokeGlobalApiKey: ApiKeysApi['revokeGlobalApiKey'];\n\n // Subscriptions API\n getSubscriptions: SubscriptionsApi['getSubscriptions'];\n getWorkspaceSubscriptions: SubscriptionsApi['getWorkspaceSubscriptions'];\n cancelSubscription: SubscriptionsApi['cancelSubscription'];\n reactivateSubscription: SubscriptionsApi['reactivateSubscription'];\n updateSubscription: SubscriptionsApi['updateSubscription'];\n addWorkspaceToSubscription: SubscriptionsApi['addWorkspaceToSubscription'];\n purchaseCredits: SubscriptionsApi['purchaseCredits'];\n\n // Reports API\n getAIUsageReport: ReportsApi['getAIUsageReport'];\n getSMSUsageReport: ReportsApi['getSMSUsageReport'];\n getPhoneUsageReport: ReportsApi['getPhoneUsageReport'];\n getVoiceUsageReport: ReportsApi['getVoiceUsageReport'];\n getMemberUsage: ReportsApi['getMemberUsage'];\n}\n\nexport function bindBillingMethods(\n target: BillingBindings,\n apiKeys: ApiKeysApi,\n subscriptions: SubscriptionsApi,\n reports: ReportsApi\n): void {\n // API Keys API (Workspace-level)\n target.getApiKeys = apiKeys.getApiKeys.bind(apiKeys);\n target.createApiKey = apiKeys.createApiKey.bind(apiKeys);\n target.revokeApiKey = apiKeys.revokeApiKey.bind(apiKeys);\n\n // API Keys API (Global/Account-level)\n target.getGlobalApiKeys = apiKeys.getGlobalApiKeys.bind(apiKeys);\n target.createGlobalApiKey = apiKeys.createGlobalApiKey.bind(apiKeys);\n target.revokeGlobalApiKey = apiKeys.revokeGlobalApiKey.bind(apiKeys);\n\n // Subscriptions API\n target.getSubscriptions = subscriptions.getSubscriptions.bind(subscriptions);\n target.getWorkspaceSubscriptions = subscriptions.getWorkspaceSubscriptions.bind(subscriptions);\n target.cancelSubscription = subscriptions.cancelSubscription.bind(subscriptions);\n target.reactivateSubscription = subscriptions.reactivateSubscription.bind(subscriptions);\n target.updateSubscription = subscriptions.updateSubscription.bind(subscriptions);\n target.addWorkspaceToSubscription = subscriptions.addWorkspaceToSubscription.bind(subscriptions);\n target.purchaseCredits = subscriptions.purchaseCredits.bind(subscriptions);\n\n // Reports API\n target.getAIUsageReport = reports.getAIUsageReport.bind(reports);\n target.getSMSUsageReport = reports.getSMSUsageReport.bind(reports);\n target.getPhoneUsageReport = reports.getPhoneUsageReport.bind(reports);\n target.getVoiceUsageReport = reports.getVoiceUsageReport.bind(reports);\n target.getMemberUsage = reports.getMemberUsage.bind(reports);\n}\n","import { AppsApi, BuildersApi, InquiriesApi, OAuthApi, OAuthConnectionsApi } from '../../api';\n\nexport interface AppsBindings {\n // Apps API\n listApps: AppsApi['listApps'];\n createApp: AppsApi['createApp'];\n getApp: AppsApi['getApp'];\n getAppByClientId: AppsApi['getAppByClientId'];\n updateApp: AppsApi['updateApp'];\n deleteApp: AppsApi['deleteApp'];\n regenerateClientSecret: AppsApi['regenerateClientSecret'];\n\n // Builders API\n listBuilders: BuildersApi['listBuilders'];\n getBuilder: BuildersApi['getBuilder'];\n getBuilderApps: BuildersApi['getBuilderApps'];\n createBuilder: BuildersApi['createBuilder'];\n updateBuilder: BuildersApi['updateBuilder'];\n deleteBuilder: BuildersApi['deleteBuilder'];\n\n // Inquiries API\n createInquiry: InquiriesApi['createInquiry'];\n enrichInquiry: InquiriesApi['enrichInquiry'];\n listInquiries: InquiriesApi['listInquiries'];\n getInquiry: InquiriesApi['getInquiry'];\n updateInquiry: InquiriesApi['updateInquiry'];\n deleteInquiry: InquiriesApi['deleteInquiry'];\n exportInquiriesCsv: InquiriesApi['exportInquiriesCsv'];\n\n // OAuth API (internal OAuth flow)\n authorize: OAuthApi['authorize'];\n exchangeOAuthToken: OAuthApi['exchangeOAuthToken'];\n getAvailableScopes: OAuthApi['getAvailableScopes'];\n\n // OAuth Connections API (third-party providers)\n getOAuthConnectionStatus: OAuthConnectionsApi['getConnectionStatus'];\n getOAuthAuthorizationUrl: OAuthConnectionsApi['getAuthorizationUrl'];\n disconnectOAuthProvider: OAuthConnectionsApi['disconnect'];\n}\n\nexport function bindAppsMethods(\n target: AppsBindings,\n apps: AppsApi,\n builders: BuildersApi,\n inquiries: InquiriesApi,\n oauth: OAuthApi,\n oauthConnections: OAuthConnectionsApi\n): void {\n // Apps API\n target.listApps = apps.listApps.bind(apps);\n target.createApp = apps.createApp.bind(apps);\n target.getApp = apps.getApp.bind(apps);\n target.getAppByClientId = apps.getAppByClientId.bind(apps);\n target.updateApp = apps.updateApp.bind(apps);\n target.deleteApp = apps.deleteApp.bind(apps);\n target.regenerateClientSecret = apps.regenerateClientSecret.bind(apps);\n\n // Builders API\n target.listBuilders = builders.listBuilders.bind(builders);\n target.getBuilder = builders.getBuilder.bind(builders);\n target.getBuilderApps = builders.getBuilderApps.bind(builders);\n target.createBuilder = builders.createBuilder.bind(builders);\n target.updateBuilder = builders.updateBuilder.bind(builders);\n target.deleteBuilder = builders.deleteBuilder.bind(builders);\n\n // Inquiries API\n target.createInquiry = inquiries.createInquiry.bind(inquiries);\n target.enrichInquiry = inquiries.enrichInquiry.bind(inquiries);\n target.listInquiries = inquiries.listInquiries.bind(inquiries);\n target.getInquiry = inquiries.getInquiry.bind(inquiries);\n target.updateInquiry = inquiries.updateInquiry.bind(inquiries);\n target.deleteInquiry = inquiries.deleteInquiry.bind(inquiries);\n target.exportInquiriesCsv = inquiries.exportInquiriesCsv.bind(inquiries);\n\n // OAuth API (internal OAuth flow)\n target.authorize = oauth.authorize.bind(oauth);\n target.exchangeOAuthToken = oauth.exchangeOAuthToken.bind(oauth);\n target.getAvailableScopes = oauth.getAvailableScopes.bind(oauth);\n\n // OAuth Connections API (third-party providers)\n target.getOAuthConnectionStatus = oauthConnections.getConnectionStatus.bind(oauthConnections);\n target.getOAuthAuthorizationUrl = oauthConnections.getAuthorizationUrl.bind(oauthConnections);\n target.disconnectOAuthProvider = oauthConnections.disconnect.bind(oauthConnections);\n}\n","import {\n ConfluenceApi,\n ConnectionSyncApi,\n DiscordBotsApi,\n FhirConnectionsApi,\n HealthieApi,\n HubspotApi,\n AppConnectionsApi,\n MondayIntegrationApi,\n SalesforceApi,\n SlackAppsApi,\n TeamsAppsApi,\n} from '../../api';\n\nexport interface IntegrationsBindings {\n // Monday.com Integration API (workspace-scoped)\n getMondayBoards: MondayIntegrationApi['getBoards'];\n getMondayBoardColumns: MondayIntegrationApi['getBoardColumns'];\n getMondayBoardGroups: MondayIntegrationApi['getBoardGroups'];\n getMondayCurrentUserInfo: MondayIntegrationApi['getCurrentUserInfo'];\n\n // Monday.com Connection API\n configureMondayConnection: MondayIntegrationApi['configureMondayConnection'];\n getMondayConnectionStatus: MondayIntegrationApi['getMondayConnectionStatus'];\n authorizeMondayConnection: MondayIntegrationApi['authorizeMondayConnection'];\n testMondayConnection: MondayIntegrationApi['testMondayConnection'];\n disconnectMondayConnection: MondayIntegrationApi['disconnectMondayConnection'];\n disableMondayConnection: MondayIntegrationApi['disableMondayConnection'];\n enableMondayConnection: MondayIntegrationApi['enableMondayConnection'];\n deleteMondayConnection: MondayIntegrationApi['deleteMondayConnection'];\n getMondayConnectionBoards: MondayIntegrationApi['getMondayConnectionBoards'];\n getMondayConnectionBoardColumns: MondayIntegrationApi['getMondayConnectionBoardColumns'];\n getMondayConnectionBoardGroups: MondayIntegrationApi['getMondayConnectionBoardGroups'];\n getMondaySyncConfig: MondayIntegrationApi['getMondaySyncConfig'];\n updateMondaySyncConfig: MondayIntegrationApi['updateMondaySyncConfig'];\n getLinkedMondayMembers: MondayIntegrationApi['getLinkedMondayMembers'];\n getMondayReconciliationMatches: MondayIntegrationApi['getMondayReconciliationMatches'];\n linkMemberToMonday: MondayIntegrationApi['linkMemberToMonday'];\n bulkLinkMembersToMonday: MondayIntegrationApi['bulkLinkMembersToMonday'];\n unlinkMemberFromMonday: MondayIntegrationApi['unlinkMemberFromMonday'];\n getLinkedRecords: MondayIntegrationApi['getLinkedRecords'];\n importFromBoard: MondayIntegrationApi['importFromBoard'];\n autoCreateDataTypeFromBoard: MondayIntegrationApi['autoCreateDataTypeFromBoard'];\n\n // Discord Bots API\n getDiscordBots: DiscordBotsApi['getDiscordBots'];\n getDiscordBot: DiscordBotsApi['getDiscordBot'];\n getDiscordBotByUuid: DiscordBotsApi['getDiscordBotByUuid'];\n createDiscordBot: DiscordBotsApi['createDiscordBot'];\n updateDiscordBot: DiscordBotsApi['updateDiscordBot'];\n deleteDiscordBot: DiscordBotsApi['deleteDiscordBot'];\n registerDiscordSlashCommands: DiscordBotsApi['registerSlashCommands'];\n registerLinkedRolesMetadata: DiscordBotsApi['registerLinkedRolesMetadata'];\n getDiscordThreads: DiscordBotsApi['getDiscordThreads'];\n getDiscordGuilds: DiscordBotsApi['getDiscordGuilds'];\n getDiscordBotAccounts: DiscordBotsApi['getDiscordBotAccounts'];\n getMyCredentials: DiscordBotsApi['getMyCredentials'];\n unlinkCredential: DiscordBotsApi['unlinkCredential'];\n\n // Slack Apps API\n getSlackApps: SlackAppsApi['getSlackApps'];\n getSlackApp: SlackAppsApi['getSlackApp'];\n createSlackApp: SlackAppsApi['createSlackApp'];\n updateSlackApp: SlackAppsApi['updateSlackApp'];\n deleteSlackApp: SlackAppsApi['deleteSlackApp'];\n getSlackThreads: SlackAppsApi['getSlackThreads'];\n getSlackInstallations: SlackAppsApi['getSlackInstallations'];\n getSlackAppAccounts: SlackAppsApi['getSlackAppAccounts'];\n\n // Teams Apps API\n getTeamsApps: TeamsAppsApi['getTeamsApps'];\n getTeamsApp: TeamsAppsApi['getTeamsApp'];\n createTeamsApp: TeamsAppsApi['createTeamsApp'];\n updateTeamsApp: TeamsAppsApi['updateTeamsApp'];\n deleteTeamsApp: TeamsAppsApi['deleteTeamsApp'];\n getTeamsConversations: TeamsAppsApi['getTeamsConversations'];\n getTeamsInstallations: TeamsAppsApi['getTeamsInstallations'];\n getTeamsAppAccounts: TeamsAppsApi['getTeamsAppAccounts'];\n\n // FHIR Connections API\n getFhirConnections: FhirConnectionsApi['getFhirConnections'];\n getFhirConnection: FhirConnectionsApi['getFhirConnection'];\n getFhirConnectionByUuid: FhirConnectionsApi['getFhirConnectionByUuid'];\n createFhirConnection: FhirConnectionsApi['createFhirConnection'];\n updateFhirConnection: FhirConnectionsApi['updateFhirConnection'];\n deleteFhirConnection: FhirConnectionsApi['deleteFhirConnection'];\n testFhirConnection: FhirConnectionsApi['testFhirConnection'];\n fhirSearchPatients: FhirConnectionsApi['fhirSearchPatients'];\n fhirSearchPractitioners: FhirConnectionsApi['fhirSearchPractitioners'];\n fhirSearchLocations: FhirConnectionsApi['fhirSearchLocations'];\n fhirFetchCareTeam: FhirConnectionsApi['fhirFetchCareTeam'];\n fhirFetchEncounters: FhirConnectionsApi['fhirFetchEncounters'];\n fhirCreateEncounter: FhirConnectionsApi['fhirCreateEncounter'];\n fhirListLinkedMembers: FhirConnectionsApi['fhirListLinkedMembers'];\n fhirLinkMember: FhirConnectionsApi['fhirLinkMember'];\n fhirUnlinkMember: FhirConnectionsApi['fhirUnlinkMember'];\n fhirSyncMember: FhirConnectionsApi['fhirSyncMember'];\n fhirImportPatient: FhirConnectionsApi['fhirImportPatient'];\n fhirCsvImportInspect: FhirConnectionsApi['fhirCsvImportInspect'];\n fhirGetCsvImportSettings: FhirConnectionsApi['fhirGetCsvImportSettings'];\n fhirUpdateCsvImportSettings: FhirConnectionsApi['fhirUpdateCsvImportSettings'];\n fhirCsvImportApply: FhirConnectionsApi['fhirCsvImportApply'];\n fhirGetCsvImportRuns: FhirConnectionsApi['fhirGetCsvImportRuns'];\n fhirGetCsvImportRunItems: FhirConnectionsApi['fhirGetCsvImportRunItems'];\n fhirGetEncounterSyncStatus: FhirConnectionsApi['fhirGetEncounterSyncStatus'];\n fhirUpdateEncounterSync: FhirConnectionsApi['fhirUpdateEncounterSync'];\n fhirRunEncounterSync: FhirConnectionsApi['fhirRunEncounterSync'];\n fhirGetEncounterSyncRuns: FhirConnectionsApi['fhirGetEncounterSyncRuns'];\n fhirRefreshEncounterPatient: FhirConnectionsApi['fhirRefreshEncounterPatient'];\n fhirBackfillEncounterSync: FhirConnectionsApi['fhirBackfillEncounterSync'];\n\n // Healthie API\n configureHealthie: HealthieApi['configureHealthie'];\n getHealthieStatus: HealthieApi['getHealthieStatus'];\n listHealthieProviders: HealthieApi['listHealthieProviders'];\n linkCalendarToHealthie: HealthieApi['linkCalendarToHealthie'];\n unlinkCalendarFromHealthie: HealthieApi['unlinkCalendarFromHealthie'];\n syncCalendarWithHealthie: HealthieApi['syncCalendarWithHealthie'];\n getLinkedHealthieMembers: HealthieApi['getLinkedHealthieMembers'];\n getHealthieReconciliationMatches: HealthieApi['getHealthieReconciliationMatches'];\n linkMemberToHealthie: HealthieApi['linkMemberToHealthie'];\n unlinkMemberFromHealthie: HealthieApi['unlinkMemberFromHealthie'];\n listHealthieAppointmentTypes: HealthieApi['listHealthieAppointmentTypes'];\n listHealthiePatients: HealthieApi['listHealthiePatients'];\n getHealthieAvailableSlots: HealthieApi['getHealthieAvailableSlots'];\n bookHealthieAppointment: HealthieApi['bookHealthieAppointment'];\n\n // Confluence API\n configureConfluence: ConfluenceApi['configureConfluence'];\n startConfluenceOAuth: ConfluenceApi['startConfluenceOAuth'];\n getConfluenceStatus: ConfluenceApi['getConfluenceStatus'];\n disconnectConfluence: ConfluenceApi['disconnectConfluence'];\n disableConfluence: ConfluenceApi['disableConfluence'];\n enableConfluence: ConfluenceApi['enableConfluence'];\n deleteConfluence: ConfluenceApi['deleteConfluence'];\n listConfluenceSpaces: ConfluenceApi['listConfluenceSpaces'];\n listConfluencePages: ConfluenceApi['listConfluencePages'];\n\n // Salesforce API\n configureSalesforce: SalesforceApi['configureSalesforce'];\n startSalesforceOAuth: SalesforceApi['startSalesforceOAuth'];\n getSalesforceStatus: SalesforceApi['getSalesforceStatus'];\n disconnectSalesforce: SalesforceApi['disconnectSalesforce'];\n disableSalesforce: SalesforceApi['disableSalesforce'];\n enableSalesforce: SalesforceApi['enableSalesforce'];\n deleteSalesforce: SalesforceApi['deleteSalesforce'];\n getSalesforceReconciliationMatches: SalesforceApi['getSalesforceReconciliationMatches'];\n linkMemberToSalesforce: SalesforceApi['linkMemberToSalesforce'];\n bulkLinkMembersToSalesforce: SalesforceApi['bulkLinkMembersToSalesforce'];\n unlinkMemberFromSalesforce: SalesforceApi['unlinkMemberFromSalesforce'];\n getLinkedSalesforceMembers: SalesforceApi['getLinkedSalesforceMembers'];\n getSalesforceSyncConfig: SalesforceApi['getSalesforceSyncConfig'];\n updateSalesforceSyncConfig: SalesforceApi['updateSalesforceSyncConfig'];\n describeSalesforceObject: SalesforceApi['describeSalesforceObject'];\n searchSalesforceRecords: SalesforceApi['searchSalesforceRecords'];\n importSalesforceMembers: SalesforceApi['importSalesforceMembers'];\n\n // HubSpot API\n configureHubspot: HubspotApi['configureHubspot'];\n startHubspotOAuth: HubspotApi['startHubspotOAuth'];\n getHubspotStatus: HubspotApi['getHubspotStatus'];\n disconnectHubspot: HubspotApi['disconnectHubspot'];\n disableHubspot: HubspotApi['disableHubspot'];\n enableHubspot: HubspotApi['enableHubspot'];\n deleteHubspot: HubspotApi['deleteHubspot'];\n getHubspotReconciliationMatches: HubspotApi['getHubspotReconciliationMatches'];\n linkMemberToHubspot: HubspotApi['linkMemberToHubspot'];\n bulkLinkMembersToHubspot: HubspotApi['bulkLinkMembersToHubspot'];\n unlinkMemberFromHubspot: HubspotApi['unlinkMemberFromHubspot'];\n getLinkedHubspotMembers: HubspotApi['getLinkedHubspotMembers'];\n searchHubspotRecords: HubspotApi['searchHubspotRecords'];\n importHubspotMembers: HubspotApi['importHubspotMembers'];\n getHubspotContactProperties: HubspotApi['getHubspotContactProperties'];\n getHubspotManagedRules: HubspotApi['getHubspotManagedRules'];\n getHubspotSyncLogs: HubspotApi['getHubspotSyncLogs'];\n getHubspotTransformPresets: HubspotApi['getHubspotTransformPresets'];\n\n // Connection Sync API (generic, works with any sync-capable connection)\n getConnectionSyncCapabilities: ConnectionSyncApi['getConnectionSyncCapabilities'];\n getConnectionSyncConfig: ConnectionSyncApi['getConnectionSyncConfig'];\n updateConnectionSyncConfig: ConnectionSyncApi['updateConnectionSyncConfig'];\n getConnectionSyncCheckpoint: ConnectionSyncApi['getConnectionSyncCheckpoint'];\n startSyncRun: ConnectionSyncApi['startSyncRun'];\n getSyncRuns: ConnectionSyncApi['getSyncRuns'];\n getSyncRunItems: ConnectionSyncApi['getSyncRunItems'];\n getMemberSyncSummary: ConnectionSyncApi['getMemberSyncSummary'];\n clearConnectionMemberExclusion: ConnectionSyncApi['clearConnectionMemberExclusion'];\n\n // App Connections API\n listAvailableAppConnections: AppConnectionsApi['listAvailableAppConnections'];\n listAppConnections: AppConnectionsApi['listAppConnections'];\n enablePlatformApp: AppConnectionsApi['enablePlatformApp'];\n getPlatformApp: AppConnectionsApi['getPlatformApp'];\n updatePlatformApp: AppConnectionsApi['updatePlatformApp'];\n deletePlatformApp: AppConnectionsApi['deletePlatformApp'];\n listConnectionMemberFieldKeys: AppConnectionsApi['listConnectionMemberFieldKeys'];\n}\n\nexport function bindIntegrationsMethods(\n target: IntegrationsBindings,\n mondayIntegration: MondayIntegrationApi,\n discordBots: DiscordBotsApi,\n slackApps: SlackAppsApi,\n teamsApps: TeamsAppsApi,\n fhirConnections: FhirConnectionsApi,\n healthie: HealthieApi,\n salesforce: SalesforceApi,\n hubspot: HubspotApi,\n appConnections: AppConnectionsApi,\n connectionSync: ConnectionSyncApi,\n confluence: ConfluenceApi\n): void {\n // Monday.com Integration API\n target.getMondayBoards = mondayIntegration.getBoards.bind(mondayIntegration);\n target.getMondayBoardColumns = mondayIntegration.getBoardColumns.bind(mondayIntegration);\n target.getMondayBoardGroups = mondayIntegration.getBoardGroups.bind(mondayIntegration);\n target.getMondayCurrentUserInfo = mondayIntegration.getCurrentUserInfo.bind(mondayIntegration);\n\n // Monday.com Connection API\n target.configureMondayConnection =\n mondayIntegration.configureMondayConnection.bind(mondayIntegration);\n target.getMondayConnectionStatus =\n mondayIntegration.getMondayConnectionStatus.bind(mondayIntegration);\n target.authorizeMondayConnection =\n mondayIntegration.authorizeMondayConnection.bind(mondayIntegration);\n target.testMondayConnection = mondayIntegration.testMondayConnection.bind(mondayIntegration);\n target.disconnectMondayConnection =\n mondayIntegration.disconnectMondayConnection.bind(mondayIntegration);\n target.disableMondayConnection =\n mondayIntegration.disableMondayConnection.bind(mondayIntegration);\n target.enableMondayConnection = mondayIntegration.enableMondayConnection.bind(mondayIntegration);\n target.deleteMondayConnection = mondayIntegration.deleteMondayConnection.bind(mondayIntegration);\n target.getMondayConnectionBoards =\n mondayIntegration.getMondayConnectionBoards.bind(mondayIntegration);\n target.getMondayConnectionBoardColumns =\n mondayIntegration.getMondayConnectionBoardColumns.bind(mondayIntegration);\n target.getMondayConnectionBoardGroups =\n mondayIntegration.getMondayConnectionBoardGroups.bind(mondayIntegration);\n target.getMondaySyncConfig = mondayIntegration.getMondaySyncConfig.bind(mondayIntegration);\n target.updateMondaySyncConfig = mondayIntegration.updateMondaySyncConfig.bind(mondayIntegration);\n target.getLinkedMondayMembers = mondayIntegration.getLinkedMondayMembers.bind(mondayIntegration);\n target.getMondayReconciliationMatches =\n mondayIntegration.getMondayReconciliationMatches.bind(mondayIntegration);\n target.linkMemberToMonday = mondayIntegration.linkMemberToMonday.bind(mondayIntegration);\n target.bulkLinkMembersToMonday =\n mondayIntegration.bulkLinkMembersToMonday.bind(mondayIntegration);\n target.unlinkMemberFromMonday = mondayIntegration.unlinkMemberFromMonday.bind(mondayIntegration);\n target.getLinkedRecords = mondayIntegration.getLinkedRecords.bind(mondayIntegration);\n target.importFromBoard = mondayIntegration.importFromBoard.bind(mondayIntegration);\n target.autoCreateDataTypeFromBoard =\n mondayIntegration.autoCreateDataTypeFromBoard.bind(mondayIntegration);\n\n // Discord Bots API\n target.getDiscordBots = discordBots.getDiscordBots.bind(discordBots);\n target.getDiscordBot = discordBots.getDiscordBot.bind(discordBots);\n target.getDiscordBotByUuid = discordBots.getDiscordBotByUuid.bind(discordBots);\n target.createDiscordBot = discordBots.createDiscordBot.bind(discordBots);\n target.updateDiscordBot = discordBots.updateDiscordBot.bind(discordBots);\n target.deleteDiscordBot = discordBots.deleteDiscordBot.bind(discordBots);\n target.registerDiscordSlashCommands = discordBots.registerSlashCommands.bind(discordBots);\n target.registerLinkedRolesMetadata = discordBots.registerLinkedRolesMetadata.bind(discordBots);\n target.getDiscordThreads = discordBots.getDiscordThreads.bind(discordBots);\n target.getDiscordGuilds = discordBots.getDiscordGuilds.bind(discordBots);\n target.getDiscordBotAccounts = discordBots.getDiscordBotAccounts.bind(discordBots);\n target.getMyCredentials = discordBots.getMyCredentials.bind(discordBots);\n target.unlinkCredential = discordBots.unlinkCredential.bind(discordBots);\n\n // Slack Apps API\n target.getSlackApps = slackApps.getSlackApps.bind(slackApps);\n target.getSlackApp = slackApps.getSlackApp.bind(slackApps);\n target.createSlackApp = slackApps.createSlackApp.bind(slackApps);\n target.updateSlackApp = slackApps.updateSlackApp.bind(slackApps);\n target.deleteSlackApp = slackApps.deleteSlackApp.bind(slackApps);\n target.getSlackThreads = slackApps.getSlackThreads.bind(slackApps);\n target.getSlackInstallations = slackApps.getSlackInstallations.bind(slackApps);\n target.getSlackAppAccounts = slackApps.getSlackAppAccounts.bind(slackApps);\n\n // Teams Apps API\n target.getTeamsApps = teamsApps.getTeamsApps.bind(teamsApps);\n target.getTeamsApp = teamsApps.getTeamsApp.bind(teamsApps);\n target.createTeamsApp = teamsApps.createTeamsApp.bind(teamsApps);\n target.updateTeamsApp = teamsApps.updateTeamsApp.bind(teamsApps);\n target.deleteTeamsApp = teamsApps.deleteTeamsApp.bind(teamsApps);\n target.getTeamsConversations = teamsApps.getTeamsConversations.bind(teamsApps);\n target.getTeamsInstallations = teamsApps.getTeamsInstallations.bind(teamsApps);\n target.getTeamsAppAccounts = teamsApps.getTeamsAppAccounts.bind(teamsApps);\n\n // FHIR Connections API\n target.getFhirConnections = fhirConnections.getFhirConnections.bind(fhirConnections);\n target.getFhirConnection = fhirConnections.getFhirConnection.bind(fhirConnections);\n target.getFhirConnectionByUuid = fhirConnections.getFhirConnectionByUuid.bind(fhirConnections);\n target.createFhirConnection = fhirConnections.createFhirConnection.bind(fhirConnections);\n target.updateFhirConnection = fhirConnections.updateFhirConnection.bind(fhirConnections);\n target.deleteFhirConnection = fhirConnections.deleteFhirConnection.bind(fhirConnections);\n target.testFhirConnection = fhirConnections.testFhirConnection.bind(fhirConnections);\n target.fhirSearchPatients = fhirConnections.fhirSearchPatients.bind(fhirConnections);\n target.fhirSearchPractitioners = fhirConnections.fhirSearchPractitioners.bind(fhirConnections);\n target.fhirSearchLocations = fhirConnections.fhirSearchLocations.bind(fhirConnections);\n target.fhirFetchCareTeam = fhirConnections.fhirFetchCareTeam.bind(fhirConnections);\n target.fhirFetchEncounters = fhirConnections.fhirFetchEncounters.bind(fhirConnections);\n target.fhirCreateEncounter = fhirConnections.fhirCreateEncounter.bind(fhirConnections);\n target.fhirListLinkedMembers = fhirConnections.fhirListLinkedMembers.bind(fhirConnections);\n target.fhirLinkMember = fhirConnections.fhirLinkMember.bind(fhirConnections);\n target.fhirUnlinkMember = fhirConnections.fhirUnlinkMember.bind(fhirConnections);\n target.fhirSyncMember = fhirConnections.fhirSyncMember.bind(fhirConnections);\n target.fhirImportPatient = fhirConnections.fhirImportPatient.bind(fhirConnections);\n target.fhirCsvImportInspect = fhirConnections.fhirCsvImportInspect.bind(fhirConnections);\n target.fhirGetCsvImportSettings = fhirConnections.fhirGetCsvImportSettings.bind(fhirConnections);\n target.fhirUpdateCsvImportSettings =\n fhirConnections.fhirUpdateCsvImportSettings.bind(fhirConnections);\n target.fhirCsvImportApply = fhirConnections.fhirCsvImportApply.bind(fhirConnections);\n target.fhirGetCsvImportRuns = fhirConnections.fhirGetCsvImportRuns.bind(fhirConnections);\n target.fhirGetCsvImportRunItems = fhirConnections.fhirGetCsvImportRunItems.bind(fhirConnections);\n target.fhirGetEncounterSyncStatus =\n fhirConnections.fhirGetEncounterSyncStatus.bind(fhirConnections);\n target.fhirUpdateEncounterSync = fhirConnections.fhirUpdateEncounterSync.bind(fhirConnections);\n target.fhirRunEncounterSync = fhirConnections.fhirRunEncounterSync.bind(fhirConnections);\n target.fhirGetEncounterSyncRuns = fhirConnections.fhirGetEncounterSyncRuns.bind(fhirConnections);\n target.fhirRefreshEncounterPatient =\n fhirConnections.fhirRefreshEncounterPatient.bind(fhirConnections);\n target.fhirBackfillEncounterSync =\n fhirConnections.fhirBackfillEncounterSync.bind(fhirConnections);\n\n // Healthie API\n target.configureHealthie = healthie.configureHealthie.bind(healthie);\n target.getHealthieStatus = healthie.getHealthieStatus.bind(healthie);\n target.listHealthieProviders = healthie.listHealthieProviders.bind(healthie);\n target.linkCalendarToHealthie = healthie.linkCalendarToHealthie.bind(healthie);\n target.unlinkCalendarFromHealthie = healthie.unlinkCalendarFromHealthie.bind(healthie);\n target.syncCalendarWithHealthie = healthie.syncCalendarWithHealthie.bind(healthie);\n target.getLinkedHealthieMembers = healthie.getLinkedHealthieMembers.bind(healthie);\n target.getHealthieReconciliationMatches =\n healthie.getHealthieReconciliationMatches.bind(healthie);\n target.linkMemberToHealthie = healthie.linkMemberToHealthie.bind(healthie);\n target.unlinkMemberFromHealthie = healthie.unlinkMemberFromHealthie.bind(healthie);\n target.listHealthieAppointmentTypes = healthie.listHealthieAppointmentTypes.bind(healthie);\n target.listHealthiePatients = healthie.listHealthiePatients.bind(healthie);\n target.getHealthieAvailableSlots = healthie.getHealthieAvailableSlots.bind(healthie);\n target.bookHealthieAppointment = healthie.bookHealthieAppointment.bind(healthie);\n\n // Confluence API\n target.configureConfluence = confluence.configureConfluence.bind(confluence);\n target.startConfluenceOAuth = confluence.startConfluenceOAuth.bind(confluence);\n target.getConfluenceStatus = confluence.getConfluenceStatus.bind(confluence);\n target.disconnectConfluence = confluence.disconnectConfluence.bind(confluence);\n target.disableConfluence = confluence.disableConfluence.bind(confluence);\n target.enableConfluence = confluence.enableConfluence.bind(confluence);\n target.deleteConfluence = confluence.deleteConfluence.bind(confluence);\n target.listConfluenceSpaces = confluence.listConfluenceSpaces.bind(confluence);\n target.listConfluencePages = confluence.listConfluencePages.bind(confluence);\n\n // Salesforce API\n target.configureSalesforce = salesforce.configureSalesforce.bind(salesforce);\n target.startSalesforceOAuth = salesforce.startSalesforceOAuth.bind(salesforce);\n target.getSalesforceStatus = salesforce.getSalesforceStatus.bind(salesforce);\n target.disconnectSalesforce = salesforce.disconnectSalesforce.bind(salesforce);\n target.disableSalesforce = salesforce.disableSalesforce.bind(salesforce);\n target.enableSalesforce = salesforce.enableSalesforce.bind(salesforce);\n target.deleteSalesforce = salesforce.deleteSalesforce.bind(salesforce);\n target.getSalesforceReconciliationMatches =\n salesforce.getSalesforceReconciliationMatches.bind(salesforce);\n target.linkMemberToSalesforce = salesforce.linkMemberToSalesforce.bind(salesforce);\n target.bulkLinkMembersToSalesforce = salesforce.bulkLinkMembersToSalesforce.bind(salesforce);\n target.unlinkMemberFromSalesforce = salesforce.unlinkMemberFromSalesforce.bind(salesforce);\n target.getLinkedSalesforceMembers = salesforce.getLinkedSalesforceMembers.bind(salesforce);\n target.getSalesforceSyncConfig = salesforce.getSalesforceSyncConfig.bind(salesforce);\n target.updateSalesforceSyncConfig = salesforce.updateSalesforceSyncConfig.bind(salesforce);\n target.describeSalesforceObject = salesforce.describeSalesforceObject.bind(salesforce);\n target.searchSalesforceRecords = salesforce.searchSalesforceRecords.bind(salesforce);\n target.importSalesforceMembers = salesforce.importSalesforceMembers.bind(salesforce);\n\n // HubSpot API\n target.configureHubspot = hubspot.configureHubspot.bind(hubspot);\n target.startHubspotOAuth = hubspot.startHubspotOAuth.bind(hubspot);\n target.getHubspotStatus = hubspot.getHubspotStatus.bind(hubspot);\n target.disconnectHubspot = hubspot.disconnectHubspot.bind(hubspot);\n target.disableHubspot = hubspot.disableHubspot.bind(hubspot);\n target.enableHubspot = hubspot.enableHubspot.bind(hubspot);\n target.deleteHubspot = hubspot.deleteHubspot.bind(hubspot);\n target.getHubspotReconciliationMatches = hubspot.getHubspotReconciliationMatches.bind(hubspot);\n target.linkMemberToHubspot = hubspot.linkMemberToHubspot.bind(hubspot);\n target.bulkLinkMembersToHubspot = hubspot.bulkLinkMembersToHubspot.bind(hubspot);\n target.unlinkMemberFromHubspot = hubspot.unlinkMemberFromHubspot.bind(hubspot);\n target.getLinkedHubspotMembers = hubspot.getLinkedHubspotMembers.bind(hubspot);\n target.searchHubspotRecords = hubspot.searchHubspotRecords.bind(hubspot);\n target.importHubspotMembers = hubspot.importHubspotMembers.bind(hubspot);\n target.getHubspotContactProperties = hubspot.getHubspotContactProperties.bind(hubspot);\n target.getHubspotManagedRules = hubspot.getHubspotManagedRules.bind(hubspot);\n target.getHubspotSyncLogs = hubspot.getHubspotSyncLogs.bind(hubspot);\n target.getHubspotTransformPresets = hubspot.getHubspotTransformPresets.bind(hubspot);\n\n // Connection Sync API\n target.getConnectionSyncCapabilities =\n connectionSync.getConnectionSyncCapabilities.bind(connectionSync);\n target.getConnectionSyncConfig = connectionSync.getConnectionSyncConfig.bind(connectionSync);\n target.updateConnectionSyncConfig =\n connectionSync.updateConnectionSyncConfig.bind(connectionSync);\n target.getConnectionSyncCheckpoint =\n connectionSync.getConnectionSyncCheckpoint.bind(connectionSync);\n target.startSyncRun = connectionSync.startSyncRun.bind(connectionSync);\n target.getSyncRuns = connectionSync.getSyncRuns.bind(connectionSync);\n target.getSyncRunItems = connectionSync.getSyncRunItems.bind(connectionSync);\n target.getMemberSyncSummary = connectionSync.getMemberSyncSummary.bind(connectionSync);\n target.clearConnectionMemberExclusion =\n connectionSync.clearConnectionMemberExclusion.bind(connectionSync);\n\n // App Connections API\n target.listAvailableAppConnections =\n appConnections.listAvailableAppConnections.bind(appConnections);\n target.listAppConnections = appConnections.listAppConnections.bind(appConnections);\n target.enablePlatformApp = appConnections.enablePlatformApp.bind(appConnections);\n target.getPlatformApp = appConnections.getPlatformApp.bind(appConnections);\n target.updatePlatformApp = appConnections.updatePlatformApp.bind(appConnections);\n target.deletePlatformApp = appConnections.deletePlatformApp.bind(appConnections);\n target.listConnectionMemberFieldKeys =\n appConnections.listConnectionMemberFieldKeys.bind(appConnections);\n}\n","import { OperatorApi } from '../../api';\n\nexport interface OperatorBindings {\n getOperatorGroups: OperatorApi['getOperatorGroups'];\n getOperatorGroup: OperatorApi['getOperatorGroup'];\n createOperatorGroup: OperatorApi['createOperatorGroup'];\n updateOperatorGroup: OperatorApi['updateOperatorGroup'];\n deleteOperatorGroup: OperatorApi['deleteOperatorGroup'];\n addGroupMember: OperatorApi['addGroupMember'];\n removeGroupMember: OperatorApi['removeGroupMember'];\n getLiveOperators: OperatorApi['getLiveOperators'];\n getPresenceStatus: OperatorApi['getPresenceStatus'];\n disconnectPresence: OperatorApi['disconnectPresence'];\n getOperatorChatMessages: OperatorApi['getOperatorChatMessages'];\n sendOperatorMessage: OperatorApi['sendOperatorMessage'];\n}\n\nexport function bindOperatorMethods(target: OperatorBindings, operatorGroups: OperatorApi): void {\n target.getOperatorGroups = operatorGroups.getOperatorGroups.bind(operatorGroups);\n target.getOperatorGroup = operatorGroups.getOperatorGroup.bind(operatorGroups);\n target.createOperatorGroup = operatorGroups.createOperatorGroup.bind(operatorGroups);\n target.updateOperatorGroup = operatorGroups.updateOperatorGroup.bind(operatorGroups);\n target.deleteOperatorGroup = operatorGroups.deleteOperatorGroup.bind(operatorGroups);\n target.addGroupMember = operatorGroups.addGroupMember.bind(operatorGroups);\n target.removeGroupMember = operatorGroups.removeGroupMember.bind(operatorGroups);\n target.getLiveOperators = operatorGroups.getLiveOperators.bind(operatorGroups);\n target.getPresenceStatus = operatorGroups.getPresenceStatus.bind(operatorGroups);\n target.disconnectPresence = operatorGroups.disconnectPresence.bind(operatorGroups);\n target.getOperatorChatMessages = operatorGroups.getOperatorChatMessages.bind(operatorGroups);\n target.sendOperatorMessage = operatorGroups.sendOperatorMessage.bind(operatorGroups);\n}\n","import { OrgApi } from '../../api';\n\nexport interface OrgBindings {\n listOrgDomains: OrgApi['listOrgDomains'];\n registerOrgDomain: OrgApi['registerOrgDomain'];\n getOrgDomain: OrgApi['getOrgDomain'];\n verifyOrgDomainOwnership: OrgApi['verifyOrgDomainOwnership'];\n deleteOrgDomain: OrgApi['deleteOrgDomain'];\n enableOrgDomainEmail: OrgApi['enableOrgDomainEmail'];\n getOrgDomainEmail: OrgApi['getOrgDomainEmail'];\n verifyOrgDomainEmail: OrgApi['verifyOrgDomainEmail'];\n disableOrgDomainEmail: OrgApi['disableOrgDomainEmail'];\n enableOrgDomainSite: OrgApi['enableOrgDomainSite'];\n getOrgDomainSite: OrgApi['getOrgDomainSite'];\n verifyOrgDomainSite: OrgApi['verifyOrgDomainSite'];\n disableOrgDomainSite: OrgApi['disableOrgDomainSite'];\n getBusinessProfile: OrgApi['getBusinessProfile'];\n updateBusinessProfile: OrgApi['updateBusinessProfile'];\n submitBusinessProfile: OrgApi['submitBusinessProfile'];\n cancelBusinessProfile: OrgApi['cancelBusinessProfile'];\n}\n\nexport function bindOrgMethods(target: OrgBindings, org: OrgApi): void {\n target.listOrgDomains = org.listOrgDomains.bind(org);\n target.registerOrgDomain = org.registerOrgDomain.bind(org);\n target.getOrgDomain = org.getOrgDomain.bind(org);\n target.verifyOrgDomainOwnership = org.verifyOrgDomainOwnership.bind(org);\n target.deleteOrgDomain = org.deleteOrgDomain.bind(org);\n target.enableOrgDomainEmail = org.enableOrgDomainEmail.bind(org);\n target.getOrgDomainEmail = org.getOrgDomainEmail.bind(org);\n target.verifyOrgDomainEmail = org.verifyOrgDomainEmail.bind(org);\n target.disableOrgDomainEmail = org.disableOrgDomainEmail.bind(org);\n target.enableOrgDomainSite = org.enableOrgDomainSite.bind(org);\n target.getOrgDomainSite = org.getOrgDomainSite.bind(org);\n target.verifyOrgDomainSite = org.verifyOrgDomainSite.bind(org);\n target.disableOrgDomainSite = org.disableOrgDomainSite.bind(org);\n target.getBusinessProfile = org.getBusinessProfile.bind(org);\n target.updateBusinessProfile = org.updateBusinessProfile.bind(org);\n target.submitBusinessProfile = org.submitBusinessProfile.bind(org);\n target.cancelBusinessProfile = org.cancelBusinessProfile.bind(org);\n}\n","import { PronunciationsApi } from '../../api';\n\nexport interface PronunciationsBindings {\n getPronunciationEntries: PronunciationsApi['getPronunciationEntries'];\n createPronunciationEntry: PronunciationsApi['createPronunciationEntry'];\n updatePronunciationEntry: PronunciationsApi['updatePronunciationEntry'];\n deletePronunciationEntry: PronunciationsApi['deletePronunciationEntry'];\n exportPronunciationEntries: PronunciationsApi['exportPronunciationEntries'];\n importPronunciationEntries: PronunciationsApi['importPronunciationEntries'];\n getMyPronunciations: PronunciationsApi['getMyPronunciations'];\n createMyPronunciation: PronunciationsApi['createMyPronunciation'];\n updateMyPronunciation: PronunciationsApi['updateMyPronunciation'];\n deleteMyPronunciation: PronunciationsApi['deleteMyPronunciation'];\n suggestPronunciations: PronunciationsApi['suggestPronunciations'];\n getRecommendedVoices: PronunciationsApi['getRecommendedVoices'];\n previewPronunciation: PronunciationsApi['previewPronunciation'];\n}\n\nexport function bindPronunciationsMethods(\n target: PronunciationsBindings,\n pronunciations: PronunciationsApi\n) {\n target.getPronunciationEntries = pronunciations.getPronunciationEntries.bind(pronunciations);\n target.createPronunciationEntry = pronunciations.createPronunciationEntry.bind(pronunciations);\n target.updatePronunciationEntry = pronunciations.updatePronunciationEntry.bind(pronunciations);\n target.deletePronunciationEntry = pronunciations.deletePronunciationEntry.bind(pronunciations);\n target.exportPronunciationEntries =\n pronunciations.exportPronunciationEntries.bind(pronunciations);\n target.importPronunciationEntries =\n pronunciations.importPronunciationEntries.bind(pronunciations);\n target.getMyPronunciations = pronunciations.getMyPronunciations.bind(pronunciations);\n target.createMyPronunciation = pronunciations.createMyPronunciation.bind(pronunciations);\n target.updateMyPronunciation = pronunciations.updateMyPronunciation.bind(pronunciations);\n target.deleteMyPronunciation = pronunciations.deleteMyPronunciation.bind(pronunciations);\n target.suggestPronunciations = pronunciations.suggestPronunciations.bind(pronunciations);\n target.getRecommendedVoices = pronunciations.getRecommendedVoices.bind(pronunciations);\n target.previewPronunciation = pronunciations.previewPronunciation.bind(pronunciations);\n}\n","import { JourneysApi } from '../../api';\n\nexport interface JourneysBindings {\n getJourneys: JourneysApi['getJourneys'];\n getJourney: JourneysApi['getJourney'];\n getJourneyHealth: JourneysApi['getJourneyHealth'];\n createJourney: JourneysApi['createJourney'];\n updateJourney: JourneysApi['updateJourney'];\n archiveJourney: JourneysApi['archiveJourney'];\n createStep: JourneysApi['createStep'];\n updateStep: JourneysApi['updateStep'];\n archiveStep: JourneysApi['archiveStep'];\n createConnection: JourneysApi['createConnection'];\n updateConnection: JourneysApi['updateConnection'];\n deleteConnection: JourneysApi['deleteConnection'];\n createGoal: JourneysApi['createGoal'];\n updateGoal: JourneysApi['updateGoal'];\n deleteGoal: JourneysApi['deleteGoal'];\n getJourneyMembers: JourneysApi['getJourneyMembers'];\n enrollMembers: JourneysApi['enrollMembers'];\n unenrollMembers: JourneysApi['unenrollMembers'];\n reenrollMember: JourneysApi['reenrollMember'];\n deleteEnrollment: JourneysApi['deleteEnrollment'];\n getMemberJourneys: JourneysApi['getMemberJourneys'];\n testRunJourney: JourneysApi['testRunJourney'];\n getJourneyNotes: JourneysApi['getJourneyNotes'];\n createJourneyNote: JourneysApi['createJourneyNote'];\n updateJourneyNote: JourneysApi['updateJourneyNote'];\n deleteJourneyNote: JourneysApi['deleteJourneyNote'];\n}\n\nexport function bindJourneysMethods(target: JourneysBindings, journeys: JourneysApi): void {\n target.getJourneys = journeys.getJourneys.bind(journeys);\n target.getJourney = journeys.getJourney.bind(journeys);\n target.getJourneyHealth = journeys.getJourneyHealth.bind(journeys);\n target.createJourney = journeys.createJourney.bind(journeys);\n target.updateJourney = journeys.updateJourney.bind(journeys);\n target.archiveJourney = journeys.archiveJourney.bind(journeys);\n target.createStep = journeys.createStep.bind(journeys);\n target.updateStep = journeys.updateStep.bind(journeys);\n target.archiveStep = journeys.archiveStep.bind(journeys);\n target.createConnection = journeys.createConnection.bind(journeys);\n target.updateConnection = journeys.updateConnection.bind(journeys);\n target.deleteConnection = journeys.deleteConnection.bind(journeys);\n target.createGoal = journeys.createGoal.bind(journeys);\n target.updateGoal = journeys.updateGoal.bind(journeys);\n target.deleteGoal = journeys.deleteGoal.bind(journeys);\n target.getJourneyMembers = journeys.getJourneyMembers.bind(journeys);\n target.enrollMembers = journeys.enrollMembers.bind(journeys);\n target.unenrollMembers = journeys.unenrollMembers.bind(journeys);\n target.reenrollMember = journeys.reenrollMember.bind(journeys);\n target.deleteEnrollment = journeys.deleteEnrollment.bind(journeys);\n target.getMemberJourneys = journeys.getMemberJourneys.bind(journeys);\n target.testRunJourney = journeys.testRunJourney.bind(journeys);\n target.getJourneyNotes = journeys.getJourneyNotes.bind(journeys);\n target.createJourneyNote = journeys.createJourneyNote.bind(journeys);\n target.updateJourneyNote = journeys.updateJourneyNote.bind(journeys);\n target.deleteJourneyNote = journeys.deleteJourneyNote.bind(journeys);\n}\n","import { QualificationsApi } from '../../api';\n\nexport interface QualificationsBindings {\n getQualifications: QualificationsApi['getQualifications'];\n getQualification: QualificationsApi['getQualification'];\n getOrCreateQualificationForWorkflow: QualificationsApi['getOrCreateQualificationForWorkflow'];\n // Scenarios\n listScenarios: QualificationsApi['listScenarios'];\n createScenario: QualificationsApi['createScenario'];\n getScenario: QualificationsApi['getScenario'];\n updateScenario: QualificationsApi['updateScenario'];\n deleteScenario: QualificationsApi['deleteScenario'];\n // Test chat runs\n listTestChatRuns: QualificationsApi['listTestChatRuns'];\n getTestChatRun: QualificationsApi['getTestChatRun'];\n startTestChatRun: QualificationsApi['startTestChatRun'];\n evaluateTestChatRun: QualificationsApi['evaluateTestChatRun'];\n endTestChatRun: QualificationsApi['endTestChatRun'];\n}\n\nexport function bindQualificationsMethods(\n target: QualificationsBindings,\n qualifications: QualificationsApi\n): void {\n target.getQualifications = qualifications.getQualifications.bind(qualifications);\n target.getQualification = qualifications.getQualification.bind(qualifications);\n target.getOrCreateQualificationForWorkflow =\n qualifications.getOrCreateQualificationForWorkflow.bind(qualifications);\n // Scenarios\n target.listScenarios = qualifications.listScenarios.bind(qualifications);\n target.createScenario = qualifications.createScenario.bind(qualifications);\n target.getScenario = qualifications.getScenario.bind(qualifications);\n target.updateScenario = qualifications.updateScenario.bind(qualifications);\n target.deleteScenario = qualifications.deleteScenario.bind(qualifications);\n // Test chat runs\n target.listTestChatRuns = qualifications.listTestChatRuns.bind(qualifications);\n target.getTestChatRun = qualifications.getTestChatRun.bind(qualifications);\n target.startTestChatRun = qualifications.startTestChatRun.bind(qualifications);\n target.evaluateTestChatRun = qualifications.evaluateTestChatRun.bind(qualifications);\n target.endTestChatRun = qualifications.endTestChatRun.bind(qualifications);\n}\n","import { PersonasApi } from '../../api';\n\nexport interface PersonasBindings {\n listPersonas: PersonasApi['listPersonas'];\n getPersona: PersonasApi['getPersona'];\n createPersona: PersonasApi['createPersona'];\n updatePersona: PersonasApi['updatePersona'];\n deletePersona: PersonasApi['deletePersona'];\n}\n\nexport function bindPersonasMethods(target: PersonasBindings, personas: PersonasApi): void {\n target.listPersonas = personas.listPersonas.bind(personas);\n target.getPersona = personas.getPersona.bind(personas);\n target.createPersona = personas.createPersona.bind(personas);\n target.updatePersona = personas.updatePersona.bind(personas);\n target.deletePersona = personas.deletePersona.bind(personas);\n}\n","import { CustomersApi } from '../../api';\n\nexport interface CustomersBindings {\n getMyCustomers: CustomersApi['getMyCustomers'];\n getMyCustomer: CustomersApi['getMyCustomer'];\n getMyCustomerAccounts: CustomersApi['getMyCustomerAccounts'];\n getMyCustomerSubscriptions: CustomersApi['getMyCustomerSubscriptions'];\n getMyCustomerInvoices: CustomersApi['getMyCustomerInvoices'];\n updateMyCustomer: CustomersApi['updateMyCustomer'];\n createMyCustomerSetupIntent: CustomersApi['createMyCustomerSetupIntent'];\n getMyCustomerPaymentMethods: CustomersApi['getMyCustomerPaymentMethods'];\n attachMyCustomerPaymentMethod: CustomersApi['attachMyCustomerPaymentMethod'];\n detachMyCustomerPaymentMethod: CustomersApi['detachMyCustomerPaymentMethod'];\n setDefaultMyCustomerPaymentMethod: CustomersApi['setDefaultMyCustomerPaymentMethod'];\n getMyCustomerCreditGrants: CustomersApi['getMyCustomerCreditGrants'];\n}\n\nexport function bindCustomersMethods(target: CustomersBindings, customers: CustomersApi): void {\n target.getMyCustomers = customers.getMyCustomers.bind(customers);\n target.getMyCustomer = customers.getMyCustomer.bind(customers);\n target.getMyCustomerAccounts = customers.getMyCustomerAccounts.bind(customers);\n target.getMyCustomerSubscriptions = customers.getMyCustomerSubscriptions.bind(customers);\n target.getMyCustomerInvoices = customers.getMyCustomerInvoices.bind(customers);\n target.updateMyCustomer = customers.updateMyCustomer.bind(customers);\n target.createMyCustomerSetupIntent = customers.createMyCustomerSetupIntent.bind(customers);\n target.getMyCustomerPaymentMethods = customers.getMyCustomerPaymentMethods.bind(customers);\n target.attachMyCustomerPaymentMethod = customers.attachMyCustomerPaymentMethod.bind(customers);\n target.detachMyCustomerPaymentMethod = customers.detachMyCustomerPaymentMethod.bind(customers);\n target.setDefaultMyCustomerPaymentMethod =\n customers.setDefaultMyCustomerPaymentMethod.bind(customers);\n target.getMyCustomerCreditGrants = customers.getMyCustomerCreditGrants.bind(customers);\n}\n","import { ResellersApi } from '../../api';\n\nexport interface ResellersBindings {\n getMyResellers: ResellersApi['getMyResellers'];\n getMyReseller: ResellersApi['getMyReseller'];\n getMyResellerAccounts: ResellersApi['getMyResellerAccounts'];\n getMyResellerProducts: ResellersApi['getMyResellerProducts'];\n getMyResellerSubscriptions: ResellersApi['getMyResellerSubscriptions'];\n updateMyReseller: ResellersApi['updateMyReseller'];\n}\n\nexport function bindResellersMethods(target: ResellersBindings, resellers: ResellersApi): void {\n target.getMyResellers = resellers.getMyResellers.bind(resellers);\n target.getMyReseller = resellers.getMyReseller.bind(resellers);\n target.getMyResellerAccounts = resellers.getMyResellerAccounts.bind(resellers);\n target.getMyResellerProducts = resellers.getMyResellerProducts.bind(resellers);\n target.getMyResellerSubscriptions = resellers.getMyResellerSubscriptions.bind(resellers);\n target.updateMyReseller = resellers.updateMyReseller.bind(resellers);\n}\n","import { PromptsApi } from '../../api/prompts';\n\nexport interface PromptsBindings {\n inspectPrompt: PromptsApi['inspectPrompt'];\n}\n\nexport function bindPromptsMethods(target: PromptsBindings, prompts: PromptsApi): void {\n target.inspectPrompt = prompts.inspectPrompt.bind(prompts);\n}\n","import { SupportRequestsApi } from '../../api';\n\nexport interface SupportRequestsBindings {\n listSupportRequests: SupportRequestsApi['listSupportRequests'];\n getSupportRequest: SupportRequestsApi['getSupportRequest'];\n createSupportRequest: SupportRequestsApi['createSupportRequest'];\n commentOnSupportRequest: SupportRequestsApi['commentOnSupportRequest'];\n listOrgSupportRequests: SupportRequestsApi['listOrgSupportRequests'];\n getOrgSupportRequest: SupportRequestsApi['getOrgSupportRequest'];\n createOrgSupportRequest: SupportRequestsApi['createOrgSupportRequest'];\n commentOnOrgSupportRequest: SupportRequestsApi['commentOnOrgSupportRequest'];\n listWorkspaceSupportRequests: SupportRequestsApi['listWorkspaceSupportRequests'];\n getWorkspaceSupportRequest: SupportRequestsApi['getWorkspaceSupportRequest'];\n createWorkspaceSupportRequest: SupportRequestsApi['createWorkspaceSupportRequest'];\n commentOnWorkspaceSupportRequest: SupportRequestsApi['commentOnWorkspaceSupportRequest'];\n closeWorkspaceSupportRequest: SupportRequestsApi['closeWorkspaceSupportRequest'];\n clickWorkspaceSupportRequestResource: SupportRequestsApi['clickWorkspaceSupportRequestResource'];\n}\n\nexport function bindSupportRequestMethods(\n target: SupportRequestsBindings,\n supportRequests: SupportRequestsApi\n): void {\n target.listSupportRequests = supportRequests.listSupportRequests.bind(supportRequests);\n target.getSupportRequest = supportRequests.getSupportRequest.bind(supportRequests);\n target.createSupportRequest = supportRequests.createSupportRequest.bind(supportRequests);\n target.commentOnSupportRequest = supportRequests.commentOnSupportRequest.bind(supportRequests);\n target.listOrgSupportRequests = supportRequests.listOrgSupportRequests.bind(supportRequests);\n target.getOrgSupportRequest = supportRequests.getOrgSupportRequest.bind(supportRequests);\n target.createOrgSupportRequest = supportRequests.createOrgSupportRequest.bind(supportRequests);\n target.commentOnOrgSupportRequest =\n supportRequests.commentOnOrgSupportRequest.bind(supportRequests);\n target.listWorkspaceSupportRequests =\n supportRequests.listWorkspaceSupportRequests.bind(supportRequests);\n target.getWorkspaceSupportRequest =\n supportRequests.getWorkspaceSupportRequest.bind(supportRequests);\n target.createWorkspaceSupportRequest =\n supportRequests.createWorkspaceSupportRequest.bind(supportRequests);\n target.commentOnWorkspaceSupportRequest =\n supportRequests.commentOnWorkspaceSupportRequest.bind(supportRequests);\n target.closeWorkspaceSupportRequest =\n supportRequests.closeWorkspaceSupportRequest.bind(supportRequests);\n target.clickWorkspaceSupportRequestResource =\n supportRequests.clickWorkspaceSupportRequestResource.bind(supportRequests);\n}\n","import { WorkspaceInvitationsApi } from '../api';\nimport { EnhancedAuthHandler, OrgAuthHandler } from '../api/base';\nimport { ApiModules, createApiModules } from './api-modules';\nimport {\n AccessGrantsBindings,\n AgentTasksBindings,\n AgentsBindings,\n AppsBindings,\n AuthBindings,\n BillingBindings,\n CalendarsBindings,\n CallsBindings,\n ChatsBindings,\n CommunicationsBindings,\n CustomersBindings,\n ResellersBindings,\n DataTypesBindings,\n EventsBindings,\n ExperimentsBindings,\n FilesBindings,\n IntegrationsBindings,\n JourneysBindings,\n bindJourneysMethods,\n MembersBindings,\n OperatorBindings,\n OrgBindings,\n bindOrgMethods,\n PronunciationsBindings,\n QualificationsBindings,\n PersonasBindings,\n bindPronunciationsMethods,\n SitesBindings,\n TasksBindings,\n ToolkitsBindings,\n WorkflowsBindings,\n WorkspacesBindings,\n bindAccessGrantsMethods,\n bindAgentTasksMethods,\n bindAgentsMethods,\n bindAppsMethods,\n bindAuthMethods,\n bindBillingMethods,\n bindCalendarsMethods,\n bindCallsMethods,\n bindChatsMethods,\n bindCommunicationsMethods,\n bindCustomersMethods,\n bindResellersMethods,\n bindDataTypesMethods,\n bindEventsMethods,\n bindExperimentsMethods,\n bindFilesMethods,\n bindIntegrationsMethods,\n bindMembersMethods,\n bindOperatorMethods,\n bindQualificationsMethods,\n bindPersonasMethods,\n bindSitesMethods,\n bindTasksMethods,\n bindToolkitsMethods,\n bindWorkflowsMethods,\n bindWorkspacesMethods,\n PromptsBindings,\n bindPromptsMethods,\n SupportRequestsBindings,\n bindSupportRequestMethods,\n} from './bindings';\n\n/**\n * GravityRailClient provides a unified interface to all public Gravity Rail API endpoints.\n *\n * Methods are organized by domain and bound to their respective API modules.\n * See the bindings directory for the organization of methods by domain.\n *\n * This class excludes admin/superuser methods. The full client including\n * admin functionality (`ApiClient`) lives in the private `@gravity-rail/client`\n * package and extends this class.\n */\nexport class GravityRailClient\n implements\n TasksBindings,\n ChatsBindings,\n CallsBindings,\n DataTypesBindings,\n MembersBindings,\n WorkspacesBindings,\n AuthBindings,\n SitesBindings,\n FilesBindings,\n EventsBindings,\n ExperimentsBindings,\n WorkflowsBindings,\n CalendarsBindings,\n CommunicationsBindings,\n ToolkitsBindings,\n BillingBindings,\n AppsBindings,\n IntegrationsBindings,\n AgentTasksBindings,\n AgentsBindings,\n PronunciationsBindings,\n QualificationsBindings,\n PersonasBindings,\n CustomersBindings,\n ResellersBindings,\n JourneysBindings,\n OperatorBindings,\n OrgBindings,\n AccessGrantsBindings,\n PromptsBindings,\n SupportRequestsBindings\n{\n // WorkspaceInvitations is exposed publicly for backward compatibility\n public workspaceInvitations: WorkspaceInvitationsApi;\n\n // Store all API modules for cross-cutting operations\n protected apis: ApiModules;\n\n // Tasks API\n getTasks!: TasksBindings['getTasks'];\n getTask!: TasksBindings['getTask'];\n createTask!: TasksBindings['createTask'];\n updateTask!: TasksBindings['updateTask'];\n deleteTask!: TasksBindings['deleteTask'];\n archiveTask!: TasksBindings['archiveTask'];\n unarchiveTask!: TasksBindings['unarchiveTask'];\n cloneTask!: TasksBindings['cloneTask'];\n getAbilityTypes!: TasksBindings['getAbilityTypes'];\n\n // Chats API\n getChats!: ChatsBindings['getChats'];\n getChat!: ChatsBindings['getChat'];\n getChatTokenUsage!: ChatsBindings['getChatTokenUsage'];\n getChatTodos!: ChatsBindings['getChatTodos'];\n getChatSkills!: ChatsBindings['getChatSkills'];\n getChatsNeedsResponse!: ChatsBindings['getChatsNeedsResponse'];\n getChatsDailyCreationStats!: ChatsBindings['getChatsDailyCreationStats'];\n getToolCallNames!: ChatsBindings['getToolCallNames'];\n archiveChat!: ChatsBindings['archiveChat'];\n unarchiveChat!: ChatsBindings['unarchiveChat'];\n createChat!: ChatsBindings['createChat'];\n createWorkflowOutboundVoiceChat!: ChatsBindings['createWorkflowOutboundVoiceChat'];\n deleteChat!: ChatsBindings['deleteChat'];\n updateChat!: ChatsBindings['updateChat'];\n updateChatMute!: ChatsBindings['updateChatMute'];\n updateChatNeedsResponse!: ChatsBindings['updateChatNeedsResponse'];\n summarizeChat!: ChatsBindings['summarizeChat'];\n getChatMessages!: ChatsBindings['getChatMessages'];\n getChatToolCallMessages!: ChatsBindings['getChatToolCallMessages'];\n getChatTools!: ChatsBindings['getChatTools'];\n initiateOutboundCall!: ChatsBindings['initiateOutboundCall'];\n sendAssistantMessage!: ChatsBindings['sendAssistantMessage'];\n rateMessage!: ChatsBindings['rateMessage'];\n getChatAssignmentTasks!: ChatsBindings['getChatAssignmentTasks'];\n createChatCompletion!: ChatsBindings['createChatCompletion'];\n exportChats!: ChatsBindings['exportChats'];\n exportChat!: ChatsBindings['exportChat'];\n findOrCreateDMChat!: ChatsBindings['findOrCreateDMChat'];\n sendChatMessage!: ChatsBindings['sendChatMessage'];\n getChatPhoneCalls!: ChatsBindings['getChatPhoneCalls'];\n getChatLabels!: ChatsBindings['getChatLabels'];\n getChatLabel!: ChatsBindings['getChatLabel'];\n getChatLabelByUuid!: ChatsBindings['getChatLabelByUuid'];\n createChatLabel!: ChatsBindings['createChatLabel'];\n updateChatLabel!: ChatsBindings['updateChatLabel'];\n deleteChatLabel!: ChatsBindings['deleteChatLabel'];\n getChatFilters!: ChatsBindings['getChatFilters'];\n getChatFilter!: ChatsBindings['getChatFilter'];\n getChatFilterByUuid!: ChatsBindings['getChatFilterByUuid'];\n createChatFilter!: ChatsBindings['createChatFilter'];\n updateChatFilter!: ChatsBindings['updateChatFilter'];\n deleteChatFilter!: ChatsBindings['deleteChatFilter'];\n getChatFilterCount!: ChatsBindings['getChatFilterCount'];\n\n // Calls API\n initiateCall!: CallsBindings['initiateCall'];\n getVoiceToken!: CallsBindings['getVoiceToken'];\n getMessageTiming!: CallsBindings['getMessageTiming'];\n getCelContext!: CallsBindings['getCelContext'];\n\n // Data Types API\n getDataTypes!: DataTypesBindings['getDataTypes'];\n getDataType!: DataTypesBindings['getDataType'];\n getDataTypeBySlug!: DataTypesBindings['getDataTypeBySlug'];\n createDataType!: DataTypesBindings['createDataType'];\n updateDataType!: DataTypesBindings['updateDataType'];\n deleteDataType!: DataTypesBindings['deleteDataType'];\n archiveDataType!: DataTypesBindings['archiveDataType'];\n unarchiveDataType!: DataTypesBindings['unarchiveDataType'];\n cloneDataType!: DataTypesBindings['cloneDataType'];\n getDataRecords!: DataTypesBindings['getDataRecords'];\n getDataRecord!: DataTypesBindings['getDataRecord'];\n createDataRecord!: DataTypesBindings['createDataRecord'];\n updateDataRecord!: DataTypesBindings['updateDataRecord'];\n deleteDataRecord!: DataTypesBindings['deleteDataRecord'];\n getDataRecordChanges!: DataTypesBindings['getDataRecordChanges'];\n upsertDataRecord!: DataTypesBindings['upsertDataRecord'];\n toggleFieldIndex!: DataTypesBindings['toggleFieldIndex'];\n getFieldIndexStatus!: DataTypesBindings['getFieldIndexStatus'];\n validateDataTypeSlug!: DataTypesBindings['validateDataTypeSlug'];\n getMemberRecordCounts!: DataTypesBindings['getMemberRecordCounts'];\n\n // Members API\n getCurrentMember!: MembersBindings['getCurrentMember'];\n getOwnedMembers!: MembersBindings['getOwnedMembers'];\n switchMember!: MembersBindings['switchMember'];\n clearMemberSwitch!: MembersBindings['clearMemberSwitch'];\n updateCurrentMember!: MembersBindings['updateCurrentMember'];\n getWorkspaceMembers!: MembersBindings['getWorkspaceMembers'];\n getWorkspaceMember!: MembersBindings['getWorkspaceMember'];\n createWorkspaceMember!: MembersBindings['createWorkspaceMember'];\n updateMember!: MembersBindings['updateMember'];\n deleteMember!: MembersBindings['deleteMember'];\n archiveMember!: MembersBindings['archiveMember'];\n unarchiveMember!: MembersBindings['unarchiveMember'];\n importMembers!: MembersBindings['importMembers'];\n exportMembers!: MembersBindings['exportMembers'];\n getMembersMessageActivity!: MembersBindings['getMembersMessageActivity'];\n getMemberFilters!: MembersBindings['getMemberFilters'];\n getMemberFilter!: MembersBindings['getMemberFilter'];\n createMemberFilter!: MembersBindings['createMemberFilter'];\n updateMemberFilter!: MembersBindings['updateMemberFilter'];\n deleteMemberFilter!: MembersBindings['deleteMemberFilter'];\n getMemberFilterCount!: MembersBindings['getMemberFilterCount'];\n getMemberLabels!: MembersBindings['getMemberLabels'];\n getMemberLabel!: MembersBindings['getMemberLabel'];\n getMemberLabelByUuid!: MembersBindings['getMemberLabelByUuid'];\n createMemberLabel!: MembersBindings['createMemberLabel'];\n updateMemberLabel!: MembersBindings['updateMemberLabel'];\n deleteMemberLabel!: MembersBindings['deleteMemberLabel'];\n getMemberRoles!: MembersBindings['getMemberRoles'];\n getMemberRole!: MembersBindings['getMemberRole'];\n getMemberRoleByUuid!: MembersBindings['getMemberRoleByUuid'];\n createMemberRole!: MembersBindings['createMemberRole'];\n updateMemberRole!: MembersBindings['updateMemberRole'];\n deleteMemberRole!: MembersBindings['deleteMemberRole'];\n // Member Fields\n getMemberFields!: MembersBindings['getMemberFields'];\n getMemberFieldDefinitions!: MembersBindings['getMemberFieldDefinitions'];\n createMemberField!: MembersBindings['createMemberField'];\n updateMemberField!: MembersBindings['updateMemberField'];\n deleteMemberField!: MembersBindings['deleteMemberField'];\n // Credential Change Invites (Admin-initiated)\n inviteMemberCredentialUpdate!: MembersBindings['inviteMemberCredentialUpdate'];\n cancelCredentialUpdateInvite!: MembersBindings['cancelCredentialUpdateInvite'];\n getCredentialUpdateInvites!: MembersBindings['getCredentialUpdateInvites'];\n // Anonymous Member Resolutions\n getAnonymousResolutions!: MembersBindings['getAnonymousResolutions'];\n getAnonymousResolution!: MembersBindings['getAnonymousResolution'];\n resolveAnonymousMember!: MembersBindings['resolveAnonymousMember'];\n expireAnonymousMember!: MembersBindings['expireAnonymousMember'];\n // Member Memories\n getMemberMemories!: MembersBindings['getMemberMemories'];\n createMemberMemory!: MembersBindings['createMemberMemory'];\n deleteMemberMemory!: MembersBindings['deleteMemberMemory'];\n\n // Agent Tasks API (operator-facing async sub-agent inspection/cancel)\n getAgentTasks!: AgentTasksBindings['getAgentTasks'];\n getAgentTask!: AgentTasksBindings['getAgentTask'];\n cancelAgentTask!: AgentTasksBindings['cancelAgentTask'];\n getAgentTaskMessages!: AgentTasksBindings['getAgentTaskMessages'];\n\n // Agents API\n getAgents!: AgentsBindings['getAgents'];\n getAgent!: AgentsBindings['getAgent'];\n createAgent!: AgentsBindings['createAgent'];\n updateAgent!: AgentsBindings['updateAgent'];\n deleteAgent!: AgentsBindings['deleteAgent'];\n archiveAgent!: AgentsBindings['archiveAgent'];\n unarchiveAgent!: AgentsBindings['unarchiveAgent'];\n\n // Qualifications API\n getQualifications!: QualificationsBindings['getQualifications'];\n getQualification!: QualificationsBindings['getQualification'];\n getOrCreateQualificationForWorkflow!: QualificationsBindings['getOrCreateQualificationForWorkflow'];\n listScenarios!: QualificationsBindings['listScenarios'];\n createScenario!: QualificationsBindings['createScenario'];\n getScenario!: QualificationsBindings['getScenario'];\n updateScenario!: QualificationsBindings['updateScenario'];\n deleteScenario!: QualificationsBindings['deleteScenario'];\n listTestChatRuns!: QualificationsBindings['listTestChatRuns'];\n getTestChatRun!: QualificationsBindings['getTestChatRun'];\n startTestChatRun!: QualificationsBindings['startTestChatRun'];\n evaluateTestChatRun!: QualificationsBindings['evaluateTestChatRun'];\n endTestChatRun!: QualificationsBindings['endTestChatRun'];\n\n // Personas API (workspace-scoped test-identity templates)\n listPersonas!: PersonasBindings['listPersonas'];\n getPersona!: PersonasBindings['getPersona'];\n createPersona!: PersonasBindings['createPersona'];\n updatePersona!: PersonasBindings['updatePersona'];\n deletePersona!: PersonasBindings['deletePersona'];\n\n // Journeys API\n getJourneys!: JourneysBindings['getJourneys'];\n getJourney!: JourneysBindings['getJourney'];\n getJourneyHealth!: JourneysBindings['getJourneyHealth'];\n createJourney!: JourneysBindings['createJourney'];\n updateJourney!: JourneysBindings['updateJourney'];\n archiveJourney!: JourneysBindings['archiveJourney'];\n createStep!: JourneysBindings['createStep'];\n updateStep!: JourneysBindings['updateStep'];\n archiveStep!: JourneysBindings['archiveStep'];\n createConnection!: JourneysBindings['createConnection'];\n updateConnection!: JourneysBindings['updateConnection'];\n deleteConnection!: JourneysBindings['deleteConnection'];\n createGoal!: JourneysBindings['createGoal'];\n updateGoal!: JourneysBindings['updateGoal'];\n deleteGoal!: JourneysBindings['deleteGoal'];\n getJourneyMembers!: JourneysBindings['getJourneyMembers'];\n enrollMembers!: JourneysBindings['enrollMembers'];\n unenrollMembers!: JourneysBindings['unenrollMembers'];\n reenrollMember!: JourneysBindings['reenrollMember'];\n deleteEnrollment!: JourneysBindings['deleteEnrollment'];\n getMemberJourneys!: JourneysBindings['getMemberJourneys'];\n testRunJourney!: JourneysBindings['testRunJourney'];\n getJourneyNotes!: JourneysBindings['getJourneyNotes'];\n createJourneyNote!: JourneysBindings['createJourneyNote'];\n updateJourneyNote!: JourneysBindings['updateJourneyNote'];\n deleteJourneyNote!: JourneysBindings['deleteJourneyNote'];\n\n // Experiments API\n getExperiments!: ExperimentsBindings['getExperiments'];\n getExperiment!: ExperimentsBindings['getExperiment'];\n createExperiment!: ExperimentsBindings['createExperiment'];\n updateExperiment!: ExperimentsBindings['updateExperiment'];\n deleteExperiment!: ExperimentsBindings['deleteExperiment'];\n createExperimentGroup!: ExperimentsBindings['createExperimentGroup'];\n updateExperimentGroup!: ExperimentsBindings['updateExperimentGroup'];\n deleteExperimentGroup!: ExperimentsBindings['deleteExperimentGroup'];\n getExperimentStats!: ExperimentsBindings['getExperimentStats'];\n getMemberExperiments!: ExperimentsBindings['getMemberExperiments'];\n createExperimentAssignment!: ExperimentsBindings['createExperimentAssignment'];\n updateExperimentAssignment!: ExperimentsBindings['updateExperimentAssignment'];\n deleteExperimentAssignment!: ExperimentsBindings['deleteExperimentAssignment'];\n\n // Operator Groups API\n getOperatorGroups!: OperatorBindings['getOperatorGroups'];\n getOperatorGroup!: OperatorBindings['getOperatorGroup'];\n createOperatorGroup!: OperatorBindings['createOperatorGroup'];\n updateOperatorGroup!: OperatorBindings['updateOperatorGroup'];\n deleteOperatorGroup!: OperatorBindings['deleteOperatorGroup'];\n addGroupMember!: OperatorBindings['addGroupMember'];\n removeGroupMember!: OperatorBindings['removeGroupMember'];\n getLiveOperators!: OperatorBindings['getLiveOperators'];\n getPresenceStatus!: OperatorBindings['getPresenceStatus'];\n disconnectPresence!: OperatorBindings['disconnectPresence'];\n getOperatorChatMessages!: OperatorBindings['getOperatorChatMessages'];\n sendOperatorMessage!: OperatorBindings['sendOperatorMessage'];\n\n // Access Grants API\n getMyReceivedGrants!: AccessGrantsBindings['getMyReceivedGrants'];\n getMyGivenGrants!: AccessGrantsBindings['getMyGivenGrants'];\n getAccessGrant!: AccessGrantsBindings['getAccessGrant'];\n createAccessGrant!: AccessGrantsBindings['createAccessGrant'];\n resolveAccessGrant!: AccessGrantsBindings['resolveAccessGrant'];\n revokeAccessGrant!: AccessGrantsBindings['revokeAccessGrant'];\n getAccessGrants!: AccessGrantsBindings['getAccessGrants'];\n getMemberGrants!: AccessGrantsBindings['getMemberGrants'];\n\n // Prompts API\n inspectPrompt!: PromptsBindings['inspectPrompt'];\n\n // Workspaces API\n getWorkspaces!: WorkspacesBindings['getWorkspaces'];\n getPublicWorkspaces!: WorkspacesBindings['getPublicWorkspaces'];\n getWorkspace!: WorkspacesBindings['getWorkspace'];\n createWorkspace!: WorkspacesBindings['createWorkspace'];\n updateWorkspace!: WorkspacesBindings['updateWorkspace'];\n deleteWorkspace!: WorkspacesBindings['deleteWorkspace'];\n leaveWorkspace!: WorkspacesBindings['leaveWorkspace'];\n getWorkspaceDefaults!: WorkspacesBindings['getWorkspaceDefaults'];\n updateWorkspaceDefaults!: WorkspacesBindings['updateWorkspaceDefaults'];\n getFirstRunState!: WorkspacesBindings['getFirstRunState'];\n updateFirstRunState!: WorkspacesBindings['updateFirstRunState'];\n getWorkspaceCounts!: WorkspacesBindings['getWorkspaceCounts'];\n getBusinessHoursStatus!: WorkspacesBindings['getBusinessHoursStatus'];\n getAvailableWorkspaceFeatures!: WorkspacesBindings['getAvailableWorkspaceFeatures'];\n getWorkspaceNotices!: WorkspacesBindings['getWorkspaceNotices'];\n getNotifications!: WorkspacesBindings['getNotifications'];\n getNotification!: WorkspacesBindings['getNotification'];\n getUnreadNotificationCount!: WorkspacesBindings['getUnreadNotificationCount'];\n markNotificationAsRead!: WorkspacesBindings['markNotificationAsRead'];\n dismissNotification!: WorkspacesBindings['dismissNotification'];\n dismissAllNotifications!: WorkspacesBindings['dismissAllNotifications'];\n getResellerWorkspaces!: WorkspacesBindings['getResellerWorkspaces'];\n createClientWorkspace!: WorkspacesBindings['createClientWorkspace'];\n getClientWorkspace!: WorkspacesBindings['getClientWorkspace'];\n updateClientWorkspace!: WorkspacesBindings['updateClientWorkspace'];\n deleteClientWorkspace!: WorkspacesBindings['deleteClientWorkspace'];\n provisionClientWorkspace!: WorkspacesBindings['provisionClientWorkspace'];\n getProducts!: WorkspacesBindings['getProducts'];\n getProduct!: WorkspacesBindings['getProduct'];\n getWorkspaceProduct!: WorkspacesBindings['getWorkspaceProduct'];\n getPublicProducts!: WorkspacesBindings['getPublicProducts'];\n getPublicProduct!: WorkspacesBindings['getPublicProduct'];\n createProduct!: WorkspacesBindings['createProduct'];\n updateProduct!: WorkspacesBindings['updateProduct'];\n deleteProduct!: WorkspacesBindings['deleteProduct'];\n exportWorkspace!: WorkspacesBindings['exportWorkspace'];\n previewWorkspaceImport!: WorkspacesBindings['previewWorkspaceImport'];\n importWorkspace!: WorkspacesBindings['importWorkspace'];\n previewImportWorkspace!: WorkspacesBindings['previewImportWorkspace'];\n getWorkspaceThemes!: WorkspacesBindings['getWorkspaceThemes'];\n updateWorkspaceThemes!: WorkspacesBindings['updateWorkspaceThemes'];\n getWorkspaceBySlug!: WorkspacesBindings['getWorkspaceBySlug'];\n getWorkspaceScopes!: WorkspacesBindings['getWorkspaceScopes'];\n getUsageDashboard!: WorkspacesBindings['getUsageDashboard'];\n getWorkspaceEmailDomains!: WorkspacesBindings['getWorkspaceEmailDomains'];\n getWorkspaceSiteDomains!: WorkspacesBindings['getWorkspaceSiteDomains'];\n\n // Org API\n listOrgDomains!: OrgBindings['listOrgDomains'];\n registerOrgDomain!: OrgBindings['registerOrgDomain'];\n getOrgDomain!: OrgBindings['getOrgDomain'];\n verifyOrgDomainOwnership!: OrgBindings['verifyOrgDomainOwnership'];\n deleteOrgDomain!: OrgBindings['deleteOrgDomain'];\n enableOrgDomainEmail!: OrgBindings['enableOrgDomainEmail'];\n getOrgDomainEmail!: OrgBindings['getOrgDomainEmail'];\n verifyOrgDomainEmail!: OrgBindings['verifyOrgDomainEmail'];\n disableOrgDomainEmail!: OrgBindings['disableOrgDomainEmail'];\n enableOrgDomainSite!: OrgBindings['enableOrgDomainSite'];\n getOrgDomainSite!: OrgBindings['getOrgDomainSite'];\n verifyOrgDomainSite!: OrgBindings['verifyOrgDomainSite'];\n disableOrgDomainSite!: OrgBindings['disableOrgDomainSite'];\n getBusinessProfile!: OrgBindings['getBusinessProfile'];\n updateBusinessProfile!: OrgBindings['updateBusinessProfile'];\n submitBusinessProfile!: OrgBindings['submitBusinessProfile'];\n cancelBusinessProfile!: OrgBindings['cancelBusinessProfile'];\n getVapidPublicKey!: WorkspacesBindings['getVapidPublicKey'];\n registerPushSubscription!: WorkspacesBindings['registerPushSubscription'];\n unregisterPushSubscription!: WorkspacesBindings['unregisterPushSubscription'];\n listPushSubscriptions!: WorkspacesBindings['listPushSubscriptions'];\n listWorkspaceInvitations!: WorkspacesBindings['listWorkspaceInvitations'];\n listWorkspaceInvitationsAdmin!: WorkspacesBindings['listWorkspaceInvitationsAdmin'];\n getWorkspaceInvitation!: WorkspacesBindings['getWorkspaceInvitation'];\n updateWorkspaceInvitationAdmin!: WorkspacesBindings['updateWorkspaceInvitationAdmin'];\n deleteWorkspaceInvitation!: WorkspacesBindings['deleteWorkspaceInvitation'];\n deleteWorkspaceInvitationAdmin!: WorkspacesBindings['deleteWorkspaceInvitationAdmin'];\n requestWorkspaceMembership!: WorkspacesBindings['requestWorkspaceMembership'];\n approveWorkspaceInvitation!: WorkspacesBindings['approveWorkspaceInvitation'];\n denyWorkspaceInvitation!: WorkspacesBindings['denyWorkspaceInvitation'];\n blockWorkspaceInvitation!: WorkspacesBindings['blockWorkspaceInvitation'];\n inviteToWorkspace!: WorkspacesBindings['inviteToWorkspace'];\n acceptInvitation!: WorkspacesBindings['acceptInvitation'];\n declineInvitation!: WorkspacesBindings['declineInvitation'];\n\n // Auth API\n getUserAccount!: AuthBindings['getUserAccount'];\n updateUserAccount!: AuthBindings['updateUserAccount'];\n login!: AuthBindings['login'];\n resendCode!: AuthBindings['resendCode'];\n verifyCodeWith2FA!: AuthBindings['verifyCodeWith2FA'];\n emailPasswordLogin!: AuthBindings['emailPasswordLogin'];\n emailPasswordSignup!: AuthBindings['emailPasswordSignup'];\n requestMagicLink!: AuthBindings['requestMagicLink'];\n validateMagicLink!: AuthBindings['validateMagicLink'];\n sendEmailVerification!: AuthBindings['sendEmailVerification'];\n verifyEmail!: AuthBindings['verifyEmail'];\n changePassword!: AuthBindings['changePassword'];\n setPassword!: AuthBindings['setPassword'];\n getPasswordStatus!: AuthBindings['getPasswordStatus'];\n logout!: AuthBindings['logout'];\n requestCrossDomainToken!: AuthBindings['requestCrossDomainToken'];\n exchangeToken!: AuthBindings['exchangeToken'];\n getDomainMapping!: AuthBindings['getDomainMapping'];\n createSignup!: AuthBindings['createSignup'];\n createAccount!: AuthBindings['createAccount'];\n getTwoFactorStatus!: AuthBindings['getTwoFactorStatus'];\n setupTOTP!: AuthBindings['setupTOTP'];\n verifyTOTPSetup!: AuthBindings['verifyTOTPSetup'];\n setupWebAuthn!: AuthBindings['setupWebAuthn'];\n verifyWebAuthnSetup!: AuthBindings['verifyWebAuthnSetup'];\n verifyTOTPAuth!: AuthBindings['verifyTOTPAuth'];\n verifyRecoveryCodeAuth!: AuthBindings['verifyRecoveryCodeAuth'];\n getWebAuthnAuthOptions!: AuthBindings['getWebAuthnAuthOptions'];\n verifyWebAuthnAuth!: AuthBindings['verifyWebAuthnAuth'];\n generateRecoveryCodes!: AuthBindings['generateRecoveryCodes'];\n disableTwoFactorMethod!: AuthBindings['disableTwoFactorMethod'];\n updateTwoFactorMethod!: AuthBindings['updateTwoFactorMethod'];\n getMyOrganizations!: AuthBindings['getMyOrganizations'];\n requestCredentialChange!: AuthBindings['requestCredentialChange'];\n verifyCredentialChange!: AuthBindings['verifyCredentialChange'];\n getPendingCredentialChanges!: AuthBindings['getPendingCredentialChanges'];\n cancelCredentialChange!: AuthBindings['cancelCredentialChange'];\n getCredentialChangeInviteDetails!: AuthBindings['getCredentialChangeInviteDetails'];\n confirmCredentialChangeInvite!: AuthBindings['confirmCredentialChangeInvite'];\n getConsentState!: AuthBindings['getConsentState'];\n updateConsent!: AuthBindings['updateConsent'];\n getAssignments!: AuthBindings['getAssignments'];\n getAssignment!: AuthBindings['getAssignment'];\n getAssignmentMessages!: AuthBindings['getAssignmentMessages'];\n updateAssignment!: AuthBindings['updateAssignment'];\n deleteAssignment!: AuthBindings['deleteAssignment'];\n getAssignmentTask!: AuthBindings['getAssignmentTask'];\n selectCurrentAssignmentTask!: AuthBindings['selectCurrentAssignmentTask'];\n createAssignment!: AuthBindings['createAssignment'];\n getAssignmentTaskDetail!: AuthBindings['getAssignmentTaskDetail'];\n getAssignmentCelContext!: AuthBindings['getAssignmentCelContext'];\n cancelAssignment!: AuthBindings['cancelAssignment'];\n getAssignmentTools!: AuthBindings['getAssignmentTools'];\n executeAssignmentTool!: AuthBindings['executeAssignmentTool'];\n\n // Sites API\n getSites!: SitesBindings['getSites'];\n checkSiteSlugAvailability!: SitesBindings['checkSiteSlugAvailability'];\n checkSiteDomainAvailability!: SitesBindings['checkSiteDomainAvailability'];\n getSite!: SitesBindings['getSite'];\n getSiteByUuid!: SitesBindings['getSiteByUuid'];\n getSiteRenderedPage!: SitesBindings['getSiteRenderedPage'];\n getSiteRenderedMenu!: SitesBindings['getSiteRenderedMenu'];\n siteSignup!: SitesBindings['siteSignup'];\n siteSendPhoneCode!: SitesBindings['siteSendPhoneCode'];\n siteSendEmailCode!: SitesBindings['siteSendEmailCode'];\n siteVerifyCode!: SitesBindings['siteVerifyCode'];\n siteGoogleOAuthInitiate!: SitesBindings['siteGoogleOAuthInitiate'];\n crawlSite!: SitesBindings['crawlSite'];\n createSite!: SitesBindings['createSite'];\n updateSite!: SitesBindings['updateSite'];\n deleteSite!: SitesBindings['deleteSite'];\n getSitePages!: SitesBindings['getSitePages'];\n getPage!: SitesBindings['getPage'];\n getPageBySlug!: SitesBindings['getPageBySlug'];\n createPage!: SitesBindings['createPage'];\n updatePage!: SitesBindings['updatePage'];\n deletePage!: SitesBindings['deletePage'];\n getSiteCounts!: SitesBindings['getSiteCounts'];\n getSiteMenu!: SitesBindings['getSiteMenu'];\n getMenuItems!: SitesBindings['getMenuItems'];\n createMenuItem!: SitesBindings['createMenuItem'];\n updateMenuItem!: SitesBindings['updateMenuItem'];\n deleteMenuItem!: SitesBindings['deleteMenuItem'];\n reorderMenuItems!: SitesBindings['reorderMenuItems'];\n generateSiteMediaUploadUrl!: SitesBindings['generateSiteMediaUploadUrl'];\n\n // Files API\n getFiles!: FilesBindings['getFiles'];\n getFile!: FilesBindings['getFile'];\n createFile!: FilesBindings['createFile'];\n updateFile!: FilesBindings['updateFile'];\n deleteFile!: FilesBindings['deleteFile'];\n convertFile!: FilesBindings['convertFile'];\n generateFileUploadUrl!: FilesBindings['generateFileUploadUrl'];\n getFolders!: FilesBindings['getFolders'];\n getFolder!: FilesBindings['getFolder'];\n createFolder!: FilesBindings['createFolder'];\n updateFolder!: FilesBindings['updateFolder'];\n deleteFolder!: FilesBindings['deleteFolder'];\n reindexFolder!: FilesBindings['reindexFolder'];\n searchFolder!: FilesBindings['searchFolder'];\n getFileLabels!: FilesBindings['getFileLabels'];\n getFileLabel!: FilesBindings['getFileLabel'];\n getFileLabelByUuid!: FilesBindings['getFileLabelByUuid'];\n createFileLabel!: FilesBindings['createFileLabel'];\n updateFileLabel!: FilesBindings['updateFileLabel'];\n deleteFileLabel!: FilesBindings['deleteFileLabel'];\n getFileSharing!: FilesBindings['getFileSharing'];\n updateFileRoles!: FilesBindings['updateFileRoles'];\n removeFileRole!: FilesBindings['removeFileRole'];\n getFolderSharing!: FilesBindings['getFolderSharing'];\n updateFolderRoles!: FilesBindings['updateFolderRoles'];\n removeFolderRole!: FilesBindings['removeFolderRole'];\n updateFileSharing!: FilesBindings['updateFileSharing'];\n updateFolderSharing!: FilesBindings['updateFolderSharing'];\n // Public Sharing API\n getPublicFile!: FilesBindings['getPublicFile'];\n getPublicFolder!: FilesBindings['getPublicFolder'];\n getPublicFolderFiles!: FilesBindings['getPublicFolderFiles'];\n\n // Events API\n getEventRules!: EventsBindings['getEventRules'];\n getAvailableActions!: EventsBindings['getAvailableActions'];\n searchEventRules!: EventsBindings['searchEventRules'];\n getEventRule!: EventsBindings['getEventRule'];\n createEventRule!: EventsBindings['createEventRule'];\n updateEventRule!: EventsBindings['updateEventRule'];\n deleteEventRule!: EventsBindings['deleteEventRule'];\n reorderEventRules!: EventsBindings['reorderEventRules'];\n getWebhookLogs!: EventsBindings['getWebhookLogs'];\n getRuleExecutions!: EventsBindings['getRuleExecutions'];\n getRoutines!: EventsBindings['getRoutines'];\n getRoutine!: EventsBindings['getRoutine'];\n createRoutine!: EventsBindings['createRoutine'];\n updateRoutine!: EventsBindings['updateRoutine'];\n deleteRoutine!: EventsBindings['deleteRoutine'];\n runRoutine!: EventsBindings['runRoutine'];\n getRoutineRuns!: EventsBindings['getRoutineRuns'];\n resetRoutineRuns!: EventsBindings['resetRoutineRuns'];\n previewSchedule!: EventsBindings['previewSchedule'];\n\n // Workflows API\n getWorkflows!: WorkflowsBindings['getWorkflows'];\n getWorkflow!: WorkflowsBindings['getWorkflow'];\n getWorkflowActivity!: WorkflowsBindings['getWorkflowActivity'];\n getWorkflowsActivityBatch!: WorkflowsBindings['getWorkflowsActivityBatch'];\n getWorkflowDiagram!: WorkflowsBindings['getWorkflowDiagram'];\n getWorkflowThumbnailUrl!: WorkflowsBindings['getWorkflowThumbnailUrl'];\n createWorkflow!: WorkflowsBindings['createWorkflow'];\n updateWorkflow!: WorkflowsBindings['updateWorkflow'];\n getWorkflowDeletionPreview!: WorkflowsBindings['getWorkflowDeletionPreview'];\n deleteWorkflow!: WorkflowsBindings['deleteWorkflow'];\n archiveWorkflow!: WorkflowsBindings['archiveWorkflow'];\n unarchiveWorkflow!: WorkflowsBindings['unarchiveWorkflow'];\n cloneWorkflow!: WorkflowsBindings['cloneWorkflow'];\n getWorkflowTemplates!: WorkflowsBindings['getWorkflowTemplates'];\n createWorkflowFromTemplate!: WorkflowsBindings['createWorkflowFromTemplate'];\n getWorkflowTaskAssignmentStats!: WorkflowsBindings['getWorkflowTaskAssignmentStats'];\n getTaskChats!: WorkflowsBindings['getTaskChats'];\n getWorkflowAccessValidation!: WorkflowsBindings['getWorkflowAccessValidation'];\n getWorkflowConfigValidation!: WorkflowsBindings['getWorkflowConfigValidation'];\n getWorkflowNotes!: WorkflowsBindings['getWorkflowNotes'];\n createWorkflowNote!: WorkflowsBindings['createWorkflowNote'];\n updateWorkflowNote!: WorkflowsBindings['updateWorkflowNote'];\n deleteWorkflowNote!: WorkflowsBindings['deleteWorkflowNote'];\n getWorkflowContributors!: WorkflowsBindings['getWorkflowContributors'];\n createWorkflowContributor!: WorkflowsBindings['createWorkflowContributor'];\n updateWorkflowContributor!: WorkflowsBindings['updateWorkflowContributor'];\n deleteWorkflowContributor!: WorkflowsBindings['deleteWorkflowContributor'];\n getWorkflowVersions!: WorkflowsBindings['getWorkflowVersions'];\n getWorkflowVersionActive!: WorkflowsBindings['getWorkflowVersionActive'];\n getWorkflowVersion!: WorkflowsBindings['getWorkflowVersion'];\n publishWorkflowVersion!: WorkflowsBindings['publishWorkflowVersion'];\n updateWorkflowVersion!: WorkflowsBindings['updateWorkflowVersion'];\n activateWorkflowVersion!: WorkflowsBindings['activateWorkflowVersion'];\n deactivateWorkflowVersion!: WorkflowsBindings['deactivateWorkflowVersion'];\n diffWorkflowVersions!: WorkflowsBindings['diffWorkflowVersions'];\n getWorkspaceBuilders!: WorkflowsBindings['getWorkspaceBuilders'];\n getWorkspaceBuilder!: WorkflowsBindings['getWorkspaceBuilder'];\n buildWorkspace!: WorkflowsBindings['buildWorkspace'];\n validateWorkflowName!: WorkflowsBindings['validateWorkflowName'];\n previewTTS!: WorkflowsBindings['previewTTS'];\n previewThinkingSound!: WorkflowsBindings['previewThinkingSound'];\n getSupervisors!: WorkflowsBindings['getSupervisors'];\n getSupervisor!: WorkflowsBindings['getSupervisor'];\n createSupervisor!: WorkflowsBindings['createSupervisor'];\n updateSupervisor!: WorkflowsBindings['updateSupervisor'];\n deleteSupervisor!: WorkflowsBindings['deleteSupervisor'];\n\n // Calendars API\n getCalendars!: CalendarsBindings['getCalendars'];\n getCalendar!: CalendarsBindings['getCalendar'];\n createCalendar!: CalendarsBindings['createCalendar'];\n updateCalendar!: CalendarsBindings['updateCalendar'];\n deleteCalendar!: CalendarsBindings['deleteCalendar'];\n getCalendarSchedules!: CalendarsBindings['getCalendarSchedules'];\n createCalendarSchedule!: CalendarsBindings['createCalendarSchedule'];\n updateCalendarSchedule!: CalendarsBindings['updateCalendarSchedule'];\n deleteCalendarSchedule!: CalendarsBindings['deleteCalendarSchedule'];\n checkAvailability!: CalendarsBindings['checkAvailability'];\n getAvailableSlots!: CalendarsBindings['getAvailableSlots'];\n getCalendarEvents!: CalendarsBindings['getCalendarEvents'];\n getCalendarEvent!: CalendarsBindings['getCalendarEvent'];\n createCalendarEvent!: CalendarsBindings['createCalendarEvent'];\n updateCalendarEvent!: CalendarsBindings['updateCalendarEvent'];\n cancelCalendarEvent!: CalendarsBindings['cancelCalendarEvent'];\n deleteCalendarEvent!: CalendarsBindings['deleteCalendarEvent'];\n updateEventAttendee!: CalendarsBindings['updateEventAttendee'];\n getCalendarEventTypes!: CalendarsBindings['getCalendarEventTypes'];\n getCalendarEventType!: CalendarsBindings['getCalendarEventType'];\n createCalendarEventType!: CalendarsBindings['createCalendarEventType'];\n updateCalendarEventType!: CalendarsBindings['updateCalendarEventType'];\n deleteCalendarEventType!: CalendarsBindings['deleteCalendarEventType'];\n generateICalToken!: CalendarsBindings['generateICalToken'];\n revokeICalToken!: CalendarsBindings['revokeICalToken'];\n getICalFeedUrl!: CalendarsBindings['getICalFeedUrl'];\n getGoogleCalendarStatus!: CalendarsBindings['getGoogleCalendarStatus'];\n listGoogleCalendars!: CalendarsBindings['listGoogleCalendars'];\n linkCalendarToGoogle!: CalendarsBindings['linkCalendarToGoogle'];\n unlinkCalendarFromGoogle!: CalendarsBindings['unlinkCalendarFromGoogle'];\n syncCalendarWithGoogle!: CalendarsBindings['syncCalendarWithGoogle'];\n getMilestones!: CalendarsBindings['getMilestones'];\n getMilestone!: CalendarsBindings['getMilestone'];\n createMilestone!: CalendarsBindings['createMilestone'];\n updateMilestone!: CalendarsBindings['updateMilestone'];\n deleteMilestone!: CalendarsBindings['deleteMilestone'];\n\n // Communications API\n getPhoneNumbers!: CommunicationsBindings['getPhoneNumbers'];\n getAvailablePhoneNumbers!: CommunicationsBindings['getAvailablePhoneNumbers'];\n requestPhoneNumber!: CommunicationsBindings['requestPhoneNumber'];\n getPhoneNumber!: CommunicationsBindings['getPhoneNumber'];\n createPhoneNumber!: CommunicationsBindings['createPhoneNumber'];\n updatePhoneNumber!: CommunicationsBindings['updatePhoneNumber'];\n getArchiveBlockers!: CommunicationsBindings['getArchiveBlockers'];\n archivePhoneNumber!: CommunicationsBindings['archivePhoneNumber'];\n getPhoneNumberCalls!: CommunicationsBindings['getPhoneNumberCalls'];\n getPhoneNumberMessages!: CommunicationsBindings['getPhoneNumberMessages'];\n getPhoneNumberVoicemails!: CommunicationsBindings['getPhoneNumberVoicemails'];\n fetchVoicemailAudio!: CommunicationsBindings['fetchVoicemailAudio'];\n updateVoicemailStatus!: CommunicationsBindings['updateVoicemailStatus'];\n releasePhoneNumber!: CommunicationsBindings['releasePhoneNumber'];\n getLinkablePhones!: CommunicationsBindings['getLinkablePhones'];\n linkPhoneNumber!: CommunicationsBindings['linkPhoneNumber'];\n getInboxes!: CommunicationsBindings['getInboxes'];\n getInbox!: CommunicationsBindings['getInbox'];\n createInbox!: CommunicationsBindings['createInbox'];\n updateInbox!: CommunicationsBindings['updateInbox'];\n deleteInbox!: CommunicationsBindings['deleteInbox'];\n getInboxEmails!: CommunicationsBindings['getInboxEmails'];\n getInboxEmail!: CommunicationsBindings['getInboxEmail'];\n markEmailAsRead!: CommunicationsBindings['markEmailAsRead'];\n markEmailAsUnread!: CommunicationsBindings['markEmailAsUnread'];\n convertEmail!: CommunicationsBindings['convertEmail'];\n downloadEmailAttachment!: CommunicationsBindings['downloadEmailAttachment'];\n getInboxThreads!: CommunicationsBindings['getInboxThreads'];\n getThreadEmails!: CommunicationsBindings['getThreadEmails'];\n getChatEmails!: CommunicationsBindings['getChatEmails'];\n replyToEmail!: CommunicationsBindings['replyToEmail'];\n getNotificationRules!: CommunicationsBindings['getNotificationRules'];\n createNotificationRule!: CommunicationsBindings['createNotificationRule'];\n updateNotificationRule!: CommunicationsBindings['updateNotificationRule'];\n deleteNotificationRule!: CommunicationsBindings['deleteNotificationRule'];\n\n // Toolkits API\n getToolkits!: ToolkitsBindings['getToolkits'];\n getTool!: ToolkitsBindings['getTool'];\n getTemplateContext!: ToolkitsBindings['getTemplateContext'];\n previewTemplate!: ToolkitsBindings['previewTemplate'];\n getVariableRegistry!: ToolkitsBindings['getVariableRegistry'];\n getChatModels!: ToolkitsBindings['getChatModels'];\n getRealtimeModels!: ToolkitsBindings['getRealtimeModels'];\n getSTTModels!: ToolkitsBindings['getSTTModels'];\n getTTSModels!: ToolkitsBindings['getTTSModels'];\n getVoiceModels!: ToolkitsBindings['getVoiceModels'];\n getAllModels!: ToolkitsBindings['getAllModels'];\n getCustomToolkits!: ToolkitsBindings['getCustomToolkits'];\n getCustomToolkit!: ToolkitsBindings['getCustomToolkit'];\n createCustomToolkit!: ToolkitsBindings['createCustomToolkit'];\n updateCustomToolkit!: ToolkitsBindings['updateCustomToolkit'];\n deleteCustomToolkit!: ToolkitsBindings['deleteCustomToolkit'];\n enableCustomToolkit!: ToolkitsBindings['enableCustomToolkit'];\n disableCustomToolkit!: ToolkitsBindings['disableCustomToolkit'];\n createCustomTool!: ToolkitsBindings['createCustomTool'];\n updateCustomTool!: ToolkitsBindings['updateCustomTool'];\n deleteCustomTool!: ToolkitsBindings['deleteCustomTool'];\n getMcpServers!: ToolkitsBindings['getMcpServers'];\n getMcpServer!: ToolkitsBindings['getMcpServer'];\n createMcpServer!: ToolkitsBindings['createMcpServer'];\n updateMcpServer!: ToolkitsBindings['updateMcpServer'];\n deleteMcpServer!: ToolkitsBindings['deleteMcpServer'];\n enableMcpServer!: ToolkitsBindings['enableMcpServer'];\n disableMcpServer!: ToolkitsBindings['disableMcpServer'];\n getMcpServerTools!: ToolkitsBindings['getMcpServerTools'];\n getMcpServerResources!: ToolkitsBindings['getMcpServerResources'];\n getMcpServerPrompts!: ToolkitsBindings['getMcpServerPrompts'];\n testMcpServerConnection!: ToolkitsBindings['testMcpServerConnection'];\n discoverOAuthMetadata!: ToolkitsBindings['discoverOAuthMetadata'];\n getFeatureRegistry!: ToolkitsBindings['getFeatureRegistry'];\n getPublicFeatureRegistry!: ToolkitsBindings['getPublicFeatureRegistry'];\n getFeatureBySlug!: ToolkitsBindings['getFeatureBySlug'];\n\n // Billing API\n getApiKeys!: BillingBindings['getApiKeys'];\n createApiKey!: BillingBindings['createApiKey'];\n revokeApiKey!: BillingBindings['revokeApiKey'];\n getGlobalApiKeys!: BillingBindings['getGlobalApiKeys'];\n createGlobalApiKey!: BillingBindings['createGlobalApiKey'];\n revokeGlobalApiKey!: BillingBindings['revokeGlobalApiKey'];\n getSubscriptions!: BillingBindings['getSubscriptions'];\n getWorkspaceSubscriptions!: BillingBindings['getWorkspaceSubscriptions'];\n cancelSubscription!: BillingBindings['cancelSubscription'];\n reactivateSubscription!: BillingBindings['reactivateSubscription'];\n updateSubscription!: BillingBindings['updateSubscription'];\n addWorkspaceToSubscription!: BillingBindings['addWorkspaceToSubscription'];\n purchaseCredits!: BillingBindings['purchaseCredits'];\n getAIUsageReport!: BillingBindings['getAIUsageReport'];\n getSMSUsageReport!: BillingBindings['getSMSUsageReport'];\n getPhoneUsageReport!: BillingBindings['getPhoneUsageReport'];\n getVoiceUsageReport!: BillingBindings['getVoiceUsageReport'];\n getMemberUsage!: BillingBindings['getMemberUsage'];\n\n // Apps API\n listApps!: AppsBindings['listApps'];\n createApp!: AppsBindings['createApp'];\n getApp!: AppsBindings['getApp'];\n getAppByClientId!: AppsBindings['getAppByClientId'];\n updateApp!: AppsBindings['updateApp'];\n deleteApp!: AppsBindings['deleteApp'];\n regenerateClientSecret!: AppsBindings['regenerateClientSecret'];\n listBuilders!: AppsBindings['listBuilders'];\n getBuilder!: AppsBindings['getBuilder'];\n getBuilderApps!: AppsBindings['getBuilderApps'];\n createBuilder!: AppsBindings['createBuilder'];\n updateBuilder!: AppsBindings['updateBuilder'];\n deleteBuilder!: AppsBindings['deleteBuilder'];\n createInquiry!: AppsBindings['createInquiry'];\n enrichInquiry!: AppsBindings['enrichInquiry'];\n listInquiries!: AppsBindings['listInquiries'];\n getInquiry!: AppsBindings['getInquiry'];\n updateInquiry!: AppsBindings['updateInquiry'];\n deleteInquiry!: AppsBindings['deleteInquiry'];\n exportInquiriesCsv!: AppsBindings['exportInquiriesCsv'];\n authorize!: AppsBindings['authorize'];\n exchangeOAuthToken!: AppsBindings['exchangeOAuthToken'];\n getAvailableScopes!: AppsBindings['getAvailableScopes'];\n getOAuthConnectionStatus!: AppsBindings['getOAuthConnectionStatus'];\n getOAuthAuthorizationUrl!: AppsBindings['getOAuthAuthorizationUrl'];\n disconnectOAuthProvider!: AppsBindings['disconnectOAuthProvider'];\n\n // Integrations API\n getMondayBoards!: IntegrationsBindings['getMondayBoards'];\n getMondayBoardColumns!: IntegrationsBindings['getMondayBoardColumns'];\n getMondayBoardGroups!: IntegrationsBindings['getMondayBoardGroups'];\n getMondayCurrentUserInfo!: IntegrationsBindings['getMondayCurrentUserInfo'];\n\n // Monday.com Connection API\n configureMondayConnection!: IntegrationsBindings['configureMondayConnection'];\n getMondayConnectionStatus!: IntegrationsBindings['getMondayConnectionStatus'];\n authorizeMondayConnection!: IntegrationsBindings['authorizeMondayConnection'];\n testMondayConnection!: IntegrationsBindings['testMondayConnection'];\n disconnectMondayConnection!: IntegrationsBindings['disconnectMondayConnection'];\n disableMondayConnection!: IntegrationsBindings['disableMondayConnection'];\n enableMondayConnection!: IntegrationsBindings['enableMondayConnection'];\n deleteMondayConnection!: IntegrationsBindings['deleteMondayConnection'];\n getMondayConnectionBoards!: IntegrationsBindings['getMondayConnectionBoards'];\n getMondayConnectionBoardColumns!: IntegrationsBindings['getMondayConnectionBoardColumns'];\n getMondayConnectionBoardGroups!: IntegrationsBindings['getMondayConnectionBoardGroups'];\n getMondaySyncConfig!: IntegrationsBindings['getMondaySyncConfig'];\n updateMondaySyncConfig!: IntegrationsBindings['updateMondaySyncConfig'];\n getLinkedMondayMembers!: IntegrationsBindings['getLinkedMondayMembers'];\n getMondayReconciliationMatches!: IntegrationsBindings['getMondayReconciliationMatches'];\n linkMemberToMonday!: IntegrationsBindings['linkMemberToMonday'];\n bulkLinkMembersToMonday!: IntegrationsBindings['bulkLinkMembersToMonday'];\n unlinkMemberFromMonday!: IntegrationsBindings['unlinkMemberFromMonday'];\n getLinkedRecords!: IntegrationsBindings['getLinkedRecords'];\n importFromBoard!: IntegrationsBindings['importFromBoard'];\n autoCreateDataTypeFromBoard!: IntegrationsBindings['autoCreateDataTypeFromBoard'];\n\n // Discord Bots API\n getDiscordBots!: IntegrationsBindings['getDiscordBots'];\n getDiscordBot!: IntegrationsBindings['getDiscordBot'];\n getDiscordBotByUuid!: IntegrationsBindings['getDiscordBotByUuid'];\n createDiscordBot!: IntegrationsBindings['createDiscordBot'];\n updateDiscordBot!: IntegrationsBindings['updateDiscordBot'];\n deleteDiscordBot!: IntegrationsBindings['deleteDiscordBot'];\n registerDiscordSlashCommands!: IntegrationsBindings['registerDiscordSlashCommands'];\n registerLinkedRolesMetadata!: IntegrationsBindings['registerLinkedRolesMetadata'];\n getDiscordThreads!: IntegrationsBindings['getDiscordThreads'];\n getDiscordGuilds!: IntegrationsBindings['getDiscordGuilds'];\n getDiscordBotAccounts!: IntegrationsBindings['getDiscordBotAccounts'];\n getMyCredentials!: IntegrationsBindings['getMyCredentials'];\n unlinkCredential!: IntegrationsBindings['unlinkCredential'];\n\n // Slack Apps API\n getSlackApps!: IntegrationsBindings['getSlackApps'];\n getSlackApp!: IntegrationsBindings['getSlackApp'];\n createSlackApp!: IntegrationsBindings['createSlackApp'];\n updateSlackApp!: IntegrationsBindings['updateSlackApp'];\n deleteSlackApp!: IntegrationsBindings['deleteSlackApp'];\n getSlackThreads!: IntegrationsBindings['getSlackThreads'];\n getSlackInstallations!: IntegrationsBindings['getSlackInstallations'];\n getSlackAppAccounts!: IntegrationsBindings['getSlackAppAccounts'];\n\n // Teams Apps API\n getTeamsApps!: IntegrationsBindings['getTeamsApps'];\n getTeamsApp!: IntegrationsBindings['getTeamsApp'];\n createTeamsApp!: IntegrationsBindings['createTeamsApp'];\n updateTeamsApp!: IntegrationsBindings['updateTeamsApp'];\n deleteTeamsApp!: IntegrationsBindings['deleteTeamsApp'];\n getTeamsConversations!: IntegrationsBindings['getTeamsConversations'];\n getTeamsInstallations!: IntegrationsBindings['getTeamsInstallations'];\n getTeamsAppAccounts!: IntegrationsBindings['getTeamsAppAccounts'];\n\n // FHIR Connections API\n getFhirConnections!: IntegrationsBindings['getFhirConnections'];\n getFhirConnection!: IntegrationsBindings['getFhirConnection'];\n getFhirConnectionByUuid!: IntegrationsBindings['getFhirConnectionByUuid'];\n createFhirConnection!: IntegrationsBindings['createFhirConnection'];\n updateFhirConnection!: IntegrationsBindings['updateFhirConnection'];\n deleteFhirConnection!: IntegrationsBindings['deleteFhirConnection'];\n testFhirConnection!: IntegrationsBindings['testFhirConnection'];\n fhirSearchPatients!: IntegrationsBindings['fhirSearchPatients'];\n fhirSearchPractitioners!: IntegrationsBindings['fhirSearchPractitioners'];\n fhirSearchLocations!: IntegrationsBindings['fhirSearchLocations'];\n fhirFetchCareTeam!: IntegrationsBindings['fhirFetchCareTeam'];\n fhirFetchEncounters!: IntegrationsBindings['fhirFetchEncounters'];\n fhirCreateEncounter!: IntegrationsBindings['fhirCreateEncounter'];\n fhirListLinkedMembers!: IntegrationsBindings['fhirListLinkedMembers'];\n fhirLinkMember!: IntegrationsBindings['fhirLinkMember'];\n fhirUnlinkMember!: IntegrationsBindings['fhirUnlinkMember'];\n fhirSyncMember!: IntegrationsBindings['fhirSyncMember'];\n fhirImportPatient!: IntegrationsBindings['fhirImportPatient'];\n fhirCsvImportInspect!: IntegrationsBindings['fhirCsvImportInspect'];\n fhirGetCsvImportSettings!: IntegrationsBindings['fhirGetCsvImportSettings'];\n fhirUpdateCsvImportSettings!: IntegrationsBindings['fhirUpdateCsvImportSettings'];\n fhirCsvImportApply!: IntegrationsBindings['fhirCsvImportApply'];\n fhirGetCsvImportRuns!: IntegrationsBindings['fhirGetCsvImportRuns'];\n fhirGetCsvImportRunItems!: IntegrationsBindings['fhirGetCsvImportRunItems'];\n fhirGetEncounterSyncStatus!: IntegrationsBindings['fhirGetEncounterSyncStatus'];\n fhirUpdateEncounterSync!: IntegrationsBindings['fhirUpdateEncounterSync'];\n fhirRunEncounterSync!: IntegrationsBindings['fhirRunEncounterSync'];\n fhirGetEncounterSyncRuns!: IntegrationsBindings['fhirGetEncounterSyncRuns'];\n fhirRefreshEncounterPatient!: IntegrationsBindings['fhirRefreshEncounterPatient'];\n fhirBackfillEncounterSync!: IntegrationsBindings['fhirBackfillEncounterSync'];\n\n // Healthie API\n configureHealthie!: IntegrationsBindings['configureHealthie'];\n getHealthieStatus!: IntegrationsBindings['getHealthieStatus'];\n listHealthieProviders!: IntegrationsBindings['listHealthieProviders'];\n linkCalendarToHealthie!: IntegrationsBindings['linkCalendarToHealthie'];\n unlinkCalendarFromHealthie!: IntegrationsBindings['unlinkCalendarFromHealthie'];\n syncCalendarWithHealthie!: IntegrationsBindings['syncCalendarWithHealthie'];\n getLinkedHealthieMembers!: IntegrationsBindings['getLinkedHealthieMembers'];\n getHealthieReconciliationMatches!: IntegrationsBindings['getHealthieReconciliationMatches'];\n linkMemberToHealthie!: IntegrationsBindings['linkMemberToHealthie'];\n unlinkMemberFromHealthie!: IntegrationsBindings['unlinkMemberFromHealthie'];\n listHealthieAppointmentTypes!: IntegrationsBindings['listHealthieAppointmentTypes'];\n listHealthiePatients!: IntegrationsBindings['listHealthiePatients'];\n getHealthieAvailableSlots!: IntegrationsBindings['getHealthieAvailableSlots'];\n bookHealthieAppointment!: IntegrationsBindings['bookHealthieAppointment'];\n\n // Confluence API\n configureConfluence!: IntegrationsBindings['configureConfluence'];\n startConfluenceOAuth!: IntegrationsBindings['startConfluenceOAuth'];\n getConfluenceStatus!: IntegrationsBindings['getConfluenceStatus'];\n disconnectConfluence!: IntegrationsBindings['disconnectConfluence'];\n disableConfluence!: IntegrationsBindings['disableConfluence'];\n enableConfluence!: IntegrationsBindings['enableConfluence'];\n deleteConfluence!: IntegrationsBindings['deleteConfluence'];\n listConfluenceSpaces!: IntegrationsBindings['listConfluenceSpaces'];\n listConfluencePages!: IntegrationsBindings['listConfluencePages'];\n\n // Salesforce API\n configureSalesforce!: IntegrationsBindings['configureSalesforce'];\n startSalesforceOAuth!: IntegrationsBindings['startSalesforceOAuth'];\n getSalesforceStatus!: IntegrationsBindings['getSalesforceStatus'];\n disconnectSalesforce!: IntegrationsBindings['disconnectSalesforce'];\n disableSalesforce!: IntegrationsBindings['disableSalesforce'];\n enableSalesforce!: IntegrationsBindings['enableSalesforce'];\n deleteSalesforce!: IntegrationsBindings['deleteSalesforce'];\n getSalesforceReconciliationMatches!: IntegrationsBindings['getSalesforceReconciliationMatches'];\n linkMemberToSalesforce!: IntegrationsBindings['linkMemberToSalesforce'];\n bulkLinkMembersToSalesforce!: IntegrationsBindings['bulkLinkMembersToSalesforce'];\n unlinkMemberFromSalesforce!: IntegrationsBindings['unlinkMemberFromSalesforce'];\n getLinkedSalesforceMembers!: IntegrationsBindings['getLinkedSalesforceMembers'];\n getSalesforceSyncConfig!: IntegrationsBindings['getSalesforceSyncConfig'];\n updateSalesforceSyncConfig!: IntegrationsBindings['updateSalesforceSyncConfig'];\n describeSalesforceObject!: IntegrationsBindings['describeSalesforceObject'];\n searchSalesforceRecords!: IntegrationsBindings['searchSalesforceRecords'];\n importSalesforceMembers!: IntegrationsBindings['importSalesforceMembers'];\n\n // HubSpot API\n configureHubspot!: IntegrationsBindings['configureHubspot'];\n startHubspotOAuth!: IntegrationsBindings['startHubspotOAuth'];\n getHubspotStatus!: IntegrationsBindings['getHubspotStatus'];\n disconnectHubspot!: IntegrationsBindings['disconnectHubspot'];\n disableHubspot!: IntegrationsBindings['disableHubspot'];\n enableHubspot!: IntegrationsBindings['enableHubspot'];\n deleteHubspot!: IntegrationsBindings['deleteHubspot'];\n getHubspotReconciliationMatches!: IntegrationsBindings['getHubspotReconciliationMatches'];\n linkMemberToHubspot!: IntegrationsBindings['linkMemberToHubspot'];\n bulkLinkMembersToHubspot!: IntegrationsBindings['bulkLinkMembersToHubspot'];\n unlinkMemberFromHubspot!: IntegrationsBindings['unlinkMemberFromHubspot'];\n getLinkedHubspotMembers!: IntegrationsBindings['getLinkedHubspotMembers'];\n searchHubspotRecords!: IntegrationsBindings['searchHubspotRecords'];\n importHubspotMembers!: IntegrationsBindings['importHubspotMembers'];\n getHubspotContactProperties!: IntegrationsBindings['getHubspotContactProperties'];\n getHubspotManagedRules!: IntegrationsBindings['getHubspotManagedRules'];\n getHubspotSyncLogs!: IntegrationsBindings['getHubspotSyncLogs'];\n getHubspotTransformPresets!: IntegrationsBindings['getHubspotTransformPresets'];\n\n // Connection Sync API (generic)\n getConnectionSyncCapabilities!: IntegrationsBindings['getConnectionSyncCapabilities'];\n getConnectionSyncConfig!: IntegrationsBindings['getConnectionSyncConfig'];\n updateConnectionSyncConfig!: IntegrationsBindings['updateConnectionSyncConfig'];\n getConnectionSyncCheckpoint!: IntegrationsBindings['getConnectionSyncCheckpoint'];\n startSyncRun!: IntegrationsBindings['startSyncRun'];\n getSyncRuns!: IntegrationsBindings['getSyncRuns'];\n getSyncRunItems!: IntegrationsBindings['getSyncRunItems'];\n getMemberSyncSummary!: IntegrationsBindings['getMemberSyncSummary'];\n clearConnectionMemberExclusion!: IntegrationsBindings['clearConnectionMemberExclusion'];\n\n // App Connections API\n listAvailableAppConnections!: IntegrationsBindings['listAvailableAppConnections'];\n listAppConnections!: IntegrationsBindings['listAppConnections'];\n enablePlatformApp!: IntegrationsBindings['enablePlatformApp'];\n getPlatformApp!: IntegrationsBindings['getPlatformApp'];\n updatePlatformApp!: IntegrationsBindings['updatePlatformApp'];\n deletePlatformApp!: IntegrationsBindings['deletePlatformApp'];\n listConnectionMemberFieldKeys!: IntegrationsBindings['listConnectionMemberFieldKeys'];\n\n // Pronunciations API\n getPronunciationEntries!: PronunciationsBindings['getPronunciationEntries'];\n createPronunciationEntry!: PronunciationsBindings['createPronunciationEntry'];\n updatePronunciationEntry!: PronunciationsBindings['updatePronunciationEntry'];\n deletePronunciationEntry!: PronunciationsBindings['deletePronunciationEntry'];\n exportPronunciationEntries!: PronunciationsBindings['exportPronunciationEntries'];\n importPronunciationEntries!: PronunciationsBindings['importPronunciationEntries'];\n getMyPronunciations!: PronunciationsBindings['getMyPronunciations'];\n createMyPronunciation!: PronunciationsBindings['createMyPronunciation'];\n updateMyPronunciation!: PronunciationsBindings['updateMyPronunciation'];\n deleteMyPronunciation!: PronunciationsBindings['deleteMyPronunciation'];\n suggestPronunciations!: PronunciationsBindings['suggestPronunciations'];\n getRecommendedVoices!: PronunciationsBindings['getRecommendedVoices'];\n previewPronunciation!: PronunciationsBindings['previewPronunciation'];\n\n // Customers API (self-service billing portal)\n getMyCustomers!: CustomersBindings['getMyCustomers'];\n getMyCustomer!: CustomersBindings['getMyCustomer'];\n getMyCustomerAccounts!: CustomersBindings['getMyCustomerAccounts'];\n getMyCustomerSubscriptions!: CustomersBindings['getMyCustomerSubscriptions'];\n getMyCustomerInvoices!: CustomersBindings['getMyCustomerInvoices'];\n updateMyCustomer!: CustomersBindings['updateMyCustomer'];\n createMyCustomerSetupIntent!: CustomersBindings['createMyCustomerSetupIntent'];\n getMyCustomerPaymentMethods!: CustomersBindings['getMyCustomerPaymentMethods'];\n attachMyCustomerPaymentMethod!: CustomersBindings['attachMyCustomerPaymentMethod'];\n detachMyCustomerPaymentMethod!: CustomersBindings['detachMyCustomerPaymentMethod'];\n setDefaultMyCustomerPaymentMethod!: CustomersBindings['setDefaultMyCustomerPaymentMethod'];\n getMyCustomerCreditGrants!: CustomersBindings['getMyCustomerCreditGrants'];\n\n // Resellers API (self-service reseller portal)\n getMyResellers!: ResellersBindings['getMyResellers'];\n getMyReseller!: ResellersBindings['getMyReseller'];\n getMyResellerAccounts!: ResellersBindings['getMyResellerAccounts'];\n getMyResellerProducts!: ResellersBindings['getMyResellerProducts'];\n getMyResellerSubscriptions!: ResellersBindings['getMyResellerSubscriptions'];\n updateMyReseller!: ResellersBindings['updateMyReseller'];\n\n // Support Requests API\n listSupportRequests!: SupportRequestsBindings['listSupportRequests'];\n getSupportRequest!: SupportRequestsBindings['getSupportRequest'];\n createSupportRequest!: SupportRequestsBindings['createSupportRequest'];\n commentOnSupportRequest!: SupportRequestsBindings['commentOnSupportRequest'];\n listOrgSupportRequests!: SupportRequestsBindings['listOrgSupportRequests'];\n getOrgSupportRequest!: SupportRequestsBindings['getOrgSupportRequest'];\n createOrgSupportRequest!: SupportRequestsBindings['createOrgSupportRequest'];\n commentOnOrgSupportRequest!: SupportRequestsBindings['commentOnOrgSupportRequest'];\n listWorkspaceSupportRequests!: SupportRequestsBindings['listWorkspaceSupportRequests'];\n getWorkspaceSupportRequest!: SupportRequestsBindings['getWorkspaceSupportRequest'];\n createWorkspaceSupportRequest!: SupportRequestsBindings['createWorkspaceSupportRequest'];\n commentOnWorkspaceSupportRequest!: SupportRequestsBindings['commentOnWorkspaceSupportRequest'];\n closeWorkspaceSupportRequest!: SupportRequestsBindings['closeWorkspaceSupportRequest'];\n clickWorkspaceSupportRequestResource!: SupportRequestsBindings['clickWorkspaceSupportRequestResource'];\n\n constructor(apiKey: string | undefined, baseUrl: string, customFetch?: typeof fetch) {\n // Create all API modules\n const apis = createApiModules(apiKey, baseUrl, customFetch);\n\n // Store all modules for cross-cutting operations\n this.apis = apis;\n\n // Store workspace invitations for public access\n this.workspaceInvitations = apis.workspaceInvitations;\n\n // Bind all public methods from each domain\n bindTasksMethods(this, apis.tasks, apis.abilities);\n bindChatsMethods(this, apis.chats);\n bindCallsMethods(this, apis.calls, apis.cel);\n bindDataTypesMethods(this, apis.dataTypes);\n bindMembersMethods(this, apis.members);\n bindAgentTasksMethods(this, apis.agentTasks);\n bindAgentsMethods(this, apis.agents);\n bindQualificationsMethods(this, apis.qualifications);\n bindPersonasMethods(this, apis.personas);\n bindJourneysMethods(this, apis.journeys);\n bindExperimentsMethods(this, apis.experiments);\n bindOperatorMethods(this, apis.operatorGroups);\n bindOrgMethods(this, apis.org);\n bindAccessGrantsMethods(this, apis.accessGrants);\n bindPromptsMethods(this, apis.prompts);\n bindWorkspacesMethods(this, apis.workspaces, apis.workspaceInvitations);\n bindAuthMethods(this, apis.auth, apis.assignments);\n bindSitesMethods(this, apis.sites);\n bindFilesMethods(this, apis.files);\n bindEventsMethods(this, apis.events);\n bindWorkflowsMethods(this, apis.workflows, apis.workflowNotes, apis.voice, apis.supervisors);\n bindCalendarsMethods(this, apis.calendars, apis.milestones);\n bindCommunicationsMethods(this, apis.phoneNumbers, apis.inboxes, apis.notificationRules);\n bindToolkitsMethods(\n this,\n apis.toolkits,\n apis.templates,\n apis.aiModels,\n apis.customToolkits,\n apis.mcpServers,\n apis.features\n );\n bindBillingMethods(this, apis.apiKeys, apis.subscriptions, apis.reports);\n bindAppsMethods(\n this,\n apis.apps,\n apis.builders,\n apis.inquiries,\n apis.oauth,\n apis.oauthConnections\n );\n bindIntegrationsMethods(\n this,\n apis.mondayIntegration,\n apis.discordBots,\n apis.slackApps,\n apis.teamsApps,\n apis.fhirConnections,\n apis.healthie,\n apis.salesforce,\n apis.hubspot,\n apis.appConnections,\n apis.connectionSync,\n apis.confluence\n );\n bindPronunciationsMethods(this, apis.pronunciations);\n bindCustomersMethods(this, apis.customers);\n bindResellersMethods(this, apis.resellers);\n bindSupportRequestMethods(this, apis.supportRequests);\n }\n\n /**\n * Set the handler for enhanced authentication requirements (RFC 9470 Step-Up Auth).\n * This handler is called when a 401 response includes WWW-Authenticate header\n * with error=\"insufficient_user_authentication\".\n * Propagates to all API modules.\n */\n setEnhancedAuthHandler(handler: EnhancedAuthHandler | undefined) {\n // Propagate to all API modules\n Object.values(this.apis).forEach((api) => {\n if (typeof api.setEnhancedAuthHandler === 'function') {\n api.setEnhancedAuthHandler(handler);\n }\n });\n }\n\n /**\n * Set the handler for organization authentication requirements.\n * This handler is called when a 401 response includes WWW-Authenticate header\n * with realm=\"org\".\n * Propagates to all API modules.\n */\n setOrgAuthHandler(handler: OrgAuthHandler | undefined) {\n // Propagate to all API modules\n Object.values(this.apis).forEach((api) => {\n if (typeof api.setOrgAuthHandler === 'function') {\n api.setOrgAuthHandler(handler);\n }\n });\n }\n\n /**\n * Set the org token for cross-domain / non-browser clients (e.g. CLI).\n * When set, all API requests include the X-Org-Token header so the backend\n * accepts the request without requiring a browser cookie.\n *\n * `orgUuid` is the org that issued the token. Pass it so the SDK can\n * detect a stale token (e.g. switching orgs mid-session) and re-fire the\n * org-auth handler instead of silently 401-ing.\n *\n * Propagates to all API modules.\n */\n setOrgToken(token: string | undefined, orgUuid?: string) {\n Object.values(this.apis).forEach((api) => {\n if (typeof api.setOrgToken === 'function') {\n api.setOrgToken(token, orgUuid);\n }\n });\n }\n\n /**\n * Update the API key across all modules.\n * Used after successful re-authentication.\n */\n updateApiKey(newApiKey: string) {\n Object.values(this.apis).forEach((api) => {\n if (typeof api.updateApiKey === 'function') {\n api.updateApiKey(newApiKey);\n }\n });\n }\n\n /**\n * Set the acting member UUID for member identity switching.\n * When set, all API requests will include the X-Acting-Member header.\n * The backend will validate that the authenticated account owns this member\n * and use it as the effective identity for the request.\n * Propagates to all API modules.\n */\n setActingMember(memberUuid: string | undefined) {\n Object.values(this.apis).forEach((api) => {\n if (typeof api.setActingMember === 'function') {\n api.setActingMember(memberUuid);\n }\n });\n }\n\n /**\n * Get the current acting member UUID.\n * Returns undefined if no member switch is active.\n */\n getActingMember(): string | undefined {\n // Get from the first API module that has this method\n for (const api of Object.values(this.apis)) {\n if (typeof api.getActingMember === 'function') {\n return api.getActingMember();\n }\n }\n return undefined;\n }\n}\n","/**\n * Chat type constants for frontend use.\n *\n * These constants mirror the backend ChatType enum in lib/constants.py\n * and should be kept in sync.\n */\n\n/**\n * Available chat types in the system.\n *\n * @property ASSIGNMENT - Standard workflow-based chats with DB assistants\n * @property MANAGER - Workspace management chats using builtin manager assistant\n * @property CONTRIBUTOR - Contributor input chats using builtin contributor assistant\n * @property DEVELOPER - Developer/debugging chats using builtin developer assistant\n * @property MEMBER - Member-to-member chats (human-human, human-agent, or agent-agent)\n */\nexport const CHAT_TYPES = {\n ASSIGNMENT: 'assignment',\n MANAGER: 'manager',\n CONTRIBUTOR: 'contributor',\n DEVELOPER: 'developer',\n MEMBER: 'member',\n\n /** @deprecated Use MEMBER instead */\n AGENT: 'member',\n /** @deprecated Use MEMBER instead */\n DM: 'member',\n} as const;\n\n/**\n * Type for valid chat type values.\n */\nexport type ChatType = (typeof CHAT_TYPES)[keyof typeof CHAT_TYPES];\n\n/**\n * Chat types that use builtin (virtual) assistants instead of DB assistants.\n * These chat types don't have an assistant record in the database.\n */\nexport const BUILTIN_ASSISTANT_CHAT_TYPES = new Set<ChatType>([\n CHAT_TYPES.MANAGER,\n CHAT_TYPES.CONTRIBUTOR,\n CHAT_TYPES.DEVELOPER,\n]);\n\n/**\n * Chat types that don't require assistant participant records.\n * Includes builtin assistant types plus member chats.\n */\nexport const NO_ASSISTANT_PARTICIPANT_CHAT_TYPES = new Set<ChatType>([\n ...BUILTIN_ASSISTANT_CHAT_TYPES,\n CHAT_TYPES.MEMBER,\n]);\n\n/**\n * Check if a chat type uses a builtin assistant.\n *\n * @param chatType - The chat type to check\n * @returns true if the chat type uses a builtin assistant\n */\nexport function usesBuiltinAssistant(chatType: string): boolean {\n return BUILTIN_ASSISTANT_CHAT_TYPES.has(chatType as ChatType);\n}\n\n/**\n * Check if a chat type requires an assistant participant record.\n *\n * @param chatType - The chat type to check\n * @returns true if the chat type requires an assistant participant record\n */\nexport function requiresAssistantParticipant(chatType: string): boolean {\n return !NO_ASSISTANT_PARTICIPANT_CHAT_TYPES.has(chatType as ChatType);\n}\n\n/**\n * Type guard to check if a string is a valid ChatType.\n *\n * @param value - The value to check\n * @returns true if the value is a valid ChatType\n */\nexport function isChatType(value: string): value is ChatType {\n return Object.values(CHAT_TYPES).includes(value as ChatType);\n}\n","import {\n AccountLookupResponse,\n CreateCustomerRequest,\n CreateResellerRequest,\n Customer,\n DataExportResponse,\n DeletionCancelResponse,\n DeletionRequestResponse,\n CustomerAccount,\n LinkResellerAccountRequest,\n Reseller,\n ResellerAccount,\n UpdateCustomerRequest,\n UpdateResellerRequest,\n AccountSortField,\n AdminAccount,\n AdminBulkWorkflowAccessValidationResponse,\n HealthDetailRequest,\n HealthMetricsRequest,\n HealthMetricsResponse,\n WorkspaceHealthDetail,\n AdminAccountFormData,\n AdminAccountMembership,\n AdminAccountOrgMembership,\n AdminOrganization,\n AdminUpdateProductRequest,\n AdminChat,\n AdminChatDetail,\n AdminChatsOptions,\n MemberOrgView,\n AdminWorkspace,\n AdminWorkspaceFormData,\n AdminWorkspaceMemberFormData,\n UsageDashboardResponse,\n CompareWithStripeResponse,\n UsageReport,\n UsageReportRequest,\n VoiceMetricsResponse,\n AdminTemporalDetailQuery,\n AdminTemporalFailedQuery,\n AdminTemporalStuckQuery,\n AdminTemporalSummaryQuery,\n FailedWorkflowsResponse,\n StuckWorkflowsResponse,\n TemporalAdminConfig,\n TemporalSummaryResponse,\n WorkflowDetailResponse,\n CreateOrganizationRequest,\n CreateProductRequest,\n GenerateSummariesResponse,\n Inbox,\n InboxMappingDetailResponse,\n LogoUploadRequest,\n LogoUploadResponse,\n Member,\n MemberRole,\n MergeMembersRequest,\n MergeMembersResponse,\n MissingMembershipItem,\n OrgMember,\n PaginatedResponse,\n PaginatedSubscriptionsResponse,\n PhoneNumber,\n UnmappedPhoneNumber,\n Product,\n ChangeWorkspaceProductRequest,\n ChangeWorkspaceProductResponse,\n ProvisionPlanRequest,\n ProvisionPlanResponse,\n SiteMapping,\n SiteMappingFormData,\n SortOrder,\n StripeCustomer,\n StripeCustomerCreateRequest,\n StripeCustomerUpdateRequest,\n StripePaymentMethod,\n BillingPeriod,\n Invoice,\n RecordPaymentRequest,\n DirectSubscriptionCreateRequest,\n StripeSubscriptionCreateRequest,\n StripeSubscriptionUpdateRequest,\n Subscription,\n SyncProductToStripeRequest,\n SyncProductToStripeResponse,\n ThemesListResponse,\n OrgA2PStatus,\n ProviderPhoneNumber,\n UpdateOrganizationRequest,\n Workspace,\n WorkspaceHealthResponse,\n WorkspaceSortField,\n AttachSupportRequestResourceRequest,\n CreateOutboundSupportRequestRequest,\n CreateSupportRequestCommentRequest,\n CreateSupportRequestNoteRequest,\n SupportRequest,\n SupportRequestListParams,\n SupportRequestListResponse,\n UpdateSupportRequestAttributesRequest,\n UpdateSupportRequestStatusRequest,\n} from '@gravity-rail/sdk/internal';\nimport { BaseApiClient } from '@gravity-rail/sdk/internal';\n\nfunction supportRequestParams(params?: SupportRequestListParams): string {\n const searchParams = new URLSearchParams();\n if (params?.page) searchParams.append('page', params.page.toString());\n if (params?.pageSize) searchParams.append('pageSize', params.pageSize.toString());\n if (params?.status) searchParams.append('status', params.status);\n if (params?.supportRequestType) {\n searchParams.append('supportRequestType', params.supportRequestType);\n }\n if (params?.severity) searchParams.append('severity', params.severity);\n if (params?.source) searchParams.append('source', params.source);\n if (params?.organizationId !== undefined) {\n searchParams.append('organizationId', params.organizationId.toString());\n }\n if (params?.workspaceId !== undefined) {\n searchParams.append('workspaceId', params.workspaceId.toString());\n }\n if (params?.linearLinked !== undefined) {\n searchParams.append('linearLinked', params.linearLinked.toString());\n }\n const query = searchParams.toString();\n return query ? `?${query}` : '';\n}\n\nexport class AdminApi extends BaseApiClient {\n // Support Requests API\n async listSupportRequestsAsAdmin(\n params?: SupportRequestListParams\n ): Promise<SupportRequestListResponse> {\n return this.fetch<SupportRequestListResponse>(\n `admin/support-requests${supportRequestParams(params)}`\n );\n }\n\n async getSupportRequestAsAdmin(uuid: string): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`admin/support-requests/${uuid}`);\n }\n\n async commentOnSupportRequestAsAdmin(\n uuid: string,\n data: CreateSupportRequestCommentRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`admin/support-requests/${uuid}/comments`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async noteOnSupportRequestAsAdmin(\n uuid: string,\n data: CreateSupportRequestNoteRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`admin/support-requests/${uuid}/notes`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updateSupportRequestStatusAsAdmin(\n uuid: string,\n data: UpdateSupportRequestStatusRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`admin/support-requests/${uuid}/status`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updateSupportRequestAttributesAsAdmin(\n uuid: string,\n data: UpdateSupportRequestAttributesRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`admin/support-requests/${uuid}/attributes`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async createSupportRequestLinearIssueAsAdmin(uuid: string): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`admin/support-requests/${uuid}/linear-issue`, {\n method: 'POST',\n });\n }\n\n // Proactive Support: outbound (us→customer) requests + resources\n async createOutboundSupportRequestAsAdmin(\n data: CreateOutboundSupportRequestRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>('admin/support-requests/outbound', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async attachSupportRequestResourceAsAdmin(\n uuid: string,\n data: AttachSupportRequestResourceRequest\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(`admin/support-requests/${uuid}/resources`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async revokeSupportRequestResourceAsAdmin(\n uuid: string,\n resourceUuid: string\n ): Promise<SupportRequest> {\n return this.fetch<SupportRequest>(\n `admin/support-requests/${uuid}/resources/${resourceUuid}/revoke`,\n { method: 'POST' }\n );\n }\n\n // Admin Accounts API\n async getAccounts(options: {\n search?: string;\n createdAfter?: string;\n createdBefore?: string;\n isActive?: boolean;\n organizationId?: number;\n workspaceId?: number;\n pendingDeletion?: boolean;\n sortBy?: AccountSortField;\n sortOrder?: SortOrder;\n page?: number;\n pageSize?: number;\n }): Promise<PaginatedResponse<AdminAccount>> {\n const params = new URLSearchParams();\n if (options.search) params.append('search', options.search);\n if (options.createdAfter) params.append('created_after', options.createdAfter);\n if (options.createdBefore) params.append('created_before', options.createdBefore);\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.isActive !== undefined) params.append('isActive', options.isActive.toString());\n if (options.organizationId !== undefined)\n params.append('organizationId', options.organizationId.toString());\n if (options.workspaceId !== undefined)\n params.append('workspaceId', options.workspaceId.toString());\n if (options.pendingDeletion !== undefined)\n params.append('pendingDeletion', options.pendingDeletion.toString());\n\n return this.fetch<PaginatedResponse<AdminAccount>>(`admin/accounts?${params.toString()}`);\n }\n\n async getAccountDetails(id: string | number): Promise<AdminAccount> {\n return this.fetch<AdminAccount>(`admin/accounts/${id}`);\n }\n\n async getAccountByUuid(uuid: string): Promise<AdminAccount> {\n return this.fetch<AdminAccount>(`admin/accounts/${uuid}`);\n }\n\n async getAccountMemberships(accountId: number): Promise<AdminAccountMembership[]> {\n return this.fetch<AdminAccountMembership[]>(`admin/accounts/${accountId}/memberships`);\n }\n\n async getAccountOrgMemberships(accountId: number): Promise<AdminAccountOrgMembership[]> {\n return this.fetch<AdminAccountOrgMembership[]>(`admin/accounts/${accountId}/org-memberships`);\n }\n\n async createAccountOrgMembership(\n accountId: number,\n organizationId: number,\n role: 'member' | 'admin' | 'owner' = 'member'\n ): Promise<{\n accountId: number;\n organizationId: number;\n organizationUuid: string;\n organizationName: string;\n role: string;\n message: string;\n }> {\n return this.fetch(`admin/accounts/${accountId}/org-memberships`, {\n method: 'POST',\n body: JSON.stringify({ organizationId, role }),\n });\n }\n\n async deleteAccountOrgMembership(\n accountId: number,\n organizationId: number\n ): Promise<{\n status: string;\n message: string;\n workspaceMembershipsRemoved: number;\n }> {\n return this.fetch(`admin/accounts/${accountId}/org-memberships/${organizationId}`, {\n method: 'DELETE',\n });\n }\n\n async getAccountMembership(\n accountId: number,\n workspaceId: string\n ): Promise<AdminAccountMembership> {\n return this.fetch<AdminAccountMembership>(\n `admin/accounts/${accountId}/memberships/${workspaceId}`\n );\n }\n\n async updateAccountMembership(\n accountId: number,\n workspaceId: string,\n updates: AdminWorkspaceMemberFormData\n ): Promise<AdminAccountMembership> {\n return this.fetch<AdminAccountMembership>(\n `admin/accounts/${accountId}/memberships/${workspaceId}`,\n {\n method: 'PUT',\n body: JSON.stringify(updates),\n }\n );\n }\n\n async createAccountMembership(\n accountId: number,\n workspaceId: string,\n data: { memberRoleId: number }\n ): Promise<AdminAccountMembership> {\n return this.fetch<AdminAccountMembership>(\n `admin/accounts/${accountId}/memberships/${workspaceId}`,\n {\n method: 'POST',\n body: JSON.stringify(data),\n }\n );\n }\n\n async deleteAccountMembership(accountId: number, workspaceId: string): Promise<void> {\n return this.fetch<void>(`admin/accounts/${accountId}/memberships/${workspaceId}`, {\n method: 'DELETE',\n });\n }\n\n async updateAccountAsAdmin(\n id: string | number,\n updates: AdminAccountFormData\n ): Promise<AdminAccount> {\n return this.fetch<AdminAccount>(`admin/accounts/${id}`, {\n method: 'PUT',\n body: JSON.stringify(updates),\n });\n }\n\n async createAccountAsAdmin(data: AdminAccountFormData): Promise<AdminAccount> {\n return this.fetch<AdminAccount>('admin/accounts', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async deleteAccountAsAdmin(id: number): Promise<void> {\n return this.fetch(`admin/accounts/${id}`, {\n method: 'DELETE',\n });\n }\n\n // GDPR Data Subject Rights (superuser only)\n\n async exportAccountData(accountId: number): Promise<DataExportResponse> {\n return this.fetch(`admin/data-rights/${accountId}/export`, {\n method: 'POST',\n });\n }\n\n async requestAccountDeletion(accountId: number): Promise<DeletionRequestResponse> {\n return this.fetch(`admin/data-rights/${accountId}/delete`, {\n method: 'POST',\n });\n }\n\n async cancelAccountDeletion(accountId: number): Promise<DeletionCancelResponse> {\n return this.fetch(`admin/data-rights/${accountId}/cancel-delete`, {\n method: 'POST',\n });\n }\n\n /**\n * Look up an account by email or phone. Returns verification status.\n * Used to check if a verified account exists before creating a new one.\n */\n async lookupAccount(options: {\n email?: string;\n phone?: string;\n }): Promise<AccountLookupResponse> {\n const params = new URLSearchParams();\n if (options.email) params.append('email', options.email);\n if (options.phone) params.append('phone', options.phone);\n\n return this.fetch<AccountLookupResponse>(`admin/accounts/lookup?${params.toString()}`);\n }\n\n // Admin Organizations API\n async getOrganizations(options?: {\n search?: string;\n page?: number;\n pageSize?: number;\n noSubscription?: boolean;\n sortBy?: string;\n sortOrder?: 'asc' | 'desc';\n }): Promise<PaginatedResponse<AdminOrganization>> {\n const params = new URLSearchParams();\n if (options?.search) params.append('search', options.search);\n if (options?.page) params.append('page', options.page.toString());\n if (options?.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options?.noSubscription) params.append('no_subscription', 'true');\n if (options?.sortBy) params.append('sortBy', options.sortBy);\n if (options?.sortOrder) params.append('sortOrder', options.sortOrder);\n\n return this.fetch<PaginatedResponse<AdminOrganization>>(\n `admin/organizations?${params.toString()}`\n );\n }\n\n /**\n * Get organization by ID or UUID.\n * Returns different response based on user's role:\n * - Admins/Owners: AdminOrganization with full details\n * - Members: MemberOrgView with basic info and workspace list\n *\n * Use `viewType` field to determine the response type:\n * - 'admin': AdminOrganization\n * - 'member': MemberOrgView\n */\n async getOrganization(idOrUuid: number | string): Promise<AdminOrganization | MemberOrgView> {\n return this.fetch<AdminOrganization | MemberOrgView>(`o/${idOrUuid}`);\n }\n\n /**\n * Get organization by numeric ID or UUID via admin endpoint.\n * Does NOT require organization membership — superuser-only.\n */\n async getOrganizationAsAdmin(idOrUuid: number | string): Promise<AdminOrganization> {\n return this.fetch<AdminOrganization>(`admin/organizations/${idOrUuid}`);\n }\n\n async getOrganizationMembersAsAdmin(\n organizationId: number,\n options?: { search?: string; role?: string; page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<OrgMember>> {\n const params = new URLSearchParams();\n if (options?.search) params.append('search', options.search);\n if (options?.role) params.append('role', options.role);\n if (options?.page) params.append('page', options.page.toString());\n if (options?.pageSize) params.append('pageSize', options.pageSize.toString());\n const qs = params.toString();\n return this.fetch<PaginatedResponse<OrgMember>>(\n `admin/organizations/${organizationId}/members${qs ? `?${qs}` : ''}`\n );\n }\n\n async createOrganization(data: CreateOrganizationRequest): Promise<AdminOrganization> {\n return this.fetch<AdminOrganization>('admin/organizations', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updateOrganization(\n id: number,\n data: UpdateOrganizationRequest\n ): Promise<AdminOrganization> {\n return this.fetch<AdminOrganization>(`admin/organizations/${id}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n async deleteOrganization(id: number): Promise<void> {\n return this.fetch(`admin/organizations/${id}`, {\n method: 'DELETE',\n });\n }\n\n /**\n * Join an organization with a specified role (superuser only).\n * Creates or updates membership in the target org.\n * @param orgUuid - Organization UUID or numeric ID as string\n */\n async joinOrganization(\n orgUuid: string,\n role: 'member' | 'admin' | 'owner' = 'owner'\n ): Promise<{\n accountId: number;\n organizationId: number;\n organizationUuid: string;\n email: string | null;\n role: string;\n message: string;\n }> {\n return this.fetch(`admin/organizations/${orgUuid}/join`, {\n method: 'POST',\n body: JSON.stringify({ role }),\n });\n }\n\n /**\n * Leave an organization (superuser only).\n * @param orgUuid - Organization UUID or numeric ID as string\n */\n async leaveOrganization(orgUuid: string): Promise<{ status: string; message: string }> {\n return this.fetch(`admin/organizations/${orgUuid}/join`, {\n method: 'DELETE',\n });\n }\n\n async generateLogoUploadUrl(\n organizationUuid: string,\n data: LogoUploadRequest\n ): Promise<LogoUploadResponse> {\n return this.fetch<LogoUploadResponse>(`o/${organizationUuid}/logo-upload-url`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n // Organization Members API - moved to OrgApi at /api/v2/o/{org_uuid}/members\n // See packages/client/src/api/org.ts\n\n // Organization Invitations API - moved to OrgApi at /api/v2/o/{org_uuid}/invitations\n // See packages/client/src/api/org.ts\n\n // Admin Products API\n async importProducts(workspaceId: number): Promise<void> {\n return this.fetch('admin/import-products', {\n method: 'POST',\n body: JSON.stringify({ workspaceId }),\n });\n }\n\n // ===== Product CRUD =====\n\n async createProductAsAdmin(product: CreateProductRequest): Promise<Product> {\n return this.fetch<Product>('admin/products', {\n method: 'POST',\n body: JSON.stringify(product),\n });\n }\n\n async getProductsAsAdmin(workspaceUuid?: string, productTypes?: string[]): Promise<Product[]> {\n const params = new URLSearchParams();\n if (workspaceUuid) {\n params.append('workspace_uuid', workspaceUuid);\n }\n if (productTypes && productTypes.length > 0) {\n productTypes.forEach((type) => params.append('product_types', type));\n }\n const queryString = params.toString();\n return this.fetch<Product[]>(`admin/products${queryString ? `?${queryString}` : ''}`);\n }\n\n async getProductAsAdmin(productId: number): Promise<Product> {\n return this.fetch<Product>(`admin/products/${productId}`);\n }\n\n async updateProductAsAdmin(\n product_id: number,\n product: AdminUpdateProductRequest\n ): Promise<Product> {\n return this.fetch<Product>(`admin/products/${product_id}`, {\n method: 'PUT',\n body: JSON.stringify(product),\n });\n }\n\n async deleteProductAsAdmin(productId: number): Promise<{ message: string }> {\n return this.fetch<{ message: string }>(`admin/products/${productId}`, {\n method: 'DELETE',\n });\n }\n\n // Admin Workspace API\n async getWorkspacesAsAdmin(\n options: {\n page?: number;\n pageSize?: number;\n sortBy?: WorkspaceSortField;\n sortOrder?: SortOrder;\n search?: string;\n isReseller?: boolean;\n organizationId?: number;\n noActiveSubscription?: boolean;\n } = {}\n ): Promise<PaginatedResponse<AdminWorkspace>> {\n const params = new URLSearchParams();\n if (options.page !== undefined) params.append('page', options.page.toString());\n if (options.pageSize !== undefined) params.append('pageSize', options.pageSize.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n if (options.search) params.append('search', options.search);\n if (options.isReseller !== undefined)\n params.append('isReseller', options.isReseller.toString());\n if (options.organizationId !== undefined)\n params.append('organizationId', options.organizationId.toString());\n if (options.noActiveSubscription) params.append('noActiveSubscription', 'true');\n\n return this.fetch<PaginatedResponse<AdminWorkspace>>(`admin/workspaces?${params.toString()}`);\n }\n\n async getWorkspaceAsAdmin(wid: string): Promise<AdminWorkspace> {\n return this.fetch<AdminWorkspace>(`admin/workspaces/${wid}`);\n }\n\n async getWorkspaceByNumericIdAsAdmin(workspace_id: number): Promise<AdminWorkspace> {\n return this.fetch<AdminWorkspace>(`admin/workspaces/id/${workspace_id}`);\n }\n\n async createWorkspaceAsAdmin(ws: AdminWorkspaceFormData): Promise<Workspace> {\n return this.fetch<Workspace>('admin/workspaces', {\n method: 'POST',\n body: JSON.stringify(ws),\n });\n }\n\n async updateWorkspaceAsAdmin(wid: string, ws: AdminWorkspaceFormData): Promise<Workspace> {\n return this.fetch<Workspace>(`admin/workspaces/${wid}`, {\n method: 'PUT',\n body: JSON.stringify(ws),\n });\n }\n\n async deleteWorkspaceAsAdmin(wid: string): Promise<void> {\n return this.fetch(`admin/workspaces/${wid}`, {\n method: 'DELETE',\n });\n }\n\n async createSchemaAsAdmin(wid: string): Promise<AdminWorkspace> {\n return this.fetch(`admin/workspaces/${wid}/provision/create`, {\n method: 'POST',\n });\n }\n\n async migrateSchemaAsAdmin(wid: string): Promise<AdminWorkspace> {\n return this.fetch(`admin/workspaces/${wid}/provision/migrate`, {\n method: 'POST',\n });\n }\n\n async provisionWorkspaceAsAdmin(wid: string): Promise<AdminWorkspace> {\n return this.fetch(`admin/workspaces/${wid}/provision`, {\n method: 'POST',\n });\n }\n\n async refreshProvisionStatusAsAdmin(wid: string): Promise<AdminWorkspace> {\n return this.fetch(`admin/workspaces/${wid}/provision/refresh`, {\n method: 'POST',\n });\n }\n\n async enableMaintenanceMode(wid: string): Promise<AdminWorkspace> {\n return this.fetch(`admin/workspaces/${wid}/maintenance`, {\n method: 'PUT',\n });\n }\n\n async disableMaintenanceMode(wid: string): Promise<AdminWorkspace> {\n return this.fetch(`admin/workspaces/${wid}/maintenance`, {\n method: 'DELETE',\n });\n }\n\n // ===== Workspace Health Check =====\n\n async getWorkspaceHealth(workspaceUuid: string): Promise<WorkspaceHealthResponse> {\n return this.fetch<WorkspaceHealthResponse>(`admin/workspaces/${workspaceUuid}/health`);\n }\n\n async provisionPlanFeatures(\n workspaceUuid: string,\n request?: ProvisionPlanRequest\n ): Promise<ProvisionPlanResponse> {\n return this.fetch<ProvisionPlanResponse>(`admin/workspaces/${workspaceUuid}/provision-plan`, {\n method: 'POST',\n body: JSON.stringify(request || {}),\n });\n }\n\n /**\n * Switch a workspace's plan product on its active SubscriptionItem.\n *\n * Superuser only. Re-syncs ``workspace.features`` from the new product\n * and emits a ``WORKSPACE_PRODUCT_CHANGED`` audit event identifying the\n * actor, target workspace, prior and new product, and feature diff.\n *\n * Stripe is not touched here; price-id changes belong to the dedicated\n * Stripe sync surface (``syncProductToStripe``).\n */\n async changeWorkspaceProduct(\n workspaceUuid: string,\n productId: number\n ): Promise<ChangeWorkspaceProductResponse> {\n const body: ChangeWorkspaceProductRequest = { productId };\n return this.fetch<ChangeWorkspaceProductResponse>(\n `admin/workspaces/${workspaceUuid}/product`,\n {\n method: 'POST',\n body: JSON.stringify(body),\n }\n );\n }\n\n // ===== Workflow Access Validation =====\n\n async validateWorkflowAccessAsAdmin(\n workspaceUuid?: string\n ): Promise<AdminBulkWorkflowAccessValidationResponse> {\n const params = new URLSearchParams();\n if (workspaceUuid) params.append('workspace_uuid', workspaceUuid);\n const qs = params.toString();\n return this.fetch<AdminBulkWorkflowAccessValidationResponse>(\n `admin/workspaces/validate-workflow-access${qs ? `?${qs}` : ''}`\n );\n }\n\n async mergeMembers(wid: string, request: MergeMembersRequest): Promise<MergeMembersResponse> {\n return this.fetch<MergeMembersResponse>(`admin/workspaces/${wid}/merge-members`, {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n async getAdminWorkspaceMember(wid: string): Promise<Member> {\n return this.fetch(`admin/workspaces/${wid}/me`, {\n method: 'GET',\n });\n }\n\n async createAdminWorkspaceMember(\n wid: string,\n data: AdminWorkspaceMemberFormData\n ): Promise<void> {\n return this.fetch(`admin/workspaces/${wid}/me`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updateAdminWorkspaceMember(\n wid: string,\n data: AdminWorkspaceMemberFormData\n ): Promise<void> {\n return this.fetch(`admin/workspaces/${wid}/me`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n async unarchiveAdminWorkspaceMember(wid: string): Promise<Member> {\n return this.fetch(`admin/workspaces/${wid}/me/unarchive`, {\n method: 'POST',\n });\n }\n\n async getAdminWorkspaceMemberRoles(wid: string): Promise<MemberRole[]> {\n return this.fetch<MemberRole[]>(`admin/workspaces/${wid}/member-roles`);\n }\n\n async getUnmappedPhoneNumbers(): Promise<UnmappedPhoneNumber[]> {\n return this.fetch<UnmappedPhoneNumber[]>(`admin/phone-numbers/unmapped`);\n }\n\n async getWorkspaceUnmappedPhoneNumbers(workspaceId: number): Promise<UnmappedPhoneNumber[]> {\n return this.fetch<UnmappedPhoneNumber[]>(\n `admin/phone-numbers/workspace/${workspaceId}/unmapped`\n );\n }\n\n async getWorkspacePhoneNumbersAsAdmin(workspaceRef: string): Promise<PhoneNumber[]> {\n return this.fetch<PhoneNumber[]>(`admin/workspaces/${workspaceRef}/phone-numbers`);\n }\n\n // Phone Numbers API (Provider phone numbers from Twilio, AWS, etc.)\n async getProviderPhoneNumbers(\n options: {\n search?: string;\n isAssigned?: boolean;\n provider?: string;\n organizationId?: number;\n sortBy?: string;\n sortOrder?: string;\n page?: number;\n pageSize?: number;\n } = {}\n ): Promise<PaginatedResponse<ProviderPhoneNumber>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.search) params.append('search', options.search);\n if (options.isAssigned !== undefined)\n params.append('is_assigned', String(options.isAssigned));\n if (options.provider) params.append('provider', options.provider);\n if (options.organizationId !== undefined)\n params.append('organizationId', options.organizationId.toString());\n if (options.sortBy) params.append('sortBy', options.sortBy);\n if (options.sortOrder) params.append('sortOrder', options.sortOrder);\n\n return this.fetch<PaginatedResponse<ProviderPhoneNumber>>(\n `admin/phone-numbers${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n async getProviderPhoneNumber(id: number): Promise<ProviderPhoneNumber> {\n return this.fetch<ProviderPhoneNumber>(`admin/phone-numbers/${id}`);\n }\n\n async updateProviderPhoneNumber(\n id: number,\n data: { organizationId: number | null }\n ): Promise<ProviderPhoneNumber> {\n return this.fetch<ProviderPhoneNumber>(`admin/phone-numbers/${id}`, {\n method: 'PATCH',\n body: JSON.stringify(data),\n });\n }\n\n async mapMainAccountPhone(data: {\n phoneNumber: string;\n workspaceUuid: string;\n name?: string;\n }): Promise<ProviderPhoneNumber> {\n return this.fetch<ProviderPhoneNumber>(`admin/phone-numbers/map-from-main-account`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async unmapPhoneNumber(data: {\n phoneNumber: string;\n }): Promise<{ status: string; phoneNumber: string }> {\n return this.fetch<{ status: string; phoneNumber: string }>(`admin/phone-numbers/unmap`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async searchAvailablePhoneNumbersAsAdmin(data: {\n organizationId: number;\n country?: string;\n numberType?: string;\n areaCode?: string;\n contains?: string;\n limit?: number;\n }): Promise<\n Array<{\n phoneNumber: string;\n friendlyName: string;\n locality: string | null;\n region: string | null;\n isoCountry: string;\n voiceEnabled: boolean;\n smsEnabled: boolean;\n }>\n > {\n return this.fetch(`admin/phone-numbers/search`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async purchasePhoneNumberAsAdmin(data: {\n organizationId: number;\n phoneNumber: string;\n numberType?: string;\n }): Promise<ProviderPhoneNumber> {\n return this.fetch<ProviderPhoneNumber>(`admin/phone-numbers/purchase`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async getOrgA2PStatusAsAdmin(organizationId: number): Promise<OrgA2PStatus> {\n return this.fetch<OrgA2PStatus>(`admin/organizations/${organizationId}/a2p-status`);\n }\n\n async resetOrgA2PStatusAsAdmin(organizationId: number): Promise<{ status: string }> {\n return this.fetch(`admin/organizations/${organizationId}/a2p-status`, {\n method: 'DELETE',\n });\n }\n\n // Site Mappings API\n async getSiteMappings(options?: {\n search?: string;\n page?: number;\n pageSize?: number;\n }): Promise<PaginatedResponse<SiteMapping>> {\n const queryParams = new URLSearchParams();\n if (options?.search) queryParams.append('search', options.search);\n if (options?.page) queryParams.append('page', options.page.toString());\n if (options?.pageSize) queryParams.append('pageSize', options.pageSize.toString());\n\n const queryString = queryParams.toString();\n const url = `admin/site-mappings${queryString ? `?${queryString}` : ''}`;\n\n return this.fetch<PaginatedResponse<SiteMapping>>(url);\n }\n\n async getSiteMapping(siteId: number): Promise<SiteMapping> {\n return this.fetch<SiteMapping>(`admin/site-mappings/${siteId}`);\n }\n\n async updateSiteMapping(siteId: number, data: SiteMappingFormData): Promise<SiteMapping> {\n return this.fetch<SiteMapping>(`admin/site-mappings/${siteId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n async updateSiteMappingWorkspace(siteId: number, workspaceId: number): Promise<SiteMapping> {\n return this.updateSiteMapping(siteId, {\n workspaceId,\n siteUuid: '', // These fields are required by the type but will be ignored on the server\n });\n }\n\n async adminDeleteSiteMapping(siteId: number): Promise<void> {\n return this.fetch<void>(`admin/site-mappings/${siteId}`, {\n method: 'DELETE',\n });\n }\n\n async createSiteMapping(mapping: SiteMappingFormData): Promise<SiteMapping> {\n return this.fetch<SiteMapping>(`admin/site-mappings`, {\n method: 'POST',\n body: JSON.stringify(mapping),\n });\n }\n\n // Keep for backward compatibility\n async createOrUpdateSiteMapping(\n wid: string,\n mapping: SiteMappingFormData\n ): Promise<SiteMapping> {\n return this.fetch<SiteMapping>(`admin/workspaces/${wid}/site-mappings`, {\n method: 'POST',\n body: JSON.stringify(mapping),\n });\n }\n\n async deleteSiteMapping(wid: string, siteUuid: string): Promise<void> {\n return this.fetch(`admin/workspaces/${wid}/site-mappings/${siteUuid}`, {\n method: 'DELETE',\n });\n }\n\n async getWorkspaceInboxesAsAdmin(\n workspaceUuid: string\n ): Promise<{ items: Inbox[]; total: number }> {\n return this.fetch<{ items: Inbox[]; total: number }>(\n `admin/workspaces/${workspaceUuid}/inboxes`\n );\n }\n\n // Admin Inbox Mappings API\n async getInboxMappings(\n options: {\n page?: number;\n pageSize?: number;\n search?: string;\n workspaceId?: number;\n } = {}\n ): Promise<PaginatedResponse<InboxMappingDetailResponse>> {\n const params = new URLSearchParams();\n if (options.page) params.append('page', options.page.toString());\n if (options.pageSize) params.append('pageSize', options.pageSize.toString());\n if (options.search) params.append('search', options.search);\n if (options.workspaceId) params.append('workspaceId', options.workspaceId.toString());\n\n return this.fetch<PaginatedResponse<InboxMappingDetailResponse>>(\n `admin/inbox-mappings${params.toString() ? `?${params.toString()}` : ''}`\n );\n }\n\n async getInboxMapping(id: number): Promise<InboxMappingDetailResponse> {\n return this.fetch<InboxMappingDetailResponse>(`admin/inbox-mappings/${id}`);\n }\n\n async updateInboxMapping(id: number, workspaceId: number): Promise<InboxMappingDetailResponse> {\n return this.fetch<InboxMappingDetailResponse>(`admin/inbox-mappings/${id}`, {\n method: 'PUT',\n body: JSON.stringify({ workspaceId }),\n });\n }\n\n async deleteAdminInboxMapping(id: number): Promise<void> {\n return this.fetch(`admin/inbox-mappings/${id}`, {\n method: 'DELETE',\n });\n }\n\n // Evaluation API\n async generateChatSummaries(options: {\n afterDate?: Date;\n onlyWithoutSummaries?: boolean;\n }): Promise<GenerateSummariesResponse> {\n return this.fetch<GenerateSummariesResponse>('admin/generate-summaries', {\n method: 'POST',\n body: JSON.stringify({\n after_date: options.afterDate\n ? options.afterDate.toISOString().split('T')[0] +\n 'T' +\n options.afterDate.toTimeString().split(' ')[0]\n : undefined,\n only_without_summaries: options.onlyWithoutSummaries ?? true,\n }),\n });\n }\n\n async executeQuery(options: { query: string; workspaceUuid?: string }): Promise<{\n columns: string[];\n rows: any[][];\n rowCount: number;\n }> {\n return this.fetch<{\n columns: string[];\n rows: any[][];\n rowCount: number;\n }>('admin/execute-query', {\n method: 'POST',\n body: JSON.stringify({\n query: options.query,\n workspace_uuid: options.workspaceUuid,\n }),\n });\n }\n\n /**\n * Resolve a Langfuse trace UI URL from a trace ID, chat ID, or message ID.\n *\n * URL-only: never fetches Langfuse payloads, Message content, or\n * tool arguments. Exactly one of ``traceId``, ``chatId``, or\n * ``messageId`` must be set; chat/message forms require a\n * workspaceUuid. See\n * docs/development/observability/llm-call-investigation.md.\n */\n async getTraceUrl(options: {\n traceId?: string;\n chatId?: number;\n messageId?: string;\n workspaceUuid?: string;\n }): Promise<{\n trace_id: string | null;\n observation_id: string | null;\n langfuse_url: string | null;\n }> {\n return this.fetch<{\n trace_id: string | null;\n observation_id: string | null;\n langfuse_url: string | null;\n }>('admin/trace/url', {\n method: 'POST',\n body: JSON.stringify({\n trace_id: options.traceId,\n chat_id: options.chatId,\n message_id: options.messageId,\n workspace_uuid: options.workspaceUuid,\n }),\n });\n }\n\n // Admin Themes API\n async listAllThemes(): Promise<ThemesListResponse> {\n return this.fetch<ThemesListResponse>('admin/themes/list');\n }\n\n // Missing Memberships API\n async getMissingMemberships(workspaceId: string): Promise<MissingMembershipItem[]> {\n return this.fetch<MissingMembershipItem[]>(\n `admin/workspaces/${workspaceId}/missing-memberships`\n );\n }\n\n async linkMissingMembership(\n workspaceId: string,\n memberId: number,\n accountId: number\n ): Promise<{ success: boolean; message: string }> {\n return this.fetch<{ success: boolean; message: string }>(\n `admin/workspaces/${workspaceId}/link-membership?member_id=${memberId}&account_id=${accountId}`,\n {\n method: 'POST',\n }\n );\n }\n\n // Bulk Phone Classification API\n async startBulkPhoneClassification(\n workspaceUuid: string,\n includeUnknown: boolean = false\n ): Promise<{\n success: boolean;\n message: string;\n job_id: string;\n workspace_uuid: string;\n include_unknown: boolean;\n }> {\n const params = new URLSearchParams();\n params.append('include_unknown', includeUnknown.toString());\n\n return this.fetch<{\n success: boolean;\n message: string;\n job_id: string;\n workspace_uuid: string;\n include_unknown: boolean;\n }>(`admin/workspaces/${workspaceUuid}/bulk-classify-phones?${params.toString()}`, {\n method: 'POST',\n });\n }\n\n // Bulk TOS Acceptance API\n async startBulkTOSAcceptance(workspaceUuid: string): Promise<{\n success: boolean;\n message: string;\n updated_count: number;\n workspace_uuid: string;\n }> {\n return this.fetch<{\n success: boolean;\n message: string;\n updated_count: number;\n workspace_uuid: string;\n }>(`admin/workspaces/${workspaceUuid}/bulk-accept-tos`, {\n method: 'POST',\n });\n }\n\n // Token Usage Backfill API\n async startTokenUsageBackfill(workspaceUuid: string): Promise<{\n success: boolean;\n message: string;\n job_id: string;\n workspace_uuid: string;\n }> {\n return this.fetch<{\n success: boolean;\n message: string;\n job_id: string;\n workspace_uuid: string;\n }>(`admin/workspaces/${workspaceUuid}/backfill-token-usage`, {\n method: 'POST',\n });\n }\n\n // ===== Admin Chat Endpoints =====\n\n async listWorkspaceChats(\n workspaceUuid: string,\n options?: AdminChatsOptions\n ): Promise<PaginatedResponse<AdminChat>> {\n const params = new URLSearchParams();\n if (options?.page) params.set('page', String(options.page));\n if (options?.pageSize) params.set('pageSize', String(options.pageSize));\n if (options?.search) params.set('search', options.search);\n if (options?.chatType) params.set('chatType', options.chatType);\n if (options?.channel) params.set('channel', options.channel);\n if (options?.archived !== undefined) params.set('archived', String(options.archived));\n const qs = params.toString();\n return this.fetch<PaginatedResponse<AdminChat>>(\n `admin/workspaces/${workspaceUuid}/chats${qs ? `?${qs}` : ''}`\n );\n }\n\n async getWorkspaceChat(\n workspaceUuid: string,\n chatId: number,\n options?: { page?: number; pageSize?: number }\n ): Promise<AdminChatDetail> {\n const params = new URLSearchParams();\n if (options?.page) params.set('page', String(options.page));\n if (options?.pageSize) params.set('pageSize', String(options.pageSize));\n const qs = params.toString();\n return this.fetch<AdminChatDetail>(\n `admin/workspaces/${workspaceUuid}/chats/${chatId}${qs ? `?${qs}` : ''}`\n );\n }\n\n // Update chat message content\n async updateChatMessage(\n workspaceUuid: string,\n chatId: number,\n messageId: string,\n content: string\n ): Promise<{\n success: boolean;\n message: string;\n messageId: string;\n chatId: number;\n workspaceUuid: string;\n }> {\n return this.fetch<{\n success: boolean;\n message: string;\n messageId: string;\n chatId: number;\n workspaceUuid: string;\n }>(`admin/workspaces/${workspaceUuid}/chats/${chatId}/messages/${messageId}`, {\n method: 'POST',\n body: JSON.stringify({ content }),\n });\n }\n\n async rateWorkspaceChatMessage(\n workspaceUuid: string,\n chatId: number,\n messageId: string,\n rating: number,\n comment?: string\n ): Promise<{ status: string; detail?: string }> {\n return this.fetch<{ status: string; detail?: string }>(\n `admin/workspaces/${workspaceUuid}/chats/${chatId}/messages/${messageId}/rate`,\n {\n method: 'POST',\n body: JSON.stringify({ rating, comment }),\n }\n );\n }\n\n // ===== Stripe Customer Management =====\n\n async getStripeCustomer(accountId: number): Promise<StripeCustomer> {\n return this.fetch<StripeCustomer>(`admin/accounts/${accountId}/stripe/customer`);\n }\n\n async createStripeCustomer(\n accountId: number,\n data: StripeCustomerCreateRequest\n ): Promise<StripeCustomer> {\n return this.fetch<StripeCustomer>(`admin/accounts/${accountId}/stripe/customer`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updateStripeCustomer(\n accountId: number,\n data: StripeCustomerUpdateRequest\n ): Promise<StripeCustomer> {\n return this.fetch<StripeCustomer>(`admin/accounts/${accountId}/stripe/customer`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n // ===== Customer Management =====\n\n async createCustomerFromAccount(accountId: number): Promise<Customer> {\n return this.fetch<Customer>(`admin/accounts/${accountId}/customer`, {\n method: 'POST',\n });\n }\n\n async getCustomers(options?: {\n search?: string;\n page?: number;\n pageSize?: number;\n }): Promise<PaginatedResponse<Customer>> {\n const params = new URLSearchParams();\n if (options?.search) params.set('search', options.search);\n if (options?.page) params.set('page', String(options.page));\n if (options?.pageSize) params.set('page_size', String(options.pageSize));\n const qs = params.toString();\n return this.fetch<PaginatedResponse<Customer>>(`admin/customers${qs ? `?${qs}` : ''}`);\n }\n\n async getCustomer(customerId: number): Promise<Customer> {\n return this.fetch<Customer>(`admin/customers/${customerId}`);\n }\n\n async createCustomer(data: CreateCustomerRequest): Promise<Customer> {\n return this.fetch<Customer>('admin/customers', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updateCustomer(customerId: number, data: UpdateCustomerRequest): Promise<Customer> {\n return this.fetch<Customer>(`admin/customers/${customerId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n async syncCustomerToStripe(customerId: number): Promise<Customer> {\n return this.fetch<Customer>(`admin/customers/${customerId}/stripe/sync`, {\n method: 'POST',\n });\n }\n\n async getCustomerAccounts(customerId: number): Promise<CustomerAccount[]> {\n return this.fetch<CustomerAccount[]>(`admin/customers/${customerId}/accounts`);\n }\n\n async linkCustomerToAccount(\n customerId: number,\n accountId: number,\n role?: string\n ): Promise<CustomerAccount> {\n return this.fetch<CustomerAccount>(`admin/customers/${customerId}/accounts`, {\n method: 'POST',\n body: JSON.stringify({ accountId, role }),\n });\n }\n\n async unlinkCustomerFromAccount(customerId: number, accountId: number): Promise<void> {\n await this.fetch<void>(`admin/customers/${customerId}/accounts/${accountId}`, {\n method: 'DELETE',\n });\n }\n\n // ===== Stripe Subscription Management =====\n\n async getStripeSubscriptions(accountId: number): Promise<Subscription[]> {\n return this.fetch<Subscription[]>(`admin/accounts/${accountId}/stripe/subscriptions`);\n }\n\n async createStripeSubscription(\n customerId: number,\n data: StripeSubscriptionCreateRequest\n ): Promise<Subscription> {\n return this.fetch<Subscription>(`admin/customers/${customerId}/stripe/subscriptions`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async createDirectSubscription(\n customerId: number,\n data: DirectSubscriptionCreateRequest\n ): Promise<Subscription> {\n return this.fetch<Subscription>(`admin/customers/${customerId}/direct/subscriptions`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updateStripeSubscription(\n accountId: number,\n subscriptionId: string,\n data: StripeSubscriptionUpdateRequest\n ): Promise<Subscription> {\n return this.fetch<Subscription>(\n `admin/accounts/${accountId}/stripe/subscriptions/${subscriptionId}`,\n {\n method: 'PUT',\n body: JSON.stringify(data),\n }\n );\n }\n\n async cancelStripeSubscription(\n accountId: number,\n subscriptionId: string\n ): Promise<{ message: string; status: string }> {\n return this.fetch<{ message: string; status: string }>(\n `admin/accounts/${accountId}/stripe/subscriptions/${subscriptionId}`,\n {\n method: 'DELETE',\n }\n );\n }\n\n async provisionWorkspaceForSubscription(\n accountId: number,\n subscriptionId: string\n ): Promise<AdminWorkspace> {\n return this.fetch<AdminWorkspace>(\n `admin/accounts/${accountId}/stripe/subscriptions/${subscriptionId}/provision`,\n {\n method: 'POST',\n }\n );\n }\n\n async associateWorkspaceWithSubscription(\n accountId: number,\n subscriptionId: string,\n workspaceId: string | number\n ): Promise<Subscription> {\n return this.fetch<Subscription>(\n `admin/accounts/${accountId}/stripe/subscriptions/${subscriptionId}/associate?workspace_id=${workspaceId}`,\n {\n method: 'POST',\n }\n );\n }\n\n async createSubscriptionPaymentLink(\n accountId: number,\n subscriptionId: string\n ): Promise<{\n needsPayment: boolean;\n paymentUrl?: string;\n amountDue?: number;\n currency?: string;\n status: string;\n invoiceId?: string;\n invoiceStatus?: string;\n dueDate?: number;\n message?: string;\n }> {\n return this.fetch<{\n needsPayment: boolean;\n paymentUrl?: string;\n amountDue?: number;\n currency?: string;\n status: string;\n invoiceId?: string;\n invoiceStatus?: string;\n dueDate?: number;\n message?: string;\n }>(`admin/accounts/${accountId}/stripe/subscriptions/${subscriptionId}/payment-link`, {\n method: 'POST',\n });\n }\n\n // ===== Stripe Payment Methods Management =====\n\n async createSetupIntent(accountId: number): Promise<{\n clientSecret: string;\n setupIntentId: string;\n status: string;\n }> {\n return this.fetch<{\n clientSecret: string;\n setupIntentId: string;\n status: string;\n }>(`admin/accounts/${accountId}/stripe/setup-intent`, {\n method: 'POST',\n });\n }\n\n async getStripePaymentMethods(accountId: number): Promise<StripePaymentMethod[]> {\n return this.fetch<StripePaymentMethod[]>(\n `admin/accounts/${accountId}/stripe/payment-methods`\n );\n }\n\n async attachStripePaymentMethod(\n accountId: number,\n paymentMethodId: string,\n setAsDefault: boolean = false\n ): Promise<{\n success: boolean;\n message: string;\n paymentMethodId: string;\n type: string;\n }> {\n return this.fetch<{\n success: boolean;\n message: string;\n paymentMethodId: string;\n type: string;\n }>(`admin/accounts/${accountId}/stripe/payment-methods/${paymentMethodId}/attach`, {\n method: 'POST',\n body: JSON.stringify({ setAsDefault }),\n });\n }\n\n async detachStripePaymentMethod(\n accountId: number,\n paymentMethodId: string\n ): Promise<{ success: string; message: string }> {\n return this.fetch<{ success: string; message: string }>(\n `admin/accounts/${accountId}/stripe/payment-methods/${paymentMethodId}`,\n {\n method: 'DELETE',\n }\n );\n }\n\n async setDefaultStripePaymentMethod(\n accountId: number,\n paymentMethodId: string\n ): Promise<{ success: string; message: string }> {\n return this.fetch<{ success: string; message: string }>(\n `admin/accounts/${accountId}/stripe/payment-methods/${paymentMethodId}/set-default`,\n {\n method: 'PUT',\n }\n );\n }\n\n // ===== Convert Direct Subscription to Stripe =====\n\n async convertSubscriptionToStripe(\n customerId: number,\n subscriptionId: number\n ): Promise<Subscription> {\n return this.fetch<Subscription>(\n `admin/customers/${customerId}/subscriptions/${subscriptionId}/convert-to-stripe`,\n { method: 'POST' }\n );\n }\n\n // ===== Customer-Level Stripe Payment Methods =====\n\n async createCustomerSetupIntent(customerId: number): Promise<{\n clientSecret: string;\n setupIntentId: string;\n status: string;\n }> {\n return this.fetch<{\n clientSecret: string;\n setupIntentId: string;\n status: string;\n }>(`admin/customers/${customerId}/stripe/setup-intent`, {\n method: 'POST',\n });\n }\n\n async getCustomerPaymentMethods(customerId: number): Promise<StripePaymentMethod[]> {\n return this.fetch<StripePaymentMethod[]>(\n `admin/customers/${customerId}/stripe/payment-methods`\n );\n }\n\n async attachCustomerPaymentMethod(\n customerId: number,\n paymentMethodId: string,\n setAsDefault: boolean = false\n ): Promise<{\n success: boolean;\n message: string;\n paymentMethodId: string;\n type: string;\n }> {\n return this.fetch<{\n success: boolean;\n message: string;\n paymentMethodId: string;\n type: string;\n }>(`admin/customers/${customerId}/stripe/payment-methods/${paymentMethodId}/attach`, {\n method: 'POST',\n body: JSON.stringify({ setAsDefault }),\n });\n }\n\n async detachCustomerPaymentMethod(\n customerId: number,\n paymentMethodId: string\n ): Promise<{ success: string; message: string }> {\n return this.fetch<{ success: string; message: string }>(\n `admin/customers/${customerId}/stripe/payment-methods/${paymentMethodId}`,\n {\n method: 'DELETE',\n }\n );\n }\n\n async setDefaultCustomerPaymentMethod(\n customerId: number,\n paymentMethodId: string\n ): Promise<{ success: string; message: string }> {\n return this.fetch<{ success: string; message: string }>(\n `admin/customers/${customerId}/stripe/payment-methods/${paymentMethodId}/set-default`,\n {\n method: 'PUT',\n }\n );\n }\n\n // ===== Workspace Organization Migration =====\n\n async previewWorkspaceOrganizationChange(\n workspaceUuid: string,\n targetOrganizationId: number,\n newCreatorId: number\n ): Promise<{\n targetOrganization: { id: number; name: string };\n newCreator: { id: number; name: string; email: string };\n currentOrganization: { id: number | null; name: string | null };\n impact: {\n accountsToMove: number;\n accountsToDuplicate: number;\n accountsToRemap: number;\n totalMembers: number;\n };\n details: {\n movableAccounts: Array<{\n id: number;\n uuid: string;\n name: string;\n email: string | null;\n phone: string | null;\n }>;\n duplicateAccounts: Array<{\n id: number;\n uuid: string;\n name: string;\n email: string | null;\n phone: string | null;\n }>;\n remappableAccounts: Array<{\n currentAccount: {\n id: number;\n uuid: string;\n name: string;\n email: string | null;\n phone: string | null;\n };\n targetAccount: {\n id: number;\n uuid: string;\n name: string;\n email: string | null;\n phone: string | null;\n };\n }>;\n };\n }> {\n return this.fetch<{\n targetOrganization: { id: number; name: string };\n newCreator: { id: number; name: string; email: string };\n currentOrganization: { id: number | null; name: string | null };\n impact: {\n accountsToMove: number;\n accountsToDuplicate: number;\n accountsToRemap: number;\n totalMembers: number;\n };\n details: {\n movableAccounts: Array<{\n id: number;\n uuid: string;\n name: string;\n email: string | null;\n phone: string | null;\n }>;\n duplicateAccounts: Array<{\n id: number;\n uuid: string;\n name: string;\n email: string | null;\n phone: string | null;\n }>;\n remappableAccounts: Array<{\n currentAccount: {\n id: number;\n uuid: string;\n name: string;\n email: string | null;\n phone: string | null;\n };\n targetAccount: {\n id: number;\n uuid: string;\n name: string;\n email: string | null;\n phone: string | null;\n };\n }>;\n };\n }>(`admin/workspaces/${workspaceUuid}/change-org/preview`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n targetOrganizationId,\n newCreatorId,\n }),\n });\n }\n\n async changeWorkspaceOrganization(\n workspaceUuid: string,\n targetOrganizationId: number,\n newCreatorId: number\n ): Promise<{\n success: boolean;\n workspace: {\n uuid: string;\n name: string;\n organizationId: number;\n creatorId: number;\n };\n migration: {\n accountsMoved: number;\n accountsCreated: number;\n accountsRemapped: number;\n };\n }> {\n return this.fetch<{\n success: boolean;\n workspace: {\n uuid: string;\n name: string;\n organizationId: number;\n creatorId: number;\n };\n migration: {\n accountsMoved: number;\n accountsCreated: number;\n accountsRemapped: number;\n };\n }>(`admin/workspaces/${workspaceUuid}/change-org`, {\n method: 'POST',\n body: JSON.stringify({\n targetOrganizationId,\n newCreatorId,\n }),\n });\n }\n\n // ===== Stripe Invoice Management =====\n\n async createStripeInvoice(\n accountId: number,\n data: {\n customer: string;\n description?: string;\n collectionMethod: 'charge_automatically' | 'send_invoice';\n daysUntilDue?: number;\n autoAdvance?: boolean;\n metadata?: Record<string, string>;\n }\n ): Promise<{\n id: string;\n number: string;\n status: string;\n collectionMethod: string;\n amountDue: number;\n amountPaid: number;\n amountRemaining: number;\n currency: string;\n created: number;\n dueDate: number | null;\n paid: boolean;\n hostedInvoiceUrl: string | null;\n invoicePdf: string | null;\n customerEmail: string | null;\n description: string | null;\n }> {\n return this.fetch<{\n id: string;\n number: string;\n status: string;\n collectionMethod: string;\n amountDue: number;\n amountPaid: number;\n amountRemaining: number;\n currency: string;\n created: number;\n dueDate: number | null;\n paid: boolean;\n hostedInvoiceUrl: string | null;\n invoicePdf: string | null;\n customerEmail: string | null;\n description: string | null;\n }>(`admin/accounts/${accountId}/stripe/invoices`, {\n method: 'POST',\n body: JSON.stringify({\n customer: data.customer,\n description: data.description,\n collection_method: data.collectionMethod,\n days_until_due: data.daysUntilDue,\n auto_advance: data.autoAdvance,\n metadata: data.metadata,\n }),\n });\n }\n\n async getStripeInvoices(\n accountId: number,\n options?: { limit?: number; startingAfter?: string }\n ): Promise<\n Array<{\n id: string;\n number: string;\n status: string;\n collectionMethod: string;\n amountDue: number;\n amountPaid: number;\n amountRemaining: number;\n currency: string;\n created: number;\n dueDate: number | null;\n paid: boolean;\n hostedInvoiceUrl: string | null;\n invoicePdf: string | null;\n description: string | null;\n periodStart: number | null;\n periodEnd: number | null;\n }>\n > {\n const params = new URLSearchParams();\n if (options?.limit) params.append('limit', options.limit.toString());\n if (options?.startingAfter) params.append('starting_after', options.startingAfter);\n\n return this.fetch<\n Array<{\n id: string;\n number: string;\n status: string;\n collectionMethod: string;\n amountDue: number;\n amountPaid: number;\n amountRemaining: number;\n currency: string;\n created: number;\n dueDate: number | null;\n paid: boolean;\n hostedInvoiceUrl: string | null;\n invoicePdf: string | null;\n description: string | null;\n periodStart: number | null;\n periodEnd: number | null;\n }>\n >(`admin/accounts/${accountId}/stripe/invoices?${params.toString()}`);\n }\n\n async getStripeUpcomingInvoice(\n accountId: number,\n subscriptionId?: string\n ): Promise<{\n amountDue: number;\n amountPaid: number;\n amountRemaining: number;\n currency: string;\n periodStart: number;\n periodEnd: number;\n subtotal: number;\n tax: number;\n total: number;\n lineItems: Array<{\n id: string;\n description: string | null;\n amount: number;\n currency: string;\n quantity: number;\n unitAmount: number;\n productName: string | null;\n productDescription: string | null;\n period: {\n start: number;\n end: number;\n };\n }>;\n customer: string;\n subscription: string | null;\n }> {\n const params = new URLSearchParams();\n if (subscriptionId) params.append('subscription_id', subscriptionId);\n\n return this.fetch<{\n amountDue: number;\n amountPaid: number;\n amountRemaining: number;\n currency: string;\n periodStart: number;\n periodEnd: number;\n subtotal: number;\n tax: number;\n total: number;\n lineItems: Array<{\n id: string;\n description: string | null;\n amount: number;\n currency: string;\n quantity: number;\n unitAmount: number;\n productName: string | null;\n productDescription: string | null;\n period: {\n start: number;\n end: number;\n };\n }>;\n customer: string;\n subscription: string | null;\n }>(`admin/accounts/${accountId}/stripe/upcoming-invoice?${params.toString()}`);\n }\n\n // Billing Dashboard API\n async getWorkspaceUsageDashboard(workspaceUuid: string): Promise<UsageDashboardResponse> {\n return this.fetch<UsageDashboardResponse>(\n `admin/workspaces/${workspaceUuid}/usage-dashboard`\n );\n }\n\n // Product Stripe Sync API\n async compareProductsWithStripe(workspaceUuid?: string): Promise<CompareWithStripeResponse> {\n const params = workspaceUuid ? `?workspace_uuid=${encodeURIComponent(workspaceUuid)}` : '';\n return this.fetch<CompareWithStripeResponse>(`admin/products/compare-stripe${params}`);\n }\n\n async syncProductToStripe(\n productId: number,\n request?: SyncProductToStripeRequest\n ): Promise<SyncProductToStripeResponse> {\n return this.fetch<SyncProductToStripeResponse>(`admin/products/${productId}/sync-stripe`, {\n method: 'POST',\n body: JSON.stringify({ ...request, productId }),\n });\n }\n\n // Search Stripe products\n async searchStripeProducts(\n query: string,\n limit: number = 10\n ): Promise<\n Array<{\n id: string;\n name: string;\n description: string | null;\n active: boolean;\n created: number;\n metadata: Record<string, string>;\n }>\n > {\n const params = new URLSearchParams({ query, limit: limit.toString() });\n return this.fetch<\n Array<{\n id: string;\n name: string;\n description: string | null;\n active: boolean;\n created: number;\n metadata: Record<string, string>;\n }>\n >(`admin/products/stripe/search?${params.toString()}`);\n }\n\n // ===== Subscriptions API =====\n\n async getSubscriptionsAsAdmin(options?: {\n productId?: number;\n productType?: string;\n customerId?: number;\n organizationId?: number;\n accountId?: number;\n isDirect?: boolean;\n status?: string;\n page?: number;\n pageSize?: number;\n }): Promise<PaginatedSubscriptionsResponse> {\n const params = new URLSearchParams();\n if (options?.productId) params.append('product_id', options.productId.toString());\n if (options?.productType) params.append('product_type', options.productType);\n if (options?.customerId) params.append('customer_id', options.customerId.toString());\n if (options?.organizationId)\n params.append('organization_id', options.organizationId.toString());\n if (options?.accountId) params.append('account_id', options.accountId.toString());\n if (options?.isDirect !== undefined) params.append('is_direct', options.isDirect.toString());\n if (options?.status) params.append('status', options.status);\n if (options?.page) params.append('page', options.page.toString());\n if (options?.pageSize) params.append('page_size', options.pageSize.toString());\n const queryString = params.toString();\n return this.fetch<PaginatedSubscriptionsResponse>(\n `admin/subscriptions${queryString ? `?${queryString}` : ''}`\n );\n }\n\n async getSubscriptionAsAdmin(subscriptionId: number): Promise<Subscription> {\n return this.fetch<Subscription>(`admin/subscriptions/${subscriptionId}`);\n }\n\n async updateSubscriptionStatusAsAdmin(\n subscriptionId: number,\n subscriptionStatus: string\n ): Promise<Subscription> {\n return this.fetch<Subscription>(`admin/subscriptions/${subscriptionId}`, {\n method: 'PUT',\n body: JSON.stringify({ subscription_status: subscriptionStatus }),\n });\n }\n\n async updateSubscriptionCreditSettingsAsAdmin(\n subscriptionId: number,\n settings: {\n extra_usage_enabled?: boolean;\n reload_amount_cents?: number | null;\n reload_threshold_cents?: number | null;\n monthly_reload_limit_cents?: number | null;\n }\n ): Promise<Subscription> {\n return this.fetch<Subscription>(`admin/subscriptions/${subscriptionId}`, {\n method: 'PUT',\n body: JSON.stringify(settings),\n });\n }\n\n /** Grant credits to a subscription (superuser only). */\n async grantCreditsAsAdmin(\n subscriptionId: number,\n creditUnits: number,\n grantType: string,\n reason: string\n ): Promise<{\n success: boolean;\n grantId: number;\n creditUnits: number;\n grantedBy: string;\n reason: string;\n }> {\n return this.fetch(`admin/subscriptions/${subscriptionId}/grant-credits`, {\n method: 'POST',\n body: JSON.stringify({ credit_units: creditUnits, grant_type: grantType, reason }),\n });\n }\n\n /** List credit grants for a subscription (superuser only). */\n async listCreditGrantsAsAdmin(subscriptionId: number): Promise<\n {\n id: number;\n uuid: string;\n grantType: string;\n creditUnits: number;\n remainingUnits: number;\n amountCents: number;\n status: string;\n effectiveAt: string | null;\n expiresAt: string | null;\n createdAt: string | null;\n createdBy: string | null;\n reason: string | null;\n }[]\n > {\n return this.fetch(`admin/subscriptions/${subscriptionId}/credit-grants`);\n }\n\n // ===== Usage API =====\n\n async getUsageReport(request: UsageReportRequest): Promise<UsageReport> {\n return this.fetch<UsageReport>('admin/usage', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n // Voice Metrics API\n async getVoiceMetrics(options?: {\n hours?: number;\n period?: number;\n workspace_uuid?: string;\n organization_id?: number;\n engine?: string;\n channel?: string;\n }): Promise<VoiceMetricsResponse> {\n const params = new URLSearchParams();\n if (options?.hours) params.append('hours', options.hours.toString());\n if (options?.period) params.append('period', options.period.toString());\n if (options?.workspace_uuid) params.append('workspace_uuid', options.workspace_uuid);\n if (options?.organization_id != null)\n params.append('organization_id', options.organization_id.toString());\n if (options?.engine) params.append('engine', options.engine);\n if (options?.channel) params.append('channel', options.channel);\n const qs = params.toString();\n return this.fetch<VoiceMetricsResponse>(`admin/voice-metrics${qs ? `?${qs}` : ''}`);\n }\n\n // Health Dashboard API\n async getHealthMetrics(request: HealthMetricsRequest): Promise<HealthMetricsResponse> {\n return this.fetch<HealthMetricsResponse>('admin/health/metrics', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n async getHealthDetail(\n workspaceUuid: string,\n request: HealthDetailRequest\n ): Promise<WorkspaceHealthDetail> {\n return this.fetch<WorkspaceHealthDetail>(`admin/health/detail/${workspaceUuid}`, {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n // ===== Reseller Management =====\n\n async getResellers(options?: {\n search?: string;\n page?: number;\n pageSize?: number;\n }): Promise<PaginatedResponse<Reseller>> {\n const params = new URLSearchParams();\n if (options?.search) params.set('search', options.search);\n if (options?.page) params.set('page', String(options.page));\n if (options?.pageSize) params.set('page_size', String(options.pageSize));\n const qs = params.toString();\n return this.fetch<PaginatedResponse<Reseller>>(`admin/resellers${qs ? `?${qs}` : ''}`);\n }\n\n async getReseller(resellerId: number): Promise<Reseller> {\n return this.fetch<Reseller>(`admin/resellers/${resellerId}`);\n }\n\n async createReseller(data: CreateResellerRequest): Promise<Reseller> {\n return this.fetch<Reseller>('admin/resellers', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async updateReseller(resellerId: number, data: UpdateResellerRequest): Promise<Reseller> {\n return this.fetch<Reseller>(`admin/resellers/${resellerId}`, {\n method: 'PUT',\n body: JSON.stringify(data),\n });\n }\n\n async getResellerAccounts(resellerId: number): Promise<ResellerAccount[]> {\n return this.fetch<ResellerAccount[]>(`admin/resellers/${resellerId}/accounts`);\n }\n\n async linkResellerToAccount(\n resellerId: number,\n data: LinkResellerAccountRequest\n ): Promise<ResellerAccount> {\n return this.fetch<ResellerAccount>(`admin/resellers/${resellerId}/accounts`, {\n method: 'POST',\n body: JSON.stringify({ account_id: data.accountId, role: data.role }),\n });\n }\n\n async unlinkResellerFromAccount(resellerId: number, accountId: number): Promise<void> {\n await this.fetch<void>(`admin/resellers/${resellerId}/accounts/${accountId}`, {\n method: 'DELETE',\n });\n }\n\n // ===== Invoice Management =====\n\n async generateInvoice(data: {\n subscriptionId: number;\n periodStart: string;\n periodEnd: string;\n regenerate?: boolean;\n }): Promise<Invoice> {\n return this.fetch<Invoice>('admin/invoices/generate', {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n async getInvoices(\n subscriptionId?: number,\n pageOpts?: { page?: number; pageSize?: number }\n ): Promise<PaginatedResponse<Invoice>> {\n const params = new URLSearchParams();\n if (subscriptionId !== undefined) params.set('subscription_id', String(subscriptionId));\n if (pageOpts?.page !== undefined) params.set('page', String(pageOpts.page));\n if (pageOpts?.pageSize !== undefined) params.set('pageSize', String(pageOpts.pageSize));\n const qs = params.toString();\n return this.fetch<PaginatedResponse<Invoice>>(`admin/invoices${qs ? `?${qs}` : ''}`);\n }\n\n async getBillingPeriods(subscriptionId: number): Promise<BillingPeriod[]> {\n return this.fetch<BillingPeriod[]>(\n `admin/invoices/periods?subscription_id=${subscriptionId}`\n );\n }\n\n async getInvoiceDownloadUrl(\n invoiceId: number\n ): Promise<{ downloadUrl: string; invoiceNumber: string }> {\n return this.fetch<{ downloadUrl: string; invoiceNumber: string }>(\n `admin/invoices/${invoiceId}/download`\n );\n }\n\n async getReceiptDownloadUrl(\n invoiceId: number\n ): Promise<{ downloadUrl: string; invoiceNumber: string }> {\n return this.fetch<{ downloadUrl: string; invoiceNumber: string }>(\n `admin/invoices/${invoiceId}/receipt`\n );\n }\n\n async recordInvoicePayment(invoiceId: number, data: RecordPaymentRequest): Promise<Invoice> {\n return this.fetch<Invoice>(`admin/invoices/${invoiceId}/record-payment`, {\n method: 'POST',\n body: JSON.stringify(data),\n });\n }\n\n // ===== Admin Temporal Inspection (PHI-safe, read-only) =====\n\n /**\n * Server-enforced bounds for admin Temporal queries (lookback, thresholds,\n * page sizes, history event cap). Superuser only.\n */\n async getTemporalAdminConfig(): Promise<TemporalAdminConfig> {\n return this.fetch<TemporalAdminConfig>('admin/temporal/config');\n }\n\n /**\n * List recent Temporal workflows in FAILED, TIMED_OUT, or TERMINATED\n * status. Returns only PHI-safe operational metadata. Superuser only.\n *\n * Pass `options.status` to filter to a single status and enable\n * deep pagination via `nextPageToken`. Merged mode (no status) returns\n * the first page only and always emits `nextPageToken: null`.\n */\n async listFailedTemporalWorkflows(\n options: AdminTemporalFailedQuery = {}\n ): Promise<FailedWorkflowsResponse> {\n const params = new URLSearchParams();\n if (options.lookbackHours !== undefined)\n params.set('lookback_hours', String(options.lookbackHours));\n if (options.pageSize !== undefined) params.set('page_size', String(options.pageSize));\n if (options.status) params.set('status', String(options.status));\n if (options.nextPageToken) params.set('next_page_token', options.nextPageToken);\n appendTemporalWorkspaceParams(params, options);\n const qs = params.toString();\n return this.fetch<FailedWorkflowsResponse>(\n `admin/temporal/workflows/failed${qs ? `?${qs}` : ''}`\n );\n }\n\n /**\n * List open Temporal workflows older than the stuck threshold.\n * Superuser only.\n */\n async listStuckTemporalWorkflows(\n options: AdminTemporalStuckQuery = {}\n ): Promise<StuckWorkflowsResponse> {\n const params = new URLSearchParams();\n if (options.thresholdMinutes !== undefined)\n params.set('threshold_minutes', String(options.thresholdMinutes));\n if (options.pageSize !== undefined) params.set('page_size', String(options.pageSize));\n if (options.nextPageToken) params.set('next_page_token', options.nextPageToken);\n appendTemporalWorkspaceParams(params, options);\n const qs = params.toString();\n return this.fetch<StuckWorkflowsResponse>(\n `admin/temporal/workflows/stuck${qs ? `?${qs}` : ''}`\n );\n }\n\n /**\n * Return grouped counts for recent Temporal executions. Superuser only.\n */\n async getTemporalSummary(\n options: AdminTemporalSummaryQuery = {}\n ): Promise<TemporalSummaryResponse> {\n const params = new URLSearchParams();\n if (options.lookbackHours !== undefined)\n params.set('lookback_hours', String(options.lookbackHours));\n appendTemporalWorkspaceParams(params, options);\n const qs = params.toString();\n return this.fetch<TemporalSummaryResponse>(\n `admin/temporal/workflows/summary${qs ? `?${qs}` : ''}`\n );\n }\n\n /**\n * Fetch metadata + bounded sanitized history summary for one Temporal\n * workflow. Superuser only. Does not return raw events or payloads.\n */\n async getTemporalWorkflowDetail(\n workflowId: string,\n options: AdminTemporalDetailQuery = {}\n ): Promise<WorkflowDetailResponse> {\n const params = new URLSearchParams();\n if (options.runId) params.set('run_id', options.runId);\n appendTemporalWorkspaceParams(params, options);\n const qs = params.toString();\n const encoded = encodeURIComponent(workflowId);\n return this.fetch<WorkflowDetailResponse>(\n `admin/temporal/workflows/${encoded}${qs ? `?${qs}` : ''}`\n );\n }\n}\n\n/**\n * Append the workspace filter params for admin Temporal endpoints.\n *\n * The server accepts a repeated `workspace_uuid` query parameter. For\n * backward compatibility with callers (including `gr admin temporal`)\n * that still pass a single `workspaceUuid`, we normalize both inputs\n * into the same repeated-parameter wire shape: a single value is\n * appended once; explicit `workspaceUuids` entries are appended in\n * order. Duplicates and blanks are dropped client-side so the final\n * URL stays compact.\n */\nfunction appendTemporalWorkspaceParams(\n params: URLSearchParams,\n options: {\n workspaceUuid?: string;\n workspaceUuids?: string[];\n }\n): void {\n const seen = new Set<string>();\n const push = (raw: string | undefined) => {\n if (!raw) return;\n const trimmed = raw.trim();\n if (!trimmed || seen.has(trimmed)) return;\n seen.add(trimmed);\n params.append('workspace_uuid', trimmed);\n };\n if (options.workspaceUuids) {\n for (const value of options.workspaceUuids) push(value);\n }\n push(options.workspaceUuid);\n}\n","import { AdminApi } from '../../api';\n\nexport interface AdminBindings {\n // Support Requests\n listSupportRequestsAsAdmin: AdminApi['listSupportRequestsAsAdmin'];\n getSupportRequestAsAdmin: AdminApi['getSupportRequestAsAdmin'];\n commentOnSupportRequestAsAdmin: AdminApi['commentOnSupportRequestAsAdmin'];\n noteOnSupportRequestAsAdmin: AdminApi['noteOnSupportRequestAsAdmin'];\n updateSupportRequestStatusAsAdmin: AdminApi['updateSupportRequestStatusAsAdmin'];\n updateSupportRequestAttributesAsAdmin: AdminApi['updateSupportRequestAttributesAsAdmin'];\n createSupportRequestLinearIssueAsAdmin: AdminApi['createSupportRequestLinearIssueAsAdmin'];\n createOutboundSupportRequestAsAdmin: AdminApi['createOutboundSupportRequestAsAdmin'];\n attachSupportRequestResourceAsAdmin: AdminApi['attachSupportRequestResourceAsAdmin'];\n revokeSupportRequestResourceAsAdmin: AdminApi['revokeSupportRequestResourceAsAdmin'];\n\n // Accounts\n getAccounts: AdminApi['getAccounts'];\n getAccountDetails: AdminApi['getAccountDetails'];\n getAccountByUuid: AdminApi['getAccountByUuid'];\n getAccountMemberships: AdminApi['getAccountMemberships'];\n getAccountOrgMemberships: AdminApi['getAccountOrgMemberships'];\n createAccountOrgMembership: AdminApi['createAccountOrgMembership'];\n deleteAccountOrgMembership: AdminApi['deleteAccountOrgMembership'];\n getAccountMembership: AdminApi['getAccountMembership'];\n updateAccountMembership: AdminApi['updateAccountMembership'];\n createAccountMembership: AdminApi['createAccountMembership'];\n deleteAccountMembership: AdminApi['deleteAccountMembership'];\n updateAccountAsAdmin: AdminApi['updateAccountAsAdmin'];\n createAccountAsAdmin: AdminApi['createAccountAsAdmin'];\n deleteAccountAsAdmin: AdminApi['deleteAccountAsAdmin'];\n lookupAccount: AdminApi['lookupAccount'];\n exportAccountData: AdminApi['exportAccountData'];\n requestAccountDeletion: AdminApi['requestAccountDeletion'];\n cancelAccountDeletion: AdminApi['cancelAccountDeletion'];\n\n // Organizations\n getOrganizations: AdminApi['getOrganizations'];\n getOrganization: AdminApi['getOrganization'];\n getOrganizationAsAdmin: AdminApi['getOrganizationAsAdmin'];\n getOrganizationMembersAsAdmin: AdminApi['getOrganizationMembersAsAdmin'];\n createOrganization: AdminApi['createOrganization'];\n updateOrganization: AdminApi['updateOrganization'];\n deleteOrganization: AdminApi['deleteOrganization'];\n joinOrganization: AdminApi['joinOrganization'];\n leaveOrganization: AdminApi['leaveOrganization'];\n generateLogoUploadUrl: AdminApi['generateLogoUploadUrl'];\n\n // Products\n importProducts: AdminApi['importProducts'];\n createProductAsAdmin: AdminApi['createProductAsAdmin'];\n getProductsAsAdmin: AdminApi['getProductsAsAdmin'];\n getProductAsAdmin: AdminApi['getProductAsAdmin'];\n updateProductAsAdmin: AdminApi['updateProductAsAdmin'];\n deleteProductAsAdmin: AdminApi['deleteProductAsAdmin'];\n\n // Workspaces\n getWorkspacesAsAdmin: AdminApi['getWorkspacesAsAdmin'];\n getWorkspaceAsAdmin: AdminApi['getWorkspaceAsAdmin'];\n getWorkspaceByNumericIdAsAdmin: AdminApi['getWorkspaceByNumericIdAsAdmin'];\n createWorkspaceAsAdmin: AdminApi['createWorkspaceAsAdmin'];\n updateWorkspaceAsAdmin: AdminApi['updateWorkspaceAsAdmin'];\n deleteWorkspaceAsAdmin: AdminApi['deleteWorkspaceAsAdmin'];\n createSchemaAsAdmin: AdminApi['createSchemaAsAdmin'];\n migrateSchemaAsAdmin: AdminApi['migrateSchemaAsAdmin'];\n provisionWorkspaceAsAdmin: AdminApi['provisionWorkspaceAsAdmin'];\n refreshProvisionStatusAsAdmin: AdminApi['refreshProvisionStatusAsAdmin'];\n enableMaintenanceMode: AdminApi['enableMaintenanceMode'];\n disableMaintenanceMode: AdminApi['disableMaintenanceMode'];\n getWorkspaceHealth: AdminApi['getWorkspaceHealth'];\n provisionPlanFeatures: AdminApi['provisionPlanFeatures'];\n changeWorkspaceProduct: AdminApi['changeWorkspaceProduct'];\n validateWorkflowAccessAsAdmin: AdminApi['validateWorkflowAccessAsAdmin'];\n\n // Members\n mergeMembers: AdminApi['mergeMembers'];\n getAdminWorkspaceMember: AdminApi['getAdminWorkspaceMember'];\n createAdminWorkspaceMember: AdminApi['createAdminWorkspaceMember'];\n updateAdminWorkspaceMember: AdminApi['updateAdminWorkspaceMember'];\n unarchiveAdminWorkspaceMember: AdminApi['unarchiveAdminWorkspaceMember'];\n getAdminWorkspaceMemberRoles: AdminApi['getAdminWorkspaceMemberRoles'];\n getMissingMemberships: AdminApi['getMissingMemberships'];\n linkMissingMembership: AdminApi['linkMissingMembership'];\n\n // Phone Numbers\n getUnmappedPhoneNumbers: AdminApi['getUnmappedPhoneNumbers'];\n getWorkspaceUnmappedPhoneNumbers: AdminApi['getWorkspaceUnmappedPhoneNumbers'];\n getWorkspacePhoneNumbersAsAdmin: AdminApi['getWorkspacePhoneNumbersAsAdmin'];\n getProviderPhoneNumbers: AdminApi['getProviderPhoneNumbers'];\n getProviderPhoneNumber: AdminApi['getProviderPhoneNumber'];\n updateProviderPhoneNumber: AdminApi['updateProviderPhoneNumber'];\n mapMainAccountPhone: AdminApi['mapMainAccountPhone'];\n unmapPhoneNumber: AdminApi['unmapPhoneNumber'];\n searchAvailablePhoneNumbersAsAdmin: AdminApi['searchAvailablePhoneNumbersAsAdmin'];\n purchasePhoneNumberAsAdmin: AdminApi['purchasePhoneNumberAsAdmin'];\n startBulkPhoneClassification: AdminApi['startBulkPhoneClassification'];\n getOrgA2PStatusAsAdmin: AdminApi['getOrgA2PStatusAsAdmin'];\n resetOrgA2PStatusAsAdmin: AdminApi['resetOrgA2PStatusAsAdmin'];\n\n // Site Mappings\n getSiteMappings: AdminApi['getSiteMappings'];\n getSiteMapping: AdminApi['getSiteMapping'];\n updateSiteMapping: AdminApi['updateSiteMapping'];\n updateSiteMappingWorkspace: AdminApi['updateSiteMappingWorkspace'];\n adminDeleteSiteMapping: AdminApi['adminDeleteSiteMapping'];\n createSiteMapping: AdminApi['createSiteMapping'];\n createOrUpdateSiteMapping: AdminApi['createOrUpdateSiteMapping'];\n deleteSiteMapping: AdminApi['deleteSiteMapping'];\n\n // Admin Workspace Inboxes\n getWorkspaceInboxesAsAdmin: AdminApi['getWorkspaceInboxesAsAdmin'];\n\n // Inbox Mappings\n getInboxMappings: AdminApi['getInboxMappings'];\n getInboxMapping: AdminApi['getInboxMapping'];\n updateInboxMapping: AdminApi['updateInboxMapping'];\n deleteAdminInboxMapping: AdminApi['deleteAdminInboxMapping'];\n\n // Utilities\n generateChatSummaries: AdminApi['generateChatSummaries'];\n executeQuery: AdminApi['executeQuery'];\n getTraceUrl: AdminApi['getTraceUrl'];\n listAllThemes: AdminApi['listAllThemes'];\n startBulkTOSAcceptance: AdminApi['startBulkTOSAcceptance'];\n startTokenUsageBackfill: AdminApi['startTokenUsageBackfill'];\n updateChatMessage: AdminApi['updateChatMessage'];\n\n // Customer Management\n createCustomerFromAccount: AdminApi['createCustomerFromAccount'];\n getCustomers: AdminApi['getCustomers'];\n getCustomer: AdminApi['getCustomer'];\n createCustomer: AdminApi['createCustomer'];\n updateCustomer: AdminApi['updateCustomer'];\n getCustomerAccounts: AdminApi['getCustomerAccounts'];\n linkCustomerToAccount: AdminApi['linkCustomerToAccount'];\n unlinkCustomerFromAccount: AdminApi['unlinkCustomerFromAccount'];\n syncCustomerToStripe: AdminApi['syncCustomerToStripe'];\n\n // Stripe Customer Management\n getStripeCustomer: AdminApi['getStripeCustomer'];\n createStripeCustomer: AdminApi['createStripeCustomer'];\n updateStripeCustomer: AdminApi['updateStripeCustomer'];\n\n // Stripe Subscription Management\n getStripeSubscriptions: AdminApi['getStripeSubscriptions'];\n createStripeSubscription: AdminApi['createStripeSubscription'];\n createDirectSubscription: AdminApi['createDirectSubscription'];\n updateStripeSubscription: AdminApi['updateStripeSubscription'];\n cancelStripeSubscription: AdminApi['cancelStripeSubscription'];\n provisionWorkspaceForSubscription: AdminApi['provisionWorkspaceForSubscription'];\n associateWorkspaceWithSubscription: AdminApi['associateWorkspaceWithSubscription'];\n createSubscriptionPaymentLink: AdminApi['createSubscriptionPaymentLink'];\n\n // Stripe Payment Methods (account-level — deprecated, use customer-level)\n createSetupIntent: AdminApi['createSetupIntent'];\n getStripePaymentMethods: AdminApi['getStripePaymentMethods'];\n attachStripePaymentMethod: AdminApi['attachStripePaymentMethod'];\n detachStripePaymentMethod: AdminApi['detachStripePaymentMethod'];\n setDefaultStripePaymentMethod: AdminApi['setDefaultStripePaymentMethod'];\n\n // Convert direct subscription to Stripe\n convertSubscriptionToStripe: AdminApi['convertSubscriptionToStripe'];\n\n // Stripe Payment Methods (customer-level)\n createCustomerSetupIntent: AdminApi['createCustomerSetupIntent'];\n getCustomerPaymentMethods: AdminApi['getCustomerPaymentMethods'];\n attachCustomerPaymentMethod: AdminApi['attachCustomerPaymentMethod'];\n detachCustomerPaymentMethod: AdminApi['detachCustomerPaymentMethod'];\n setDefaultCustomerPaymentMethod: AdminApi['setDefaultCustomerPaymentMethod'];\n\n previewWorkspaceOrganizationChange: AdminApi['previewWorkspaceOrganizationChange'];\n changeWorkspaceOrganization: AdminApi['changeWorkspaceOrganization'];\n\n // Stripe Invoices\n createStripeInvoice: AdminApi['createStripeInvoice'];\n getStripeInvoices: AdminApi['getStripeInvoices'];\n getStripeUpcomingInvoice: AdminApi['getStripeUpcomingInvoice'];\n\n // Invoices\n getBillingPeriods: AdminApi['getBillingPeriods'];\n generateInvoice: AdminApi['generateInvoice'];\n getInvoices: AdminApi['getInvoices'];\n getInvoiceDownloadUrl: AdminApi['getInvoiceDownloadUrl'];\n getReceiptDownloadUrl: AdminApi['getReceiptDownloadUrl'];\n recordInvoicePayment: AdminApi['recordInvoicePayment'];\n\n // Billing Dashboard\n getWorkspaceUsageDashboard: AdminApi['getWorkspaceUsageDashboard'];\n\n // Product Stripe Sync\n compareProductsWithStripe: AdminApi['compareProductsWithStripe'];\n syncProductToStripe: AdminApi['syncProductToStripe'];\n searchStripeProducts: AdminApi['searchStripeProducts'];\n\n // Usage API\n getUsageReport: AdminApi['getUsageReport'];\n\n // Subscriptions Admin API\n getSubscriptionsAsAdmin: AdminApi['getSubscriptionsAsAdmin'];\n getSubscriptionAsAdmin: AdminApi['getSubscriptionAsAdmin'];\n updateSubscriptionStatusAsAdmin: AdminApi['updateSubscriptionStatusAsAdmin'];\n updateSubscriptionCreditSettingsAsAdmin: AdminApi['updateSubscriptionCreditSettingsAsAdmin'];\n grantCreditsAsAdmin: AdminApi['grantCreditsAsAdmin'];\n listCreditGrantsAsAdmin: AdminApi['listCreditGrantsAsAdmin'];\n\n // Voice Metrics API\n getVoiceMetrics: AdminApi['getVoiceMetrics'];\n\n // Health Dashboard API\n getHealthMetrics: AdminApi['getHealthMetrics'];\n getHealthDetail: AdminApi['getHealthDetail'];\n\n // Admin Chat Endpoints\n listWorkspaceChats: AdminApi['listWorkspaceChats'];\n getWorkspaceChat: AdminApi['getWorkspaceChat'];\n rateWorkspaceChatMessage: AdminApi['rateWorkspaceChatMessage'];\n\n // Admin Temporal Inspection\n getTemporalAdminConfig: AdminApi['getTemporalAdminConfig'];\n listFailedTemporalWorkflows: AdminApi['listFailedTemporalWorkflows'];\n listStuckTemporalWorkflows: AdminApi['listStuckTemporalWorkflows'];\n getTemporalSummary: AdminApi['getTemporalSummary'];\n getTemporalWorkflowDetail: AdminApi['getTemporalWorkflowDetail'];\n\n // Reseller Management\n getResellers: AdminApi['getResellers'];\n getReseller: AdminApi['getReseller'];\n createReseller: AdminApi['createReseller'];\n updateReseller: AdminApi['updateReseller'];\n getResellerAccounts: AdminApi['getResellerAccounts'];\n linkResellerToAccount: AdminApi['linkResellerToAccount'];\n unlinkResellerFromAccount: AdminApi['unlinkResellerFromAccount'];\n}\n\nexport function bindAdminMethods(target: AdminBindings, admin: AdminApi): void {\n // Support Requests\n target.listSupportRequestsAsAdmin = admin.listSupportRequestsAsAdmin.bind(admin);\n target.getSupportRequestAsAdmin = admin.getSupportRequestAsAdmin.bind(admin);\n target.commentOnSupportRequestAsAdmin = admin.commentOnSupportRequestAsAdmin.bind(admin);\n target.noteOnSupportRequestAsAdmin = admin.noteOnSupportRequestAsAdmin.bind(admin);\n target.updateSupportRequestStatusAsAdmin = admin.updateSupportRequestStatusAsAdmin.bind(admin);\n target.updateSupportRequestAttributesAsAdmin =\n admin.updateSupportRequestAttributesAsAdmin.bind(admin);\n target.createSupportRequestLinearIssueAsAdmin =\n admin.createSupportRequestLinearIssueAsAdmin.bind(admin);\n target.createOutboundSupportRequestAsAdmin =\n admin.createOutboundSupportRequestAsAdmin.bind(admin);\n target.attachSupportRequestResourceAsAdmin =\n admin.attachSupportRequestResourceAsAdmin.bind(admin);\n target.revokeSupportRequestResourceAsAdmin =\n admin.revokeSupportRequestResourceAsAdmin.bind(admin);\n\n // Accounts\n target.getAccounts = admin.getAccounts.bind(admin);\n target.getAccountDetails = admin.getAccountDetails.bind(admin);\n target.getAccountByUuid = admin.getAccountByUuid.bind(admin);\n target.getAccountMemberships = admin.getAccountMemberships.bind(admin);\n target.getAccountOrgMemberships = admin.getAccountOrgMemberships.bind(admin);\n target.createAccountOrgMembership = admin.createAccountOrgMembership.bind(admin);\n target.deleteAccountOrgMembership = admin.deleteAccountOrgMembership.bind(admin);\n target.getAccountMembership = admin.getAccountMembership.bind(admin);\n target.updateAccountMembership = admin.updateAccountMembership.bind(admin);\n target.createAccountMembership = admin.createAccountMembership.bind(admin);\n target.deleteAccountMembership = admin.deleteAccountMembership.bind(admin);\n target.updateAccountAsAdmin = admin.updateAccountAsAdmin.bind(admin);\n target.createAccountAsAdmin = admin.createAccountAsAdmin.bind(admin);\n target.deleteAccountAsAdmin = admin.deleteAccountAsAdmin.bind(admin);\n target.lookupAccount = admin.lookupAccount.bind(admin);\n target.exportAccountData = admin.exportAccountData.bind(admin);\n target.requestAccountDeletion = admin.requestAccountDeletion.bind(admin);\n target.cancelAccountDeletion = admin.cancelAccountDeletion.bind(admin);\n\n // Organizations\n target.getOrganizations = admin.getOrganizations.bind(admin);\n target.getOrganization = admin.getOrganization.bind(admin);\n target.getOrganizationAsAdmin = admin.getOrganizationAsAdmin.bind(admin);\n target.getOrganizationMembersAsAdmin = admin.getOrganizationMembersAsAdmin.bind(admin);\n target.createOrganization = admin.createOrganization.bind(admin);\n target.updateOrganization = admin.updateOrganization.bind(admin);\n target.deleteOrganization = admin.deleteOrganization.bind(admin);\n target.joinOrganization = admin.joinOrganization.bind(admin);\n target.leaveOrganization = admin.leaveOrganization.bind(admin);\n target.generateLogoUploadUrl = admin.generateLogoUploadUrl.bind(admin);\n\n // Products\n target.importProducts = admin.importProducts.bind(admin);\n target.createProductAsAdmin = admin.createProductAsAdmin.bind(admin);\n target.getProductsAsAdmin = admin.getProductsAsAdmin.bind(admin);\n target.getProductAsAdmin = admin.getProductAsAdmin.bind(admin);\n target.updateProductAsAdmin = admin.updateProductAsAdmin.bind(admin);\n target.deleteProductAsAdmin = admin.deleteProductAsAdmin.bind(admin);\n\n // Workspaces\n target.getWorkspacesAsAdmin = admin.getWorkspacesAsAdmin.bind(admin);\n target.getWorkspaceAsAdmin = admin.getWorkspaceAsAdmin.bind(admin);\n target.getWorkspaceByNumericIdAsAdmin = admin.getWorkspaceByNumericIdAsAdmin.bind(admin);\n target.createWorkspaceAsAdmin = admin.createWorkspaceAsAdmin.bind(admin);\n target.updateWorkspaceAsAdmin = admin.updateWorkspaceAsAdmin.bind(admin);\n target.deleteWorkspaceAsAdmin = admin.deleteWorkspaceAsAdmin.bind(admin);\n target.createSchemaAsAdmin = admin.createSchemaAsAdmin.bind(admin);\n target.migrateSchemaAsAdmin = admin.migrateSchemaAsAdmin.bind(admin);\n target.provisionWorkspaceAsAdmin = admin.provisionWorkspaceAsAdmin.bind(admin);\n target.refreshProvisionStatusAsAdmin = admin.refreshProvisionStatusAsAdmin.bind(admin);\n target.enableMaintenanceMode = admin.enableMaintenanceMode.bind(admin);\n target.disableMaintenanceMode = admin.disableMaintenanceMode.bind(admin);\n target.getWorkspaceHealth = admin.getWorkspaceHealth.bind(admin);\n target.provisionPlanFeatures = admin.provisionPlanFeatures.bind(admin);\n target.changeWorkspaceProduct = admin.changeWorkspaceProduct.bind(admin);\n target.validateWorkflowAccessAsAdmin = admin.validateWorkflowAccessAsAdmin.bind(admin);\n\n // Members\n target.mergeMembers = admin.mergeMembers.bind(admin);\n target.getAdminWorkspaceMember = admin.getAdminWorkspaceMember.bind(admin);\n target.createAdminWorkspaceMember = admin.createAdminWorkspaceMember.bind(admin);\n target.updateAdminWorkspaceMember = admin.updateAdminWorkspaceMember.bind(admin);\n target.unarchiveAdminWorkspaceMember = admin.unarchiveAdminWorkspaceMember.bind(admin);\n target.getAdminWorkspaceMemberRoles = admin.getAdminWorkspaceMemberRoles.bind(admin);\n target.getMissingMemberships = admin.getMissingMemberships.bind(admin);\n target.linkMissingMembership = admin.linkMissingMembership.bind(admin);\n\n // Phone Numbers\n target.getUnmappedPhoneNumbers = admin.getUnmappedPhoneNumbers.bind(admin);\n target.getWorkspaceUnmappedPhoneNumbers = admin.getWorkspaceUnmappedPhoneNumbers.bind(admin);\n target.getWorkspacePhoneNumbersAsAdmin = admin.getWorkspacePhoneNumbersAsAdmin.bind(admin);\n target.getProviderPhoneNumbers = admin.getProviderPhoneNumbers.bind(admin);\n target.getProviderPhoneNumber = admin.getProviderPhoneNumber.bind(admin);\n target.updateProviderPhoneNumber = admin.updateProviderPhoneNumber.bind(admin);\n target.mapMainAccountPhone = admin.mapMainAccountPhone.bind(admin);\n target.unmapPhoneNumber = admin.unmapPhoneNumber.bind(admin);\n target.searchAvailablePhoneNumbersAsAdmin = admin.searchAvailablePhoneNumbersAsAdmin.bind(admin);\n target.purchasePhoneNumberAsAdmin = admin.purchasePhoneNumberAsAdmin.bind(admin);\n target.startBulkPhoneClassification = admin.startBulkPhoneClassification.bind(admin);\n target.getOrgA2PStatusAsAdmin = admin.getOrgA2PStatusAsAdmin.bind(admin);\n target.resetOrgA2PStatusAsAdmin = admin.resetOrgA2PStatusAsAdmin.bind(admin);\n\n // Site Mappings\n target.getSiteMappings = admin.getSiteMappings.bind(admin);\n target.getSiteMapping = admin.getSiteMapping.bind(admin);\n target.updateSiteMapping = admin.updateSiteMapping.bind(admin);\n target.updateSiteMappingWorkspace = admin.updateSiteMappingWorkspace.bind(admin);\n target.adminDeleteSiteMapping = admin.adminDeleteSiteMapping.bind(admin);\n target.createSiteMapping = admin.createSiteMapping.bind(admin);\n target.createOrUpdateSiteMapping = admin.createOrUpdateSiteMapping.bind(admin);\n target.deleteSiteMapping = admin.deleteSiteMapping.bind(admin);\n\n // Inbox Mappings\n target.getInboxMappings = admin.getInboxMappings.bind(admin);\n target.getInboxMapping = admin.getInboxMapping.bind(admin);\n target.updateInboxMapping = admin.updateInboxMapping.bind(admin);\n target.deleteAdminInboxMapping = admin.deleteAdminInboxMapping.bind(admin);\n\n // Utilities\n target.generateChatSummaries = admin.generateChatSummaries.bind(admin);\n target.executeQuery = admin.executeQuery.bind(admin);\n target.getTraceUrl = admin.getTraceUrl.bind(admin);\n target.listAllThemes = admin.listAllThemes.bind(admin);\n target.startBulkTOSAcceptance = admin.startBulkTOSAcceptance.bind(admin);\n target.startTokenUsageBackfill = admin.startTokenUsageBackfill.bind(admin);\n target.updateChatMessage = admin.updateChatMessage.bind(admin);\n\n // Customer Management\n target.createCustomerFromAccount = admin.createCustomerFromAccount.bind(admin);\n target.getCustomers = admin.getCustomers.bind(admin);\n target.getCustomer = admin.getCustomer.bind(admin);\n target.createCustomer = admin.createCustomer.bind(admin);\n target.updateCustomer = admin.updateCustomer.bind(admin);\n target.getCustomerAccounts = admin.getCustomerAccounts.bind(admin);\n target.linkCustomerToAccount = admin.linkCustomerToAccount.bind(admin);\n target.unlinkCustomerFromAccount = admin.unlinkCustomerFromAccount.bind(admin);\n target.syncCustomerToStripe = admin.syncCustomerToStripe.bind(admin);\n\n // Stripe Customer Management\n target.getStripeCustomer = admin.getStripeCustomer.bind(admin);\n target.createStripeCustomer = admin.createStripeCustomer.bind(admin);\n target.updateStripeCustomer = admin.updateStripeCustomer.bind(admin);\n\n // Stripe Subscription Management\n target.getStripeSubscriptions = admin.getStripeSubscriptions.bind(admin);\n target.createStripeSubscription = admin.createStripeSubscription.bind(admin);\n target.createDirectSubscription = admin.createDirectSubscription.bind(admin);\n target.updateStripeSubscription = admin.updateStripeSubscription.bind(admin);\n target.cancelStripeSubscription = admin.cancelStripeSubscription.bind(admin);\n target.provisionWorkspaceForSubscription = admin.provisionWorkspaceForSubscription.bind(admin);\n target.associateWorkspaceWithSubscription = admin.associateWorkspaceWithSubscription.bind(admin);\n target.createSubscriptionPaymentLink = admin.createSubscriptionPaymentLink.bind(admin);\n\n // Stripe Payment Methods (account-level — deprecated)\n target.createSetupIntent = admin.createSetupIntent.bind(admin);\n target.getStripePaymentMethods = admin.getStripePaymentMethods.bind(admin);\n target.attachStripePaymentMethod = admin.attachStripePaymentMethod.bind(admin);\n target.detachStripePaymentMethod = admin.detachStripePaymentMethod.bind(admin);\n target.setDefaultStripePaymentMethod = admin.setDefaultStripePaymentMethod.bind(admin);\n\n // Convert direct subscription to Stripe\n target.convertSubscriptionToStripe = admin.convertSubscriptionToStripe.bind(admin);\n\n // Stripe Payment Methods (customer-level)\n target.createCustomerSetupIntent = admin.createCustomerSetupIntent.bind(admin);\n target.getCustomerPaymentMethods = admin.getCustomerPaymentMethods.bind(admin);\n target.attachCustomerPaymentMethod = admin.attachCustomerPaymentMethod.bind(admin);\n target.detachCustomerPaymentMethod = admin.detachCustomerPaymentMethod.bind(admin);\n target.setDefaultCustomerPaymentMethod = admin.setDefaultCustomerPaymentMethod.bind(admin);\n\n target.previewWorkspaceOrganizationChange = admin.previewWorkspaceOrganizationChange.bind(admin);\n target.changeWorkspaceOrganization = admin.changeWorkspaceOrganization.bind(admin);\n\n // Stripe Invoices\n target.createStripeInvoice = admin.createStripeInvoice.bind(admin);\n target.getStripeInvoices = admin.getStripeInvoices.bind(admin);\n target.getStripeUpcomingInvoice = admin.getStripeUpcomingInvoice.bind(admin);\n\n // Invoices\n target.getBillingPeriods = admin.getBillingPeriods.bind(admin);\n target.generateInvoice = admin.generateInvoice.bind(admin);\n target.getInvoices = admin.getInvoices.bind(admin);\n target.getInvoiceDownloadUrl = admin.getInvoiceDownloadUrl.bind(admin);\n target.getReceiptDownloadUrl = admin.getReceiptDownloadUrl.bind(admin);\n target.recordInvoicePayment = admin.recordInvoicePayment.bind(admin);\n\n // Billing Dashboard\n target.getWorkspaceUsageDashboard = admin.getWorkspaceUsageDashboard.bind(admin);\n\n // Product Stripe Sync\n target.compareProductsWithStripe = admin.compareProductsWithStripe.bind(admin);\n target.syncProductToStripe = admin.syncProductToStripe.bind(admin);\n target.searchStripeProducts = admin.searchStripeProducts.bind(admin);\n\n // Usage API\n target.getUsageReport = admin.getUsageReport.bind(admin);\n\n // Subscriptions Admin API\n target.getSubscriptionsAsAdmin = admin.getSubscriptionsAsAdmin.bind(admin);\n target.getSubscriptionAsAdmin = admin.getSubscriptionAsAdmin.bind(admin);\n target.updateSubscriptionStatusAsAdmin = admin.updateSubscriptionStatusAsAdmin.bind(admin);\n target.updateSubscriptionCreditSettingsAsAdmin =\n admin.updateSubscriptionCreditSettingsAsAdmin.bind(admin);\n target.grantCreditsAsAdmin = admin.grantCreditsAsAdmin.bind(admin);\n target.listCreditGrantsAsAdmin = admin.listCreditGrantsAsAdmin.bind(admin);\n\n // Voice Metrics API\n target.getVoiceMetrics = admin.getVoiceMetrics.bind(admin);\n\n // Health Dashboard API\n target.getHealthMetrics = admin.getHealthMetrics.bind(admin);\n target.getHealthDetail = admin.getHealthDetail.bind(admin);\n\n // Admin Workspace Inboxes\n target.getWorkspaceInboxesAsAdmin = admin.getWorkspaceInboxesAsAdmin.bind(admin);\n\n // Admin Chat Endpoints\n target.listWorkspaceChats = admin.listWorkspaceChats.bind(admin);\n target.getWorkspaceChat = admin.getWorkspaceChat.bind(admin);\n target.rateWorkspaceChatMessage = admin.rateWorkspaceChatMessage.bind(admin);\n\n // Admin Temporal Inspection\n target.getTemporalAdminConfig = admin.getTemporalAdminConfig.bind(admin);\n target.listFailedTemporalWorkflows = admin.listFailedTemporalWorkflows.bind(admin);\n target.listStuckTemporalWorkflows = admin.listStuckTemporalWorkflows.bind(admin);\n target.getTemporalSummary = admin.getTemporalSummary.bind(admin);\n target.getTemporalWorkflowDetail = admin.getTemporalWorkflowDetail.bind(admin);\n\n // Reseller Management\n target.getResellers = admin.getResellers.bind(admin);\n target.getReseller = admin.getReseller.bind(admin);\n target.createReseller = admin.createReseller.bind(admin);\n target.updateReseller = admin.updateReseller.bind(admin);\n target.getResellerAccounts = admin.getResellerAccounts.bind(admin);\n target.linkResellerToAccount = admin.linkResellerToAccount.bind(admin);\n target.unlinkResellerFromAccount = admin.unlinkResellerFromAccount.bind(admin);\n}\n","import { GravityRailClient } from '@gravity-rail/sdk';\nimport { AdminApi } from '../api/admin';\nimport { AdminBindings, bindAdminMethods } from './bindings/admin';\n\n/**\n * ApiClient extends GravityRailClient with admin/superuser methods.\n *\n * This is the full-featured client used internally. For the public SDK,\n * use {@link GravityRailClient} from @gravity-rail/sdk which excludes\n * admin functionality.\n */\nexport class ApiClient extends GravityRailClient implements AdminBindings {\n // Admin API\n listSupportRequestsAsAdmin!: AdminBindings['listSupportRequestsAsAdmin'];\n getSupportRequestAsAdmin!: AdminBindings['getSupportRequestAsAdmin'];\n commentOnSupportRequestAsAdmin!: AdminBindings['commentOnSupportRequestAsAdmin'];\n noteOnSupportRequestAsAdmin!: AdminBindings['noteOnSupportRequestAsAdmin'];\n updateSupportRequestStatusAsAdmin!: AdminBindings['updateSupportRequestStatusAsAdmin'];\n updateSupportRequestAttributesAsAdmin!: AdminBindings['updateSupportRequestAttributesAsAdmin'];\n createSupportRequestLinearIssueAsAdmin!: AdminBindings['createSupportRequestLinearIssueAsAdmin'];\n createOutboundSupportRequestAsAdmin!: AdminBindings['createOutboundSupportRequestAsAdmin'];\n attachSupportRequestResourceAsAdmin!: AdminBindings['attachSupportRequestResourceAsAdmin'];\n revokeSupportRequestResourceAsAdmin!: AdminBindings['revokeSupportRequestResourceAsAdmin'];\n getAccounts!: AdminBindings['getAccounts'];\n getAccountDetails!: AdminBindings['getAccountDetails'];\n getAccountByUuid!: AdminBindings['getAccountByUuid'];\n getAccountMemberships!: AdminBindings['getAccountMemberships'];\n getAccountOrgMemberships!: AdminBindings['getAccountOrgMemberships'];\n createAccountOrgMembership!: AdminBindings['createAccountOrgMembership'];\n deleteAccountOrgMembership!: AdminBindings['deleteAccountOrgMembership'];\n getAccountMembership!: AdminBindings['getAccountMembership'];\n updateAccountMembership!: AdminBindings['updateAccountMembership'];\n createAccountMembership!: AdminBindings['createAccountMembership'];\n deleteAccountMembership!: AdminBindings['deleteAccountMembership'];\n updateAccountAsAdmin!: AdminBindings['updateAccountAsAdmin'];\n createAccountAsAdmin!: AdminBindings['createAccountAsAdmin'];\n deleteAccountAsAdmin!: AdminBindings['deleteAccountAsAdmin'];\n lookupAccount!: AdminBindings['lookupAccount'];\n exportAccountData!: AdminBindings['exportAccountData'];\n requestAccountDeletion!: AdminBindings['requestAccountDeletion'];\n cancelAccountDeletion!: AdminBindings['cancelAccountDeletion'];\n getOrganizations!: AdminBindings['getOrganizations'];\n getOrganization!: AdminBindings['getOrganization'];\n getOrganizationAsAdmin!: AdminBindings['getOrganizationAsAdmin'];\n getOrganizationMembersAsAdmin!: AdminBindings['getOrganizationMembersAsAdmin'];\n createOrganization!: AdminBindings['createOrganization'];\n updateOrganization!: AdminBindings['updateOrganization'];\n deleteOrganization!: AdminBindings['deleteOrganization'];\n joinOrganization!: AdminBindings['joinOrganization'];\n leaveOrganization!: AdminBindings['leaveOrganization'];\n generateLogoUploadUrl!: AdminBindings['generateLogoUploadUrl'];\n importProducts!: AdminBindings['importProducts'];\n createProductAsAdmin!: AdminBindings['createProductAsAdmin'];\n getProductsAsAdmin!: AdminBindings['getProductsAsAdmin'];\n getProductAsAdmin!: AdminBindings['getProductAsAdmin'];\n updateProductAsAdmin!: AdminBindings['updateProductAsAdmin'];\n deleteProductAsAdmin!: AdminBindings['deleteProductAsAdmin'];\n getWorkspacesAsAdmin!: AdminBindings['getWorkspacesAsAdmin'];\n getWorkspaceAsAdmin!: AdminBindings['getWorkspaceAsAdmin'];\n getWorkspaceByNumericIdAsAdmin!: AdminBindings['getWorkspaceByNumericIdAsAdmin'];\n createWorkspaceAsAdmin!: AdminBindings['createWorkspaceAsAdmin'];\n updateWorkspaceAsAdmin!: AdminBindings['updateWorkspaceAsAdmin'];\n deleteWorkspaceAsAdmin!: AdminBindings['deleteWorkspaceAsAdmin'];\n createSchemaAsAdmin!: AdminBindings['createSchemaAsAdmin'];\n migrateSchemaAsAdmin!: AdminBindings['migrateSchemaAsAdmin'];\n provisionWorkspaceAsAdmin!: AdminBindings['provisionWorkspaceAsAdmin'];\n refreshProvisionStatusAsAdmin!: AdminBindings['refreshProvisionStatusAsAdmin'];\n enableMaintenanceMode!: AdminBindings['enableMaintenanceMode'];\n disableMaintenanceMode!: AdminBindings['disableMaintenanceMode'];\n getWorkspaceHealth!: AdminBindings['getWorkspaceHealth'];\n provisionPlanFeatures!: AdminBindings['provisionPlanFeatures'];\n changeWorkspaceProduct!: AdminBindings['changeWorkspaceProduct'];\n validateWorkflowAccessAsAdmin!: AdminBindings['validateWorkflowAccessAsAdmin'];\n mergeMembers!: AdminBindings['mergeMembers'];\n getAdminWorkspaceMember!: AdminBindings['getAdminWorkspaceMember'];\n createAdminWorkspaceMember!: AdminBindings['createAdminWorkspaceMember'];\n updateAdminWorkspaceMember!: AdminBindings['updateAdminWorkspaceMember'];\n unarchiveAdminWorkspaceMember!: AdminBindings['unarchiveAdminWorkspaceMember'];\n getAdminWorkspaceMemberRoles!: AdminBindings['getAdminWorkspaceMemberRoles'];\n getMissingMemberships!: AdminBindings['getMissingMemberships'];\n linkMissingMembership!: AdminBindings['linkMissingMembership'];\n getUnmappedPhoneNumbers!: AdminBindings['getUnmappedPhoneNumbers'];\n getWorkspaceUnmappedPhoneNumbers!: AdminBindings['getWorkspaceUnmappedPhoneNumbers'];\n getWorkspacePhoneNumbersAsAdmin!: AdminBindings['getWorkspacePhoneNumbersAsAdmin'];\n getProviderPhoneNumbers!: AdminBindings['getProviderPhoneNumbers'];\n getProviderPhoneNumber!: AdminBindings['getProviderPhoneNumber'];\n updateProviderPhoneNumber!: AdminBindings['updateProviderPhoneNumber'];\n mapMainAccountPhone!: AdminBindings['mapMainAccountPhone'];\n unmapPhoneNumber!: AdminBindings['unmapPhoneNumber'];\n searchAvailablePhoneNumbersAsAdmin!: AdminBindings['searchAvailablePhoneNumbersAsAdmin'];\n purchasePhoneNumberAsAdmin!: AdminBindings['purchasePhoneNumberAsAdmin'];\n startBulkPhoneClassification!: AdminBindings['startBulkPhoneClassification'];\n getOrgA2PStatusAsAdmin!: AdminBindings['getOrgA2PStatusAsAdmin'];\n resetOrgA2PStatusAsAdmin!: AdminBindings['resetOrgA2PStatusAsAdmin'];\n getSiteMappings!: AdminBindings['getSiteMappings'];\n getSiteMapping!: AdminBindings['getSiteMapping'];\n updateSiteMapping!: AdminBindings['updateSiteMapping'];\n updateSiteMappingWorkspace!: AdminBindings['updateSiteMappingWorkspace'];\n adminDeleteSiteMapping!: AdminBindings['adminDeleteSiteMapping'];\n createSiteMapping!: AdminBindings['createSiteMapping'];\n createOrUpdateSiteMapping!: AdminBindings['createOrUpdateSiteMapping'];\n deleteSiteMapping!: AdminBindings['deleteSiteMapping'];\n getInboxMappings!: AdminBindings['getInboxMappings'];\n getInboxMapping!: AdminBindings['getInboxMapping'];\n updateInboxMapping!: AdminBindings['updateInboxMapping'];\n deleteAdminInboxMapping!: AdminBindings['deleteAdminInboxMapping'];\n generateChatSummaries!: AdminBindings['generateChatSummaries'];\n executeQuery!: AdminBindings['executeQuery'];\n getTraceUrl!: AdminBindings['getTraceUrl'];\n listAllThemes!: AdminBindings['listAllThemes'];\n startBulkTOSAcceptance!: AdminBindings['startBulkTOSAcceptance'];\n startTokenUsageBackfill!: AdminBindings['startTokenUsageBackfill'];\n updateChatMessage!: AdminBindings['updateChatMessage'];\n createCustomerFromAccount!: AdminBindings['createCustomerFromAccount'];\n getCustomers!: AdminBindings['getCustomers'];\n getCustomer!: AdminBindings['getCustomer'];\n createCustomer!: AdminBindings['createCustomer'];\n updateCustomer!: AdminBindings['updateCustomer'];\n getCustomerAccounts!: AdminBindings['getCustomerAccounts'];\n linkCustomerToAccount!: AdminBindings['linkCustomerToAccount'];\n unlinkCustomerFromAccount!: AdminBindings['unlinkCustomerFromAccount'];\n syncCustomerToStripe!: AdminBindings['syncCustomerToStripe'];\n getStripeCustomer!: AdminBindings['getStripeCustomer'];\n createStripeCustomer!: AdminBindings['createStripeCustomer'];\n updateStripeCustomer!: AdminBindings['updateStripeCustomer'];\n getStripeSubscriptions!: AdminBindings['getStripeSubscriptions'];\n createStripeSubscription!: AdminBindings['createStripeSubscription'];\n createDirectSubscription!: AdminBindings['createDirectSubscription'];\n updateStripeSubscription!: AdminBindings['updateStripeSubscription'];\n cancelStripeSubscription!: AdminBindings['cancelStripeSubscription'];\n provisionWorkspaceForSubscription!: AdminBindings['provisionWorkspaceForSubscription'];\n associateWorkspaceWithSubscription!: AdminBindings['associateWorkspaceWithSubscription'];\n createSubscriptionPaymentLink!: AdminBindings['createSubscriptionPaymentLink'];\n createSetupIntent!: AdminBindings['createSetupIntent'];\n getStripePaymentMethods!: AdminBindings['getStripePaymentMethods'];\n attachStripePaymentMethod!: AdminBindings['attachStripePaymentMethod'];\n detachStripePaymentMethod!: AdminBindings['detachStripePaymentMethod'];\n setDefaultStripePaymentMethod!: AdminBindings['setDefaultStripePaymentMethod'];\n createCustomerSetupIntent!: AdminBindings['createCustomerSetupIntent'];\n getCustomerPaymentMethods!: AdminBindings['getCustomerPaymentMethods'];\n attachCustomerPaymentMethod!: AdminBindings['attachCustomerPaymentMethod'];\n detachCustomerPaymentMethod!: AdminBindings['detachCustomerPaymentMethod'];\n setDefaultCustomerPaymentMethod!: AdminBindings['setDefaultCustomerPaymentMethod'];\n convertSubscriptionToStripe!: AdminBindings['convertSubscriptionToStripe'];\n previewWorkspaceOrganizationChange!: AdminBindings['previewWorkspaceOrganizationChange'];\n changeWorkspaceOrganization!: AdminBindings['changeWorkspaceOrganization'];\n createStripeInvoice!: AdminBindings['createStripeInvoice'];\n getStripeInvoices!: AdminBindings['getStripeInvoices'];\n getStripeUpcomingInvoice!: AdminBindings['getStripeUpcomingInvoice'];\n getWorkspaceUsageDashboard!: AdminBindings['getWorkspaceUsageDashboard'];\n compareProductsWithStripe!: AdminBindings['compareProductsWithStripe'];\n syncProductToStripe!: AdminBindings['syncProductToStripe'];\n searchStripeProducts!: AdminBindings['searchStripeProducts'];\n getUsageReport!: AdminBindings['getUsageReport'];\n getSubscriptionsAsAdmin!: AdminBindings['getSubscriptionsAsAdmin'];\n getSubscriptionAsAdmin!: AdminBindings['getSubscriptionAsAdmin'];\n updateSubscriptionStatusAsAdmin!: AdminBindings['updateSubscriptionStatusAsAdmin'];\n updateSubscriptionCreditSettingsAsAdmin!: AdminBindings['updateSubscriptionCreditSettingsAsAdmin'];\n grantCreditsAsAdmin!: AdminBindings['grantCreditsAsAdmin'];\n listCreditGrantsAsAdmin!: AdminBindings['listCreditGrantsAsAdmin'];\n getVoiceMetrics!: AdminBindings['getVoiceMetrics'];\n getHealthMetrics!: AdminBindings['getHealthMetrics'];\n getHealthDetail!: AdminBindings['getHealthDetail'];\n getWorkspaceInboxesAsAdmin!: AdminBindings['getWorkspaceInboxesAsAdmin'];\n listWorkspaceChats!: AdminBindings['listWorkspaceChats'];\n getWorkspaceChat!: AdminBindings['getWorkspaceChat'];\n rateWorkspaceChatMessage!: AdminBindings['rateWorkspaceChatMessage'];\n getTemporalAdminConfig!: AdminBindings['getTemporalAdminConfig'];\n listFailedTemporalWorkflows!: AdminBindings['listFailedTemporalWorkflows'];\n listStuckTemporalWorkflows!: AdminBindings['listStuckTemporalWorkflows'];\n getTemporalSummary!: AdminBindings['getTemporalSummary'];\n getTemporalWorkflowDetail!: AdminBindings['getTemporalWorkflowDetail'];\n getResellers!: AdminBindings['getResellers'];\n getReseller!: AdminBindings['getReseller'];\n createReseller!: AdminBindings['createReseller'];\n updateReseller!: AdminBindings['updateReseller'];\n getResellerAccounts!: AdminBindings['getResellerAccounts'];\n linkResellerToAccount!: AdminBindings['linkResellerToAccount'];\n unlinkResellerFromAccount!: AdminBindings['unlinkResellerFromAccount'];\n getBillingPeriods!: AdminBindings['getBillingPeriods'];\n generateInvoice!: AdminBindings['generateInvoice'];\n getInvoices!: AdminBindings['getInvoices'];\n getInvoiceDownloadUrl!: AdminBindings['getInvoiceDownloadUrl'];\n getReceiptDownloadUrl!: AdminBindings['getReceiptDownloadUrl'];\n recordInvoicePayment!: AdminBindings['recordInvoicePayment'];\n\n protected adminApi: AdminApi;\n\n constructor(apiKey: string | undefined, baseUrl: string, customFetch?: typeof fetch) {\n super(apiKey, baseUrl, customFetch);\n this.adminApi = new AdminApi(apiKey, baseUrl, customFetch);\n bindAdminMethods(this, this.adminApi);\n }\n\n /**\n * Propagates acting member switches to the admin API module as well.\n */\n override setActingMember(memberUuid: string | undefined) {\n super.setActingMember(memberUuid);\n if (typeof this.adminApi.setActingMember === 'function') {\n this.adminApi.setActingMember(memberUuid);\n }\n }\n\n // setOrgToken is intentionally NOT overridden here. Admin routes\n // (/api/v2/admin/*) are protected by the bearer token's superuser claim and\n // ignore X-Org-Token entirely, so propagating an org token to adminApi is\n // dead code that would only obscure auth flow if admin route logic changes.\n}\n","import type { ArgDef, ParsedArgs } from './types';\nimport { CLIError } from './errors';\n\n// ── Response shape detection ─────────────────────────────────────────\n\n/** Metadata extracted from a paginated API response */\nexport interface PaginationMeta {\n /** Total number of items across all pages (page-based only) */\n total?: number;\n /** Current page number (page-based only) */\n page?: number;\n /** Total pages (page-based only) */\n totalPages?: number;\n /** Whether more pages exist (cursor-based only) */\n hasMore?: boolean;\n /** Cursor for next page (cursor-based only) */\n nextCursor?: string;\n}\n\n/** Explicit pagination contract passed from commands to outputData */\nexport interface ListResult {\n items: unknown[];\n meta?: PaginationMeta;\n supportsAll?: boolean;\n}\n\n/** Type guard: is the value a ListResult (explicit contract)? */\nexport function isListResult(data: unknown): data is ListResult {\n if (!data || typeof data !== 'object' || Array.isArray(data)) return false;\n const obj = data as Record<string, unknown>;\n return (\n Array.isArray(obj.items) &&\n ('supportsAll' in obj ||\n ('meta' in obj && (obj.meta === undefined || typeof obj.meta === 'object')))\n );\n}\n\n/** Check if a response looks like a page-based paginated envelope.\n * Matches both `{ items, total, totalPages, page }` (standard) and\n * `{ items, total, page, pageSize }` (legacy — e.g. InvitationListResponse,\n * InquiryListResponse). This is a pure type guard with no side effects;\n * totalPages computation for legacy shapes happens in extractPaginationMeta. */\nexport function isPagePaginatedResponse(data: unknown): data is {\n items: unknown[];\n total: number;\n page: number;\n totalPages?: number;\n pageSize?: number;\n} {\n if (!data || typeof data !== 'object') return false;\n const obj = data as Record<string, unknown>;\n if (!Array.isArray(obj.items) || typeof obj.page !== 'number') return false;\n\n // Standard shape: has totalPages\n if (typeof obj.totalPages === 'number') return true;\n\n // Legacy shape: has total + pageSize but no totalPages\n if (typeof obj.total === 'number' && typeof obj.pageSize === 'number') return true;\n\n return false;\n}\n\n/** Check if a response looks like a cursor-based paginated envelope */\nexport function isCursorPaginatedResponse(data: unknown): data is {\n items: unknown[];\n hasMore: boolean;\n nextCursor?: string;\n} {\n if (!data || typeof data !== 'object') return false;\n const obj = data as Record<string, unknown>;\n return Array.isArray(obj.items) && typeof obj.hasMore === 'boolean';\n}\n\n/** Check if a response is any paginated envelope ({ items: [...], ... }) */\nexport function isPaginatedResponse(data: unknown): boolean {\n return isPagePaginatedResponse(data) || isCursorPaginatedResponse(data);\n}\n\n/** Extract pagination metadata from a response, or return undefined for non-paginated responses.\n * For legacy shapes without totalPages, computes it from total/pageSize. */\nexport function extractPaginationMeta(data: unknown): PaginationMeta | undefined {\n if (isPagePaginatedResponse(data)) {\n const totalPages =\n data.totalPages ?? (data.pageSize ? Math.ceil(data.total / data.pageSize) : undefined);\n return {\n total: data.total,\n page: data.page,\n totalPages,\n };\n }\n if (isCursorPaginatedResponse(data)) {\n return {\n hasMore: data.hasMore,\n nextCursor: data.nextCursor,\n };\n }\n return undefined;\n}\n\n// ── Warning formatting ───────────────────────────────────────────────\n\n/** Format a pagination warning for stderr. Returns undefined if no warning needed.\n * When `supportsAll` is false, the \"Use --all\" hint is omitted because the\n * command does not actually expose the --all flag. */\nexport function formatPaginationWarning(\n meta: PaginationMeta | undefined,\n supportsAll: boolean = true\n): string | undefined {\n if (!meta) return undefined;\n\n const allHint = supportsAll ? ' Use --all to fetch all pages.' : '';\n\n // Page-based: warn when there are multiple pages\n if (meta.totalPages !== undefined && meta.totalPages > 1) {\n const pageNum = meta.page ?? 1;\n return `Showing page ${pageNum} of ${meta.totalPages} (${meta.total} total items).${allHint}`;\n }\n\n // Cursor-based: warn when more pages exist\n if (meta.hasMore === true) {\n return `More results available.${allHint}`;\n }\n\n return undefined;\n}\n\n// ── Unwrapping ───────────────────────────────────────────────────────\n\n/** Unwrap items from a paginated response or return the data as-is if it's an array */\nexport function unwrapItems(data: unknown): unknown[] {\n if (Array.isArray(data)) return data;\n if (\n data &&\n typeof data === 'object' &&\n 'items' in data &&\n Array.isArray((data as Record<string, unknown>).items)\n ) {\n return (data as Record<string, unknown>).items as unknown[];\n }\n return [data];\n}\n\n// ── Arg definitions ──────────────────────────────────────────────────\n\n/** Default pagination args for list commands (page, page-size, all). No search. */\nexport const LIST_PAGINATION_ARGS: ArgDef[] = [\n { name: 'page', description: 'Page number' },\n { name: 'page-size', description: 'Page size' },\n { name: 'all', description: 'Fetch all pages and return combined results', isFlag: true },\n];\n\n// ── Arg-to-options helpers ───────────────────────────────────────────\n\n/** Convert parsed CLI args to API pagination options */\nexport function parsePaginationArgs(args: ParsedArgs): {\n page?: number;\n pageSize?: number;\n all?: boolean;\n} {\n const result: { page?: number; pageSize?: number; all?: boolean } = {};\n\n if (args.all === true) {\n result.all = true;\n }\n\n if (args.page !== undefined) {\n const num = Number(args.page);\n if (isNaN(num) || num < 1) throw new CLIError('--page must be a positive integer');\n result.page = num;\n }\n\n if (args['page-size'] !== undefined) {\n const num = Number(args['page-size']);\n if (isNaN(num) || num < 1) throw new CLIError('--page-size must be a positive integer');\n if (num > 100) throw new CLIError('--page-size must be at most 100 (API limit)');\n result.pageSize = num;\n }\n\n return result;\n}\n\n// ── fetchAll helpers ─────────────────────────────────────────────────\n\nconst MAX_PAGE_SIZE = 100;\nconst MAX_PAGES = 200; // Safety limit to prevent infinite loops\n\n/**\n * Fetch all pages from a page-based paginated endpoint.\n * The fetcher receives { page, pageSize } and should return the raw API response.\n * Throws CLIError if MAX_PAGES is reached without exhausting all pages.\n */\nexport async function fetchAllPages(\n fetcher: (opts: { page: number; pageSize: number }) => Promise<unknown>\n): Promise<unknown[]> {\n const allItems: unknown[] = [];\n let page = 1;\n\n while (page <= MAX_PAGES) {\n const result = await fetcher({ page, pageSize: MAX_PAGE_SIZE });\n const items = unwrapItems(result);\n allItems.push(...items);\n\n // Use server metadata for termination\n const meta = extractPaginationMeta(result);\n if (meta?.totalPages !== undefined) {\n if (page >= meta.totalPages) break;\n } else if (!isPagePaginatedResponse(result)) {\n // Raw array or no metadata — single fetch is enough\n if (items.length < MAX_PAGE_SIZE) break;\n }\n\n if (page === MAX_PAGES) {\n throw new CLIError(\n `Reached maximum page limit (${MAX_PAGES}). Results may be incomplete.`\n );\n }\n\n page++;\n }\n\n return allItems;\n}\n\n/**\n * Fetch all pages from a cursor-based paginated endpoint.\n * The fetcher receives { cursor? } and should return the raw API response.\n * Throws CLIError if MAX_PAGES is reached without exhausting all pages.\n */\nexport async function fetchAllCursorPages(\n fetcher: (opts: { cursor?: string }) => Promise<unknown>\n): Promise<unknown[]> {\n const allItems: unknown[] = [];\n let cursor: string | undefined;\n let pages = 0;\n\n while (pages < MAX_PAGES) {\n const result = await fetcher({ cursor });\n const items = unwrapItems(result);\n allItems.push(...items);\n pages++;\n\n if (isCursorPaginatedResponse(result) && result.hasMore && result.nextCursor) {\n cursor = result.nextCursor;\n } else {\n break;\n }\n\n if (pages === MAX_PAGES) {\n throw new CLIError(\n `Reached maximum page limit (${MAX_PAGES}). Results may be incomplete.`\n );\n }\n }\n\n return allItems;\n}\n\n// ── ListResult factory ──────────────────────────────────────────────\n\n/**\n * Wrap a raw API response into a ListResult with explicit pagination metadata.\n * Works with both page-based and cursor-based responses, as well as plain arrays.\n *\n * @param data - Raw API response (paginated envelope or plain array)\n * @param supportsAll - Whether the calling command exposes --all\n */\nexport function listResult(data: unknown, supportsAll: boolean = false): ListResult {\n return {\n items: unwrapItems(data),\n meta: extractPaginationMeta(data),\n supportsAll,\n };\n}\n","import { printTable } from '../cli-utils';\nimport {\n type PaginationMeta,\n isListResult,\n extractPaginationMeta,\n formatPaginationWarning,\n unwrapItems,\n} from './pagination';\n\nexport type OutputFormat = 'json' | 'jsonl' | 'table';\n\nexport interface OutputOptions {\n outputFormat: OutputFormat;\n}\n\nexport interface TableColumn<T> {\n header: string;\n getValue: (item: T) => string;\n maxWidth?: number;\n}\n\n/** Detect default output format based on whether stdout is a TTY */\nexport function detectOutputFormat(explicit?: string): OutputFormat {\n if (explicit) return explicit as OutputFormat;\n return process.stdout.isTTY ? 'table' : 'json';\n}\n\n/**\n * Write a list of items to stdout in the requested format.\n *\n * Accepts:\n * - A `ListResult` (explicit contract with items, meta, supportsAll) — preferred.\n * - Raw arrays, paginated responses ({ items: [...] }), or any object — legacy.\n *\n * When a `ListResult` is passed, its explicit `meta` and `supportsAll` are used.\n * When raw data is passed, pagination metadata is auto-detected with\n * `supportsAll: false` as the safe default.\n *\n * The optional `paginationMeta` and `supportsAll` parameters are kept for\n * backward compatibility but are ignored when a `ListResult` is passed.\n */\nexport function outputData(\n data: unknown,\n opts: OutputOptions,\n columns?: TableColumn<any>[],\n paginationMeta?: PaginationMeta,\n supportsAll?: boolean\n): void {\n let items: unknown[];\n let meta: PaginationMeta | undefined;\n let allSupported: boolean;\n\n if (isListResult(data)) {\n // Explicit contract: use ListResult fields directly\n items = data.items;\n meta = data.meta;\n allSupported = data.supportsAll ?? false;\n } else {\n // Legacy path: auto-detect from raw data\n items = unwrapItems(data);\n meta = paginationMeta ?? extractPaginationMeta(data);\n allSupported = supportsAll ?? false;\n }\n\n const warning = formatPaginationWarning(meta, allSupported);\n if (warning) {\n process.stderr.write(warning + '\\n');\n }\n\n switch (opts.outputFormat) {\n case 'json':\n process.stdout.write(JSON.stringify(items, null, 2) + '\\n');\n break;\n case 'jsonl':\n for (const item of items) {\n process.stdout.write(JSON.stringify(item) + '\\n');\n }\n break;\n case 'table':\n if (columns) {\n printTable(items, columns);\n } else {\n process.stdout.write(JSON.stringify(items, null, 2) + '\\n');\n }\n break;\n }\n}\n\n/** Write a single object to stdout in the requested format */\nexport function outputSingle<T>(data: T, opts: OutputOptions, columns?: TableColumn<T>[]): void {\n switch (opts.outputFormat) {\n case 'json':\n process.stdout.write(JSON.stringify(data, null, 2) + '\\n');\n break;\n case 'jsonl':\n process.stdout.write(JSON.stringify(data) + '\\n');\n break;\n case 'table':\n if (columns) {\n printTable([data], columns);\n } else {\n process.stdout.write(JSON.stringify(data, null, 2) + '\\n');\n }\n break;\n }\n}\n\n/** Common column factory helpers for domain files */\nexport const COL = {\n id: (): TableColumn<any> => ({ header: 'ID', getValue: (item) => String(item.id ?? '') }),\n uuid: (): TableColumn<any> => ({ header: 'UUID', getValue: (item) => item.uuid ?? '' }),\n name: (): TableColumn<any> => ({ header: 'NAME', getValue: (item) => item.name ?? '' }),\n status: (): TableColumn<any> => ({ header: 'STATUS', getValue: (item) => item.status ?? '' }),\n created: (): TableColumn<any> => ({\n header: 'CREATED',\n getValue: (item) => item.created_at ?? '',\n }),\n updated: (): TableColumn<any> => ({\n header: 'UPDATED',\n getValue: (item) => item.updated_at ?? '',\n }),\n description: (): TableColumn<any> => ({\n header: 'DESCRIPTION',\n getValue: (item) => item.description ?? '',\n }),\n enabled: (): TableColumn<any> => ({\n header: 'ENABLED',\n getValue: (item) => String(item.enabled ?? ''),\n }),\n};\n\n/** Write a status/progress message to stderr (never pollutes stdout) */\nexport function stderr(msg: string): void {\n process.stderr.write(msg + '\\n');\n}\n","/**\n * CLI handler for organization-level authentication challenges.\n *\n * When a workspace API call returns a 401 with WWW-Authenticate: Bearer realm=\"org\",\n * the SDK calls this handler. The CLI attempts to satisfy the challenge by:\n *\n * 1. POSTing to /api/v2/o/{org_uuid}/join with the existing bearer token.\n * This works for organizations that allow internal (non-SSO) authentication.\n * The response Set-Cookie header contains the org JWE token.\n *\n * 2. If the org requires SSO, falls back to opening the auth URL in the browser\n * and prompting the user to complete authentication manually, then errors.\n */\n\nimport { execFile } from 'child_process';\nimport type { ApiClient } from '@gravity-rail/client';\nimport type { OrgAuthInfo } from '@gravity-rail/sdk';\nimport { stderr } from './output';\n\nconst ORG_AUTH_TIMEOUT_MS = 5 * 60 * 1000;\n\n/** Parse an org token value from Set-Cookie header strings. */\nfunction extractOrgTokenFromSetCookies(\n setCookieValues: string[],\n preferredCookieName: string\n): string | undefined {\n let fallback: string | undefined;\n\n for (const value of setCookieValues) {\n const nameValue = value.split(';')[0]?.trim() ?? '';\n const eqIdx = nameValue.indexOf('=');\n if (eqIdx === -1) continue;\n\n const name = nameValue.slice(0, eqIdx).trim();\n const tokenValue = nameValue.slice(eqIdx + 1).trim() || undefined;\n if (!tokenValue) continue;\n\n if (name === preferredCookieName) return tokenValue;\n // Accept any orgToken... or orgSession... cookie as a fallback\n if (!fallback && (name.startsWith('orgToken') || name.startsWith('orgSession'))) {\n fallback = tokenValue;\n }\n }\n\n return fallback;\n}\n\n/**\n * Attempt to satisfy an org auth challenge via the direct join endpoint.\n * Returns the org token string on success, null when SSO is required.\n * Throws on unexpected network / server errors.\n */\nasync function tryDirectJoin(\n apiUrl: string,\n accessToken: string,\n orgAuthInfo: OrgAuthInfo\n): Promise<string | null> {\n const response = await fetch(`${apiUrl}/api/v2/o/${orgAuthInfo.orgUuid}/join`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n Authorization: `Bearer ${accessToken}`,\n },\n body: '{}',\n });\n\n if (response.status === 400) {\n // Org requires SSO — direct join is not permitted for this account\n return null;\n }\n\n if (!response.ok) {\n // Don't include the response body — the backend currently returns safe\n // JSON, but a future change could put PHI or other sensitive data there.\n // Status code is sufficient to disambiguate the failure mode.\n throw new Error(`Org join failed (HTTP ${response.status})`);\n }\n\n // Read Set-Cookie headers to extract the org token value.\n // Node ≥18 exposes getSetCookie() on Headers; fall back to get() for older runtimes.\n const rawHeaders = response.headers as Headers & {\n getSetCookie?: () => string[];\n };\n const setCookies: string[] =\n rawHeaders.getSetCookie?.() ??\n (rawHeaders.get('set-cookie') ? [rawHeaders.get('set-cookie')!] : []);\n\n if (setCookies.length === 0) {\n throw new Error('Org join succeeded but no Set-Cookie header returned');\n }\n\n const orgToken = extractOrgTokenFromSetCookies(setCookies, orgAuthInfo.cookieName);\n if (!orgToken) {\n throw new Error('Org join succeeded but org token cookie not found in Set-Cookie');\n }\n\n return orgToken;\n}\n\n/**\n * Validate that an auth URL is safe to hand to the OS URL opener.\n *\n * `open` / `xdg-open` / `cmd.exe start` will follow any URI scheme the OS\n * registers — including `file://`, `javascript:`, and custom app handlers —\n * so a compromised/MITMed server returning an attacker-controlled `authUrl`\n * could trigger arbitrary URI execution. Restrict to http(s) and require\n * the same parent domain as the configured API host (e.g. SSO login on\n * `app.gravityrail.com` is allowed when the API is `api.gravityrail.com`,\n * but `attacker.example` against `api.gravityrail.com` is rejected).\n *\n * \"Same parent domain\" is a last-2-labels match. This is a heuristic — it\n * does not consult the Public Suffix List, so `foo.co.uk` and `bar.co.uk`\n * would falsely match — but Gravity Rail's auth hosts do not live under\n * those ccTLDs, and the alternative (vendoring `psl`) is overkill for a CLI\n * gating check. The configured `apiUrl` is itself a trust anchor controlled\n * by the user; the threat is a hostile *response* from that API (or a MITM)\n * pivoting the URL opener.\n */\nfunction isAllowedAuthUrl(url: string, apiUrl: string): boolean {\n try {\n const parsed = new URL(url);\n const api = new URL(apiUrl);\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') return false;\n if (parsed.hostname === api.hostname) return true;\n\n const lastTwo = (host: string): string => {\n const parts = host.split('.').filter(Boolean);\n return parts.length >= 2 ? parts.slice(-2).join('.') : host;\n };\n // Reject IP-literal hosts from the parent-domain heuristic — last-2\n // labels of \"1.2.3.4\" would naively match \"3.4\" and admit anything.\n const isIp = /^[0-9.]+$|^\\[.*\\]$/.test(parsed.hostname);\n if (isIp) return false;\n\n return lastTwo(parsed.hostname) === lastTwo(api.hostname);\n } catch {\n return false;\n }\n}\n\n/** Open a URL in the system browser (cross-platform). */\nfunction openBrowser(url: string): void {\n let command: string;\n let args: string[];\n\n if (process.platform === 'darwin') {\n command = 'open';\n args = [url];\n } else if (process.platform === 'win32') {\n command = 'cmd.exe';\n args = ['/c', 'start', '', url];\n } else {\n command = 'xdg-open';\n args = [url];\n }\n\n execFile(command, args, (_err) => {\n // Failure is non-fatal — the URL is printed to stderr so the user can open it manually.\n });\n}\n\n/**\n * Register a CLI org-auth handler on the given client.\n *\n * The handler satisfies org-auth 401 challenges without relying on browser\n * cookies (which are not available in Node.js):\n *\n * - Non-SSO orgs: calls the join endpoint directly and reads the org token\n * from the Set-Cookie response header, then sets it via client.setOrgToken().\n * The SDK retries the original request with X-Org-Token on the next call.\n *\n * - SSO orgs: opens the browser at the authUrl and returns a timeout error\n * after ORG_AUTH_TIMEOUT_MS, because the SSO token is only ever set as a\n * browser cookie that the CLI cannot intercept.\n */\nexport function registerOrgAuthHandler(\n apiClient: ApiClient,\n apiUrl: string,\n accessToken: string\n): void {\n apiClient.setOrgAuthHandler(async (orgAuthInfo: OrgAuthInfo): Promise<void> => {\n // Fast path: non-SSO org — join directly and extract the token.\n try {\n const orgToken = await tryDirectJoin(apiUrl, accessToken, orgAuthInfo);\n if (orgToken !== null) {\n // Set the token on the client so the SDK's fallback check (this.orgToken)\n // picks it up after the handler resolves (Node.js has no document.cookie).\n // Pass the org_uuid so the SDK can detect a stale token if the next\n // request targets a different org.\n apiClient.setOrgToken(orgToken, orgAuthInfo.orgUuid);\n return;\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n stderr(`Warning: org direct-join failed (${msg}); trying browser auth`);\n }\n\n // Slow path: SSO org — the browser must complete the flow. Reject the\n // auth URL up-front if it doesn't match the configured API origin so a\n // hostile server can't pivot the OS URL opener to a `javascript:` /\n // `file://` / custom-scheme handler.\n if (!isAllowedAuthUrl(orgAuthInfo.authUrl, apiUrl)) {\n throw new Error(\n `Refusing to open organization auth URL: scheme/host does not match the configured API host. ` +\n `Re-run with the expected --api-url, or contact support.`\n );\n }\n\n stderr(`\\nThis workspace requires organization SSO authentication.`);\n stderr(`Opening browser to complete authentication...`);\n stderr(` ${orgAuthInfo.authUrl}\\n`);\n stderr(`If the browser does not open, visit the URL above manually.`);\n stderr(\n `After signing in, re-run the command — the CLI cannot receive the SSO token directly.`\n );\n openBrowser(orgAuthInfo.authUrl);\n\n // Reject after timeout so the CLI doesn't hang indefinitely.\n await new Promise<void>((_, reject) => {\n const t = setTimeout(\n () =>\n reject(\n new Error(\n 'Organization authentication timed out.\\n' +\n 'Please complete authentication in the browser, then re-run the command.'\n )\n ),\n ORG_AUTH_TIMEOUT_MS\n );\n // Unref so the timeout doesn't keep the Node.js event loop alive\n // if the parent process is otherwise done.\n t.unref?.();\n });\n });\n}\n","import { ApiClient as GravityRailClient } from '@gravity-rail/client';\nimport {\n CredentialsManager,\n getEnvironmentConfig,\n refreshAccessToken,\n type CLICredentials,\n type EnvironmentConfig,\n} from '../cli-utils';\nimport { homedir } from 'os';\nimport { detectOutputFormat, type OutputFormat } from './output';\nimport { loadDevCloudRealmFile, loadRealmCredentials } from './realm';\nimport { AuthRequiredError } from './errors';\nimport { registerOrgAuthHandler } from './org-auth';\n\n/** Build an authenticated API client with the CLI org-auth handler registered. */\nfunction makeApiClient(accessToken: string, apiUrl: string): GravityRailClient {\n const apiClient = new GravityRailClient(accessToken, apiUrl);\n registerOrgAuthHandler(apiClient, apiUrl, accessToken);\n return apiClient;\n}\n\n/** Try to silently refresh an expired access token. Returns an AuthenticatedContext or null. */\nasync function tryTokenRefresh(\n ctx: CommandContext,\n creds: CLICredentials\n): Promise<AuthenticatedContext | null> {\n if (!creds.refreshToken) return null;\n const refreshed = await refreshAccessToken(\n ctx.envConfig,\n creds,\n ctx.credentialsManager,\n ctx.env\n );\n if (!refreshed?.accessToken) return null;\n const apiClient = makeApiClient(refreshed.accessToken, ctx.envConfig.apiUrl);\n return { ...ctx, accessToken: refreshed.accessToken, apiClient };\n}\n\nexport interface GlobalOptions {\n env: string;\n realm?: string;\n /** Override API base URL (also: GRAVITY_RAIL_API_URL env var). */\n apiUrl?: string;\n outputFormat?: string;\n verbose?: boolean;\n allowWrite?: boolean;\n}\n\nexport interface PublicGlobalOptions {\n env?: string;\n apiUrl?: string;\n frontendUrl?: string;\n outputFormat?: string;\n verbose?: boolean;\n allowWrite?: boolean;\n}\n\nexport interface CommandContext {\n env: string;\n envConfig: EnvironmentConfig;\n outputFormat: OutputFormat;\n verbose: boolean;\n allowWrite: boolean;\n credentialsManager: CredentialsManager;\n}\n\nexport interface AuthenticatedContext extends CommandContext {\n accessToken: string;\n apiClient: GravityRailClient;\n realmWorkspace?: string;\n}\n\n/** Create a base command context (no auth required) */\nexport function createContext(opts: GlobalOptions): CommandContext {\n const baseConfig = getEnvironmentConfig(opts.env);\n const apiUrl = opts.apiUrl || process.env.GRAVITY_RAIL_API_URL || baseConfig.apiUrl;\n const envConfig = apiUrl === baseConfig.apiUrl ? baseConfig : { ...baseConfig, apiUrl };\n const credentialsManager = new CredentialsManager(homedir(), envConfig.apiUrl);\n return {\n env: opts.env,\n envConfig,\n outputFormat: detectOutputFormat(opts.outputFormat),\n verbose: opts.verbose ?? false,\n allowWrite: opts.allowWrite ?? false,\n credentialsManager,\n };\n}\n\n/** Create an authenticated command context. Tries realm, env var, then cached token. Never auto-triggers OAuth. */\nexport async function createAuthenticatedContext(\n opts: GlobalOptions\n): Promise<AuthenticatedContext> {\n // eslint-disable-next-line @eslint-react/naming-convention-context-name -- CLI handler context, not React\n const ctx = createContext(opts);\n\n // Try --realm first (dev-only shortcut using dev-realms.json)\n if (opts.realm) {\n let devRealmsPath: string | undefined;\n if (opts.env.startsWith('dev-cloud:')) {\n const namespace = opts.env.slice('dev-cloud:'.length);\n devRealmsPath = loadDevCloudRealmFile(namespace);\n }\n const { token, workspaceUuid } = loadRealmCredentials(opts.realm, devRealmsPath);\n const apiClient = makeApiClient(token, ctx.envConfig.apiUrl);\n return { ...ctx, accessToken: token, apiClient, realmWorkspace: workspaceUuid };\n }\n\n // Try GRAVITY_RAIL_API_KEY first\n const apiKey = process.env.GRAVITY_RAIL_API_KEY;\n if (apiKey) {\n const apiClient = makeApiClient(apiKey, ctx.envConfig.apiUrl);\n return { ...ctx, accessToken: apiKey, apiClient };\n }\n\n // Try cached credentials (from `gr login`)\n const creds = ctx.credentialsManager.load(ctx.env);\n if (creds?.accessToken) {\n const buffer = 5 * 60 * 1000;\n const notExpired =\n !creds.expiresAt || new Date(creds.expiresAt) > new Date(Date.now() + buffer);\n if (notExpired) {\n const apiClient = makeApiClient(creds.accessToken, ctx.envConfig.apiUrl);\n return { ...ctx, accessToken: creds.accessToken, apiClient };\n }\n\n // Token expired — try refresh\n const refreshed = await tryTokenRefresh(ctx, creds);\n if (refreshed) return refreshed;\n }\n\n throw new AuthRequiredError();\n}\n\n/**\n * Narrow a handler context to `AuthenticatedContext`.\n *\n * Handler `ctx` is typed as `AuthenticatedContext | CommandContext` so that\n * `requiresAuth: false` handlers can also share the type. At runtime, every\n * handler that did not opt out of auth will receive an `AuthenticatedContext`,\n * but TypeScript cannot verify this — call this helper before accessing\n * `apiClient` / `accessToken`.\n *\n * Throws if called from a handler that did not declare `requiresAuth`.\n */\nexport function requireAuth(ctx: AuthenticatedContext | CommandContext): AuthenticatedContext {\n if (!('apiClient' in ctx)) {\n throw new Error('Command handler accessed apiClient without declaring requiresAuth');\n }\n return ctx;\n}\n\n/** Create a base command context for the public CLI (defaults to prod) */\nexport function createPublicContext(opts: PublicGlobalOptions): CommandContext {\n const env = opts.env ?? 'prod';\n const envConfig = opts.apiUrl\n ? {\n apiUrl: opts.apiUrl,\n frontendUrl:\n opts.frontendUrl ||\n process.env.GRAVITY_RAIL_FRONTEND_URL ||\n 'https://app.gravityrail.com',\n }\n : getEnvironmentConfig(env);\n const credentialsManager = new CredentialsManager(homedir(), envConfig.apiUrl);\n return {\n env,\n envConfig,\n outputFormat: detectOutputFormat(opts.outputFormat),\n verbose: opts.verbose ?? false,\n allowWrite: opts.allowWrite ?? false,\n credentialsManager,\n };\n}\n\n/** Create an authenticated context for the public CLI. Tries env var, then cached token. */\nexport async function createPublicAuthenticatedContext(\n opts: PublicGlobalOptions\n): Promise<AuthenticatedContext> {\n const ctx = createPublicContext(opts);\n\n const apiKey = process.env.GRAVITY_RAIL_API_KEY;\n if (apiKey) {\n const apiClient = makeApiClient(apiKey, ctx.envConfig.apiUrl);\n return { ...ctx, accessToken: apiKey, apiClient };\n }\n\n const creds = ctx.credentialsManager.load(ctx.env);\n if (creds?.accessToken) {\n const buffer = 5 * 60 * 1000;\n const notExpired =\n !creds.expiresAt || new Date(creds.expiresAt) > new Date(Date.now() + buffer);\n if (notExpired) {\n const apiClient = makeApiClient(creds.accessToken, ctx.envConfig.apiUrl);\n return { ...ctx, accessToken: creds.accessToken, apiClient };\n }\n\n // Token expired — try refresh\n const refreshed = await tryTokenRefresh(ctx, creds);\n if (refreshed) return refreshed;\n }\n\n throw new AuthRequiredError();\n}\n","/**\n * Concierge API client — direct HTTP calls to the global concierge endpoints.\n *\n * The concierge is account-level (no workspace), so these bypass the ApiClient\n * which is workspace-oriented.\n */\n\nimport type { AuthenticatedContext } from './context';\n\nexport interface ConciergeChat {\n id: number;\n uuid: string;\n chatType: string;\n title: string | null;\n threadId: string;\n createdAt: string;\n updatedAt: string;\n}\n\nexport interface ConciergeMessage {\n id: string;\n role: string;\n content: string;\n createdAt: string | null;\n toolCalls: any[] | null;\n toolCallId: string | null;\n}\n\nfunction baseUrl(ctx: AuthenticatedContext): string {\n return `${ctx.envConfig.apiUrl}/api/v2/concierge`;\n}\n\nfunction authHeaders(ctx: AuthenticatedContext): Record<string, string> {\n return {\n Authorization: `Bearer ${ctx.accessToken}`,\n 'Content-Type': 'application/json',\n };\n}\n\nfunction toCamelChat(raw: any): ConciergeChat {\n return {\n id: raw.id,\n uuid: raw.uuid,\n chatType: raw.chat_type,\n title: raw.title,\n threadId: raw.thread_id,\n createdAt: raw.created_at,\n updatedAt: raw.updated_at,\n };\n}\n\nfunction toCamelMessage(raw: any): ConciergeMessage {\n return {\n id: raw.id,\n role: raw.role,\n content: raw.content ?? '',\n createdAt: raw.created_at ?? null,\n toolCalls: raw.tool_calls ?? null,\n toolCallId: raw.tool_call_id ?? null,\n };\n}\n\nexport async function listConciergeChats(ctx: AuthenticatedContext): Promise<ConciergeChat[]> {\n const res = await fetch(`${baseUrl(ctx)}/chats`, { headers: authHeaders(ctx) });\n if (!res.ok) throw new Error(`Failed to list concierge chats: ${res.status}`);\n const data = await res.json();\n return (data as any[]).map(toCamelChat);\n}\n\nexport async function createConciergeChat(\n ctx: AuthenticatedContext,\n title?: string\n): Promise<ConciergeChat> {\n const res = await fetch(`${baseUrl(ctx)}/chats`, {\n method: 'POST',\n headers: authHeaders(ctx),\n body: JSON.stringify({ title: title ?? null }),\n });\n if (!res.ok) throw new Error(`Failed to create concierge chat: ${res.status}`);\n return toCamelChat(await res.json());\n}\n\nexport async function getConciergeChat(\n ctx: AuthenticatedContext,\n chatId: number\n): Promise<ConciergeChat> {\n const res = await fetch(`${baseUrl(ctx)}/chats/${chatId}`, { headers: authHeaders(ctx) });\n if (!res.ok) throw new Error(`Failed to get concierge chat ${chatId}: ${res.status}`);\n return toCamelChat(await res.json());\n}\n\nexport interface ConciergeCallResult {\n callSid: string;\n startedAt: string;\n}\n\nexport interface ConciergeSmsResult {\n messageSid: string;\n conversationId: string;\n}\n\nexport async function originateConciergeCall(\n ctx: AuthenticatedContext,\n kind = 'concierge_setup'\n): Promise<ConciergeCallResult> {\n const res = await fetch(`${baseUrl(ctx)}/calls`, {\n method: 'POST',\n headers: authHeaders(ctx),\n body: JSON.stringify({ kind }),\n });\n if (res.status === 412) {\n throw new Error('Your account phone is not verified. Run `gr account verify-phone` first.');\n }\n if (!res.ok) {\n const detail = await res.text();\n throw new Error(`Failed to start concierge call: ${res.status} ${detail}`);\n }\n return (await res.json()) as ConciergeCallResult;\n}\n\nexport async function originateConciergeSms(\n ctx: AuthenticatedContext,\n kind = 'concierge_setup'\n): Promise<ConciergeSmsResult> {\n const res = await fetch(`${baseUrl(ctx)}/sms`, {\n method: 'POST',\n headers: authHeaders(ctx),\n body: JSON.stringify({ kind }),\n });\n if (res.status === 412) {\n throw new Error('Your account phone is not verified. Run `gr account verify-phone` first.');\n }\n if (!res.ok) {\n const detail = await res.text();\n throw new Error(`Failed to start concierge SMS: ${res.status} ${detail}`);\n }\n return (await res.json()) as ConciergeSmsResult;\n}\n\nexport async function startAccountPhoneVerify(\n ctx: AuthenticatedContext,\n phone: string\n): Promise<void> {\n const res = await fetch(`${ctx.envConfig.apiUrl}/api/v2/account/phone/verify/start`, {\n method: 'POST',\n headers: authHeaders(ctx),\n body: JSON.stringify({ phone }),\n });\n if (!res.ok) {\n const detail = await res.text();\n throw new Error(`Failed to send verification code: ${res.status} ${detail}`);\n }\n}\n\nexport async function confirmAccountPhoneVerify(\n ctx: AuthenticatedContext,\n code: string\n): Promise<void> {\n const res = await fetch(`${ctx.envConfig.apiUrl}/api/v2/account/phone/verify/confirm`, {\n method: 'POST',\n headers: authHeaders(ctx),\n body: JSON.stringify({ code }),\n });\n if (!res.ok) {\n const detail = await res.text();\n throw new Error(`Failed to confirm verification code: ${res.status} ${detail}`);\n }\n}\n\nexport async function getConciergeChatMessages(\n ctx: AuthenticatedContext,\n chatId: number\n): Promise<ConciergeMessage[]> {\n const res = await fetch(`${baseUrl(ctx)}/chats/${chatId}/messages`, {\n headers: authHeaders(ctx),\n });\n if (!res.ok)\n throw new Error(`Failed to get concierge messages for chat ${chatId}: ${res.status}`);\n const data = await res.json();\n return (data as any[]).map(toCamelMessage);\n}\n"]}
|