@everfur/sdk 0.4.0 → 0.5.1

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.
Files changed (177) hide show
  1. package/CHANGELOG.md +220 -0
  2. package/README.md +9 -8
  3. package/dist/{Chat-BZZ-Py5l.d.ts → Chat-Rzplrf5M.d.ts} +17 -3
  4. package/dist/{Chat-Dq4fffIO.d.cts → Chat-ypo6miKm.d.cts} +17 -3
  5. package/dist/{DepthViews-BG3E25MD.d.ts → DepthViews-CeTfPUBX.d.ts} +1 -1
  6. package/dist/{DepthViews-B_hIypI6.d.cts → DepthViews-ClykXOJj.d.cts} +1 -1
  7. package/dist/{DepthViews-CL75jyRA.d.cts → DepthViews-Cui3oonj.d.cts} +1 -1
  8. package/dist/{DepthViews-CkYri51q.d.ts → DepthViews-baYLMNQ-.d.ts} +1 -1
  9. package/dist/{ErrorPolicyPort-CwbfmxzJ.d.ts → ErrorPolicyPort-D22LUVrK.d.ts} +1 -1
  10. package/dist/{ErrorPolicyPort-CNf4uQZP.d.cts → ErrorPolicyPort-D6CybiqJ.d.cts} +1 -1
  11. package/dist/{EverfurResult-DN9pL2Ab.d.cts → EverfurError-DmELDpXp.d.cts} +1 -67
  12. package/dist/{EverfurResult-DN9pL2Ab.d.ts → EverfurError-DmELDpXp.d.ts} +1 -67
  13. package/dist/EverfurResult-SGvHKsCB.d.ts +69 -0
  14. package/dist/EverfurResult-ZtH-YV1h.d.cts +69 -0
  15. package/dist/animations/index.cjs +1 -1
  16. package/dist/animations/index.d.cts +6 -5
  17. package/dist/animations/index.d.ts +6 -5
  18. package/dist/animations/index.js +1 -1
  19. package/dist/{attachments-D_SECjr1.d.cts → attachments-CwsR-bPN.d.cts} +7 -6
  20. package/dist/{attachments-BrUWQYNK.d.ts → attachments-CzZ7in24.d.ts} +7 -6
  21. package/dist/{attachments-DpldrvIW.d.ts → attachments-D3HCBmOE.d.ts} +3 -3
  22. package/dist/{attachments-BorG422I.d.cts → attachments-Nk73Lll8.d.cts} +3 -3
  23. package/dist/{bookingCopy-SREvkG19.d.cts → bookingCopy-Dv8rKqyV.d.cts} +417 -14
  24. package/dist/{bookingCopy-CqtDYvCR.d.ts → bookingCopy-SDkXaxDf.d.ts} +417 -14
  25. package/dist/branding-Xb_wL8N1.d.cts +212 -0
  26. package/dist/branding-xpQ056sM.d.ts +212 -0
  27. package/dist/callCopy-rDH9JTFo.d.cts +45 -0
  28. package/dist/callCopy-rDH9JTFo.d.ts +45 -0
  29. package/dist/callRoom-7wrE3RP2.d.ts +62 -0
  30. package/dist/callRoom-B_EqaUzx.d.cts +62 -0
  31. package/dist/{casesRepository-v6QczS9N.d.ts → casesRepository-BTAecTnF.d.ts} +14 -2
  32. package/dist/{casesRepository-DwtZVsbj.d.cts → casesRepository-aryld7fJ.d.cts} +14 -2
  33. package/dist/chat/index.cjs +1 -1
  34. package/dist/chat/index.d.cts +12 -11
  35. package/dist/chat/index.d.ts +12 -11
  36. package/dist/chat/index.js +1 -1
  37. package/dist/client/index.cjs +5 -5
  38. package/dist/client/index.d.cts +14 -12
  39. package/dist/client/index.d.ts +14 -12
  40. package/dist/client/index.js +5 -5
  41. package/dist/{config-C7eb_IMD.d.ts → config-6qS7Sohy.d.cts} +3 -2
  42. package/dist/{config--Wu1Umhd.d.cts → config-X6BtwDwQ.d.ts} +3 -2
  43. package/dist/consent/index.cjs +1 -1
  44. package/dist/consent/index.d.cts +9 -8
  45. package/dist/consent/index.d.ts +9 -8
  46. package/dist/consent/index.js +1 -1
  47. package/dist/{context-CahAEha8.d.ts → context-7f3Nb_xE.d.ts} +9 -8
  48. package/dist/{context-CL3lyuy1.d.cts → context-CkqPM4Ml.d.cts} +9 -8
  49. package/dist/{copy-UeUJVk8X.d.cts → copy-Bd__Pw5s.d.cts} +5 -4
  50. package/dist/{copy-DdVFDL01.d.ts → copy-NgKgOOET.d.ts} +5 -4
  51. package/dist/core/index.cjs +9 -9
  52. package/dist/core/index.d.cts +19 -17
  53. package/dist/core/index.d.ts +19 -17
  54. package/dist/core/index.js +9 -9
  55. package/dist/{depth-DvPwPuT_.d.ts → depth-CYPH92jE.d.ts} +6 -5
  56. package/dist/{depth-D5HwcvKC.d.cts → depth-CyjaJJ6V.d.cts} +6 -5
  57. package/dist/{entitlementRepository-B7egEdW6.d.ts → entitlementRepository-DdeFuEKp.d.ts} +4 -4
  58. package/dist/{entitlementRepository-BpJ7tiwl.d.cts → entitlementRepository-Dl1qRLcJ.d.cts} +4 -4
  59. package/dist/{identity-C2-08BZW.d.cts → identity-DjqhDm5Z.d.cts} +2 -2
  60. package/dist/{identity-CEi9GRFZ.d.ts → identity-Dy_L7Yq4.d.ts} +2 -2
  61. package/dist/index.cjs +6 -6
  62. package/dist/index.d.cts +19 -17
  63. package/dist/index.d.ts +19 -17
  64. package/dist/index.js +6 -6
  65. package/dist/{models-D2EUxPZY.d.cts → models-Bn2z0NNo.d.cts} +1 -1
  66. package/dist/{models-B-Uh2LTf.d.ts → models-DSqA5Ahs.d.ts} +1 -1
  67. package/dist/notifications/index.cjs +2 -2
  68. package/dist/notifications/index.d.cts +5 -4
  69. package/dist/notifications/index.d.ts +5 -4
  70. package/dist/notifications/index.js +2 -2
  71. package/dist/{pets-JVCXgRgR.d.cts → pets-BSG2qbr_.d.cts} +2 -2
  72. package/dist/{pets-DJv2sj2H.d.ts → pets-D7cZutrX.d.ts} +2 -2
  73. package/dist/{petsRepository-B_gKbAzJ.d.cts → petsRepository-D1bnxDZg.d.cts} +2 -2
  74. package/dist/{petsRepository-Bk6GDwLs.d.ts → petsRepository-DhsX3GLw.d.ts} +2 -2
  75. package/dist/photo/index.cjs +1 -1
  76. package/dist/photo/index.d.cts +3 -2
  77. package/dist/photo/index.d.ts +3 -2
  78. package/dist/photo/index.js +1 -1
  79. package/dist/{ports-D7YW8qz9.d.ts → ports-C0m1G1fS.d.ts} +13 -6
  80. package/dist/{ports-BY2ph0_y.d.cts → ports-DNXyyzZF.d.cts} +13 -6
  81. package/dist/records/depth/index.cjs +2 -2
  82. package/dist/records/depth/index.d.cts +11 -10
  83. package/dist/records/depth/index.d.ts +11 -10
  84. package/dist/records/depth/index.js +2 -2
  85. package/dist/records/index.cjs +3 -3
  86. package/dist/records/index.d.cts +25 -14
  87. package/dist/records/index.d.ts +25 -14
  88. package/dist/records/index.js +3 -3
  89. package/dist/{requestFunnel-BjDpqqvm.d.cts → requestFunnel-Bqc1inM9.d.cts} +5 -4
  90. package/dist/{requestFunnel-DFMGcluw.d.ts → requestFunnel-FvE5yLDD.d.ts} +5 -4
  91. package/dist/{runtimeTypes-w5KqBMcs.d.ts → runtimeTypes-C0yPBz89.d.ts} +7 -7
  92. package/dist/{runtimeTypes-gZEJu-da.d.cts → runtimeTypes-RN-VXTFV.d.cts} +7 -7
  93. package/dist/server/events/index.cjs +1 -1
  94. package/dist/server/events/index.d.cts +4 -3
  95. package/dist/server/events/index.d.ts +4 -3
  96. package/dist/server/events/index.js +1 -1
  97. package/dist/server/index.cjs +1 -1
  98. package/dist/server/index.d.cts +5 -4
  99. package/dist/server/index.d.ts +5 -4
  100. package/dist/server/index.js +1 -1
  101. package/dist/televet/booking/index.cjs +1 -1
  102. package/dist/televet/booking/index.d.cts +310 -32
  103. package/dist/televet/booking/index.d.ts +310 -32
  104. package/dist/televet/booking/index.js +1 -1
  105. package/dist/televet/call/index.cjs +1 -1
  106. package/dist/televet/call/index.d.cts +25 -5
  107. package/dist/televet/call/index.d.ts +25 -5
  108. package/dist/televet/call/index.js +1 -1
  109. package/dist/televet/index.cjs +1 -1
  110. package/dist/televet/index.d.cts +41 -71
  111. package/dist/televet/index.d.ts +41 -71
  112. package/dist/televet/index.js +1 -1
  113. package/dist/televetGlobal-CEk0_cW9.d.cts +34 -0
  114. package/dist/televetGlobal-Cs9Wbqsy.d.ts +34 -0
  115. package/dist/testing/index.cjs +3 -3
  116. package/dist/testing/index.d.cts +3 -2
  117. package/dist/testing/index.d.ts +3 -2
  118. package/dist/testing/index.js +3 -3
  119. package/dist/testing/rn/index.cjs +1 -1
  120. package/dist/testing/rn/index.d.cts +13 -11
  121. package/dist/testing/rn/index.d.ts +13 -11
  122. package/dist/testing/rn/index.js +1 -1
  123. package/dist/testing/web/index.cjs +1 -1
  124. package/dist/testing/web/index.d.cts +14 -13
  125. package/dist/testing/web/index.d.ts +14 -13
  126. package/dist/testing/web/index.js +1 -1
  127. package/dist/{timelineRows-C15jxFFH.d.ts → timelineRows-D4U6A8zE.d.ts} +1 -1
  128. package/dist/{timelineRows-odO8g9r2.d.cts → timelineRows-DAB5dpjF.d.cts} +1 -1
  129. package/dist/{branding-CsRdeNwK.d.cts → tokens-CIngRkvt.d.cts} +7 -211
  130. package/dist/{branding-CsRdeNwK.d.ts → tokens-CIngRkvt.d.ts} +7 -211
  131. package/dist/{typeStyle-DmoyacDG.d.ts → typeStyle-DHJzDaUo.d.cts} +2 -1
  132. package/dist/{typeStyle-CKqVYD6L.d.cts → typeStyle-YPS_MXeI.d.ts} +2 -1
  133. package/dist/{useRecordsDepth-crhBllQK.d.ts → useRecordsDepth--ObtMyjH.d.ts} +24 -5
  134. package/dist/{useRecordsDepth-C6rjEaLn.d.cts → useRecordsDepth-B35y8bV-.d.cts} +24 -5
  135. package/dist/{useVetVisit-CjmMa896.d.ts → useVetVisit-BsjoDO-n.d.ts} +21 -6
  136. package/dist/{useVetVisit-Bc84hWUU.d.cts → useVetVisit-Ds8f1peV.d.cts} +21 -6
  137. package/dist/video/index.cjs +1 -1
  138. package/dist/video/index.d.cts +3 -2
  139. package/dist/video/index.d.ts +3 -2
  140. package/dist/video/index.js +1 -1
  141. package/dist/{view-DyitEO0m.d.cts → view-B-Toym_j.d.cts} +5 -4
  142. package/dist/{view-Bxwxp4xD.d.ts → view-D9JqNQai.d.ts} +5 -4
  143. package/dist/web/consent/index.cjs +1 -1
  144. package/dist/web/consent/index.d.cts +9 -8
  145. package/dist/web/consent/index.d.ts +9 -8
  146. package/dist/web/consent/index.js +1 -1
  147. package/dist/web/index.cjs +10 -10
  148. package/dist/web/index.d.cts +42 -19
  149. package/dist/web/index.d.ts +42 -19
  150. package/dist/web/index.js +10 -10
  151. package/dist/web/notifications/index.cjs +2 -2
  152. package/dist/web/notifications/index.d.cts +7 -6
  153. package/dist/web/notifications/index.d.ts +7 -6
  154. package/dist/web/notifications/index.js +2 -2
  155. package/dist/web/records/depth/index.cjs +2 -2
  156. package/dist/web/records/depth/index.d.cts +11 -10
  157. package/dist/web/records/depth/index.d.ts +11 -10
  158. package/dist/web/records/depth/index.js +2 -2
  159. package/dist/web/records/index.cjs +3 -3
  160. package/dist/web/records/index.d.cts +53 -35
  161. package/dist/web/records/index.d.ts +53 -35
  162. package/dist/web/records/index.js +3 -3
  163. package/dist/web/televet/booking/index.cjs +2 -1
  164. package/dist/web/televet/booking/index.d.cts +458 -33
  165. package/dist/web/televet/booking/index.d.ts +458 -33
  166. package/dist/web/televet/booking/index.js +2 -1
  167. package/dist/web/televet/call/index.cjs +1 -1
  168. package/dist/web/televet/call/index.d.cts +3 -1
  169. package/dist/web/televet/call/index.d.ts +3 -1
  170. package/dist/web/televet/call/index.js +1 -1
  171. package/dist/web/televet/index.cjs +1 -1
  172. package/dist/web/televet/index.d.cts +40 -74
  173. package/dist/web/televet/index.d.ts +40 -74
  174. package/dist/web/televet/index.js +1 -1
  175. package/package.json +3 -2
  176. package/dist/callCopy-DoQKG3-L.d.cts +0 -40
  177. package/dist/callCopy-DoQKG3-L.d.ts +0 -40
@@ -1,14 +1,19 @@
1
1
  import { ReactNode, CSSProperties } from 'react';
2
2
  import { P as PetRef } from '../../../ids-B2GAAifq.cjs';
3
3
  export { B as Brand, _ as __brand } from '../../../ids-B2GAAifq.cjs';
4
- import { T as TelevetConsult, a as TelevetBookingStep, b as TelevetBookingController, c as TelevetSlot } from '../../../bookingCopy-SREvkG19.cjs';
5
- export { C as CANCELLATION_POLICY_VERSION_MAX, d as CONSULT_KINDS, e as CONSULT_MINUTES, f as CONSULT_STATUSES, g as ConsultKind, h as ConsultStatus, M as MEDIA_REFS_MAX, R as REASON_TEXT_MAX, i as TELEVET_BOOKING_BASE, j as TELEVET_BOOKING_COPY, k as TELEVET_BOOKING_STEPS, l as TERMINAL_CONSULT_STATUSES, m as TelevetBookingAction, n as TelevetBookingBody, o as TelevetBookingContext, p as TelevetBookingControllerDeps, q as TelevetBookingCopy, r as TelevetBookingDraft, s as TelevetBookingEntitlement, t as TelevetBookingRefusal, u as TelevetBookingState, v as TelevetCancellationPolicy, w as TelevetClinician, x as TelevetRead, y as TelevetSlotHold, z as TelevetStatePolicy, A as TelevetWrite, B as attestation, D as canConfirm, E as createTelevetBookingController, F as currentStep, G as emptyTelevetDraft, H as formatVisitRange, I as formatWhen, J as formatWhenWithDay, K as hasPreviousStep, L as initialTelevetBookingState, N as isHoldExpired, O as isSkipped, P as isTelevetBookingCopyReady, Q as isWellFormedStateCode, S as televetBookingKey, U as televetBookingReducer, V as televetBookingRefusal, W as televetHoldCall, X as televetRescheduleCall, Y as useTelevetBookConsult, Z as useTelevetBookingAvailable, _ as useTelevetBookingController, $ as useTelevetBookingEntitlement, a0 as useTelevetCancellationPolicy, a1 as useTelevetClinicians, a2 as useTelevetHoldSlot, a3 as useTelevetNextSlot, a4 as useTelevetRescheduleConsult, a5 as useTelevetSlots, a6 as useTelevetStatePolicy, a7 as validateBookingBody } from '../../../bookingCopy-SREvkG19.cjs';
6
- export { E as EverfurError, a as EverfurErrorCategory, b as EverfurErrorCode, c as EverfurResult } from '../../../EverfurResult-DN9pL2Ab.cjs';
7
- export { W as WidgetPet } from '../../../petsRepository-B_gKbAzJ.cjs';
8
- import '../../../requestFunnel-BjDpqqvm.cjs';
9
- import '../../../ErrorPolicyPort-CNf4uQZP.cjs';
10
- import '../../../config--Wu1Umhd.cjs';
11
- import '../../../identity-C2-08BZW.cjs';
4
+ import { c as TelevetConsult, d as TelevetBookingStep, e as TelevetBookingController, f as TelevetTriageRead, g as TelevetStateInterestWrite, T as TelevetEmptyRosterCause, a as TelevetStateInterestAction$1, b as TelevetMediaShortfall, i as TelevetSlot } from '../../../bookingCopy-Dv8rKqyV.cjs';
5
+ export { C as CANCELLATION_POLICY_VERSION_MAX, j as CANCEL_REASON_MAX, k as CONSULT_KINDS, l as CONSULT_MINUTES, m as CONSULT_STATUSES, n as ConsultKind, o as ConsultStatus, M as MEDIA_REFS_MAX, N as NO_MEDIA_SHORTFALL, R as REASON_TEXT_MAX, p as TELEVET_BOOKING_BASE, q as TELEVET_BOOKING_COPY, r as TELEVET_BOOKING_STEPS, s as TELEVET_CONSULT_PAGE_LIMIT, t as TELEVET_JOIN_CLOSES_MINUTES_AFTER, u as TELEVET_JOIN_OPENS_MINUTES_BEFORE, v as TERMINAL_CONSULT_STATUSES, w as TelevetBookingAction, x as TelevetBookingBody, y as TelevetBookingContext, z as TelevetBookingControllerDeps, A as TelevetBookingCopy, B as TelevetBookingDraft, D as TelevetBookingEntitlement, E as TelevetBookingFailure, F as TelevetBookingRefusal, G as TelevetBookingState, h as TelevetCancelReceipt, H as TelevetCancellationPolicy, I as TelevetClinician, J as TelevetEarlyTriage, K as TelevetEmptyRosterView, aH as TelevetJoinBlock, aI as TelevetJoinDecision, O as TelevetJoinState, P as TelevetMediaRefusal, Q as TelevetRead, S as TelevetSlotHold, U as TelevetStateInterestReason, V as TelevetStatePolicy, W as TelevetTriageVerdict, X as TelevetWrite, Y as attestation, Z as canConfirm, _ as canManageTelevetVisit, $ as createTelevetBookingController, a0 as currentStep, a1 as emptyTelevetDraft, a2 as formatVisitRange, a3 as formatWhen, a4 as formatWhenWithDay, a5 as hasPreviousStep, a6 as initialTelevetBookingState, a7 as isHoldExpired, a8 as isMediaShortfallEmpty, a9 as isSkipped, aa as isTelevetBookingCopyReady, ab as isWellFormedStateCode, ac as mediaShortfallFromUnsentPicks, ad as splitTelevetVisits, ae as televetBookingKey, af as televetBookingReducer, ag as televetBookingRefusal, ah as televetCancelCall, ai as televetConsultCall, aj as televetEmptyRosterCause, ak as televetEmptyRosterView, al as televetHoldCall, am as televetJoinCall, aJ as televetJoinDecision, an as televetJoinOpensAtMs, ap as televetMediaShortfallLines, aq as televetRescheduleCall, ar as useEarlyTriage, as as useStateInterest, at as useTelevetBookConsult, au as useTelevetBookingAvailable, av as useTelevetBookingController, aw as useTelevetBookingEntitlement, ax as useTelevetCancellationPolicy, ay as useTelevetClinicians, az as useTelevetHoldSlot, aA as useTelevetJoin, aB as useTelevetNextSlot, aC as useTelevetRescheduleConsult, aD as useTelevetSlots, aE as useTelevetStatePolicy, aF as validateBookingBody, aG as withUnsentPicks } from '../../../bookingCopy-Dv8rKqyV.cjs';
6
+ import { V as VetVisitIntent } from '../../../visitIntent-D7_yVp1I.cjs';
7
+ import { E as EverfurTelevetFlowRequest } from '../../../televetGlobal-CEk0_cW9.cjs';
8
+ import { E as EverfurTheme } from '../../../tokens-CIngRkvt.cjs';
9
+ export { b as VetCallCredential, c as VetCallJoinRefusal, d as VetCallLimits, p as parseVetCallCredential, v as vetCallJoinReason, e as vetCallJoinRefusal } from '../../../callRoom-B_EqaUzx.cjs';
10
+ export { E as EverfurError, a as EverfurErrorCategory, b as EverfurErrorCode } from '../../../EverfurError-DmELDpXp.cjs';
11
+ export { E as EverfurResult } from '../../../EverfurResult-ZtH-YV1h.cjs';
12
+ export { W as WidgetPet } from '../../../petsRepository-D1bnxDZg.cjs';
13
+ import '../../../requestFunnel-Bqc1inM9.cjs';
14
+ import '../../../ErrorPolicyPort-D6CybiqJ.cjs';
15
+ import '../../../config-6qS7Sohy.cjs';
16
+ import '../../../identity-DjqhDm5Z.cjs';
12
17
  import '../../../TelemetryPort-BDNr00hu.cjs';
13
18
  import '../../../profile-CSs1wlXT.cjs';
14
19
 
@@ -87,8 +92,13 @@ interface TelevetBookingChromeProps {
87
92
  * Pass 1 only when the flow IS the page in your app. See `src/web/headingLevel.ts`.
88
93
  */
89
94
  readonly headingLevel?: EverfurHeadingLevel | undefined;
95
+ /**
96
+ * Is the emergency warning up in place of Describe? The web funnel counts it as its own step (`Desktop - 18`,
97
+ * fourth of eight), so the bar lights four segments while it is on screen.
98
+ */
99
+ readonly triageOpen?: boolean | undefined;
90
100
  }
91
- declare function TelevetBookingChrome({ step, furthestIndex, title, canGoBack, isDirty, onBack, onClose, onConfirmDiscard, headingLevel: level, }: TelevetBookingChromeProps): ReactNode;
101
+ declare function TelevetBookingChrome({ step, furthestIndex, title, canGoBack, isDirty, onBack, onClose, onConfirmDiscard, headingLevel: level, triageOpen, }: TelevetBookingChromeProps): ReactNode;
92
102
  /**
93
103
  * The back control's spoken label.
94
104
  *
@@ -97,6 +107,23 @@ declare function TelevetBookingChrome({ step, furthestIndex, title, canGoBack, i
97
107
  */
98
108
  declare const BACK_LABEL = "Back";
99
109
 
110
+ /** The pet's own clinic, when the HOST holds it. The RN file's docblock explains why it is a prop. */
111
+ interface TelevetPrimaryVet {
112
+ readonly detail?: string | null;
113
+ /** Places the call. Absent, the row is not a link and takes no click. */
114
+ readonly dial?: (() => void) | undefined;
115
+ }
116
+ interface TelevetEmergencyExitsProps {
117
+ /** The pet's name, for the primary-vet card. Absent, that card is not drawn. */
118
+ readonly petName?: string | null | undefined;
119
+ readonly primaryVet?: TelevetPrimaryVet | null | undefined;
120
+ /** The host's own emergency-vet locator. Absent, that card is not drawn. */
121
+ readonly onFindEmergencyVet?: (() => void) | undefined;
122
+ /** Distinguishes the two places the warning is drawn, for tests. */
123
+ readonly testIDPrefix: string;
124
+ }
125
+ declare function TelevetEmergencyExits({ petName, primaryVet, onFindEmergencyVet, testIDPrefix, }: TelevetEmergencyExitsProps): ReactNode;
126
+
100
127
  /** A picked-but-not-yet-uploaded attachment, in the host's own terms. */
101
128
  interface TelevetIntakeMediaItem {
102
129
  readonly uri: string;
@@ -130,19 +157,6 @@ interface TelevetIntakeMediaProps {
130
157
  }
131
158
  declare function TelevetIntakeMedia({ media, onChange, onPickMedia, listLabel }: TelevetIntakeMediaProps): ReactNode;
132
159
 
133
- /**
134
- * Why a booking did not complete.
135
- *
136
- * `not_entitled` is separated from `failed` because the two need opposite affordances: a transient failure
137
- * invites a retry, and a 402 must not. `unavailable` is separated from both because no retry can succeed.
138
- */
139
- type TelevetBookingFailure = 'taken' | 'expired' | 'failed' | 'not_entitled'
140
- /** The remedy is a DIFFERENT VET, not a different time: re-picking a slot with the same clinician refuses again. */
141
- | 'clinician_unavailable'
142
- /** Per-owner caps. The remedy is WAITING, so this must never render as an invitation to press again. */
143
- | 'rate_limited'
144
- /** The partner booking surface is not served here. The remedy is the hosted visit, not a retry. */
145
- | 'unavailable' | null;
146
160
  /** What the host can tell us about a location it could not resolve, so the right card renders. */
147
161
  type TelevetLocationStatus = 'unknown' | 'blocked' | 'unavailable';
148
162
  interface EverfurTelevetBookingProps {
@@ -167,6 +181,38 @@ interface EverfurTelevetBookingProps {
167
181
  readonly onRequestLocation?: () => void;
168
182
  /** Why the host has no state for us, so the right card renders. */
169
183
  readonly locationStatus?: TelevetLocationStatus;
184
+ /**
185
+ * THE EMERGENCY TRIAGE READ, asked after Describe rather than only at Confirm.
186
+ *
187
+ * ABSENT MEANS NO EARLY QUESTION and the flow behaves as it did before, with the server's own
188
+ * `emergency_ack_required` refusal still waiting at Confirm. That is the consumer's rule for a triage read
189
+ * that could not answer, not a degraded mode.
190
+ *
191
+ * A SEAM BECAUSE `POST /widget/v1/televet/consults/triage` IS NOT SERVED (verified on EFBackend main
192
+ * 2026-09-22 against the partner_televet route decorators). The consumer WEB funnel does ask the question
193
+ * at this position (`continueFromDescribe`, since 2026-09-12) but against a CONSUMER session.
194
+ */
195
+ readonly onTriageReason?: TelevetTriageRead;
196
+ /**
197
+ * THE STATE-INTEREST WRITE: the one way out of "we have no vet licensed in your state".
198
+ *
199
+ * ABSENT MEANS THE CONTROL DOES NOT RENDER. `POST /widget/v1/televet/state-interest` does not exist on the
200
+ * partner plane, and the consumer WEB app already refused to ship this button over an unreachable write
201
+ * for the same reason on its own pre-signup funnel: "the button would 401 for every visitor who pressed
202
+ * it" (everfur-frontend StateUnavailableNotice.tsx:34-41).
203
+ */
204
+ readonly onStateInterest?: TelevetStateInterestWrite;
205
+ /**
206
+ * THE PET'S OWN CLINIC, for the emergency screen's one exit row. The partner wire has no primary-vet
207
+ * concept, so a host that holds its customer's clinic supplies it and gets the consumer's exact row.
208
+ */
209
+ readonly primaryVet?: TelevetPrimaryVet | null;
210
+ /**
211
+ * THE HOST'S OWN EMERGENCY-VET LOCATOR, for the emergency warning's "Find an emergency vet near you" card.
212
+ * The consumer web links its own clinic finder; the SDK has none and navigates the partner's page nowhere,
213
+ * so the card renders only when the host can take the member to one. Absent, the other cards still render.
214
+ */
215
+ readonly onFindEmergencyVet?: () => void;
170
216
  /**
171
217
  * Has the host PROVEN it can host the call in place? Defaults to false.
172
218
  *
@@ -174,10 +220,11 @@ interface EverfurTelevetBookingProps {
174
220
  */
175
221
  readonly canJoinInApp?: boolean;
176
222
  /**
177
- * What to render when the partner booking surface is not served for this tenant.
223
+ * What to render when the partner booking surface is not served for this tenant, or when your televet
224
+ * allowance is off (the entitlement read answers `active: false`, or Confirm is refused with a 402).
178
225
  *
179
- * THE FLOW WILL NOT DEAD-END. Absent this, an unserved surface renders the paused card, which is a state but
180
- * not a way forward; the prebuilt flow passes the hosted-visit handoff here so the owner still reaches a vet.
226
+ * Absent, the paused card, inside the chrome whose Close is the way out. Nothing leaves the page by default;
227
+ * a host that wants the hosted visit offered here passes `() => <VetVisitButton prefer="redirect" />`.
181
228
  */
182
229
  readonly renderUnavailable?: () => ReactNode;
183
230
  /**
@@ -191,15 +238,127 @@ interface EverfurTelevetBookingProps {
191
238
  readonly style?: CSSProperties;
192
239
  readonly testID?: string;
193
240
  }
241
+
194
242
  declare function EverfurTelevetBooking(props: EverfurTelevetBookingProps): ReactNode;
195
243
 
244
+ interface TelevetEarlyEmergencyProps {
245
+ readonly petName?: string | null;
246
+ readonly primaryVet?: TelevetPrimaryVet | null;
247
+ /** The host's own emergency-vet locator, for the "Find an emergency vet near you" card. */
248
+ readonly onFindEmergencyVet?: (() => void) | undefined;
249
+ readonly onContinue: () => void;
250
+ }
251
+ /**
252
+ * THE EMERGENCY WARNING, IN PLACE OF DESCRIBE. The clinical-safety surface on this flow.
253
+ *
254
+ * The consumer web app's interstitial (BookingFunnel.tsx:713-774): its heading, its body, its cards and its
255
+ * continue control, in the web deck's words. The mobile shape underneath (the two-point danger edge, the
256
+ * assertive region) is kept, because both apps interrupt the same way.
257
+ *
258
+ * ── THE DOM PIECES THAT CARRY WHAT THE RN PROPS CARRIED ─────────────────────────────────────────────────
259
+ * `role="alertdialog"` with `aria-modal` is deliberately NOT used. This is not an overlay: the container
260
+ * REPLACES the intake step with it, so there is no live form underneath for a modal to fence off, and
261
+ * claiming a modal that traps no focus is a worse lie than claiming none. What the screen needs instead is
262
+ * that its heading is announced the moment it mounts, which `role="alert"` on the region does, and that its
263
+ * heading is a real heading so a reader can jump to it.
264
+ *
265
+ * IT CANNOT BE SKIPPED PAST for the same three container-level reasons the RN file lists: it replaces the
266
+ * step, Back returns to the words without acknowledging, and the acknowledgement is bound to the exact text.
267
+ */
268
+ declare function TelevetEarlyEmergency({ petName, primaryVet, onFindEmergencyVet, onContinue, }: TelevetEarlyEmergencyProps): ReactNode;
269
+ interface TelevetStateInterestActionProps {
270
+ /** Null renders NOTHING: no seam, no control. */
271
+ readonly action: TelevetStateInterestAction$1 | null;
272
+ readonly testIDPrefix: string;
273
+ }
274
+ /**
275
+ * ASK TO BE TOLD WHEN THE FACT ON SCREEN CHANGES.
276
+ *
277
+ * PORTED FROM THE CONSUMER WEB APP (`StateInterestPanel.tsx:100-130`), which is the right reference for a DOM
278
+ * surface and differs from the phone in one visible way: the pending state is a LABEL
279
+ * (`stateInterestSubmitting`, ownerCopy.ts:524) rather than a spinner inside the button. The web app made
280
+ * that choice for its own surface and this follows it, so a partner's web page reads the way everfur.com does.
281
+ *
282
+ * THE FAILURE IS `role="alert"` AND THE JOIN IS `role="status"`, matching the consumer's `Notice` tones
283
+ * (danger/alert, success/status). A failed write needs to interrupt because the member is about to walk away
284
+ * believing they were added; a success can wait for a pause.
285
+ */
286
+ declare function TelevetStateInterestAction({ action, testIDPrefix, }: TelevetStateInterestActionProps): ReactNode;
287
+ interface TelevetClinicianEmptyStateProps {
288
+ readonly cause: TelevetEmptyRosterCause;
289
+ readonly onRetry?: (() => void) | undefined;
290
+ readonly stateInterest?: TelevetStateInterestAction$1 | null;
291
+ }
292
+ /**
293
+ * THE TERMINAL STATE FOR A RESOLVED, STATE-SCOPED EMPTY CLINICIAN ROSTER.
294
+ *
295
+ * Mobile shape in DOM: the consumer web funnel is pre-signup and reads no roster, so it has no equivalent.
296
+ * The retry follows the CAUSE rather than the screen, and the decision lives in
297
+ * `react/televet/clinicianEmptyState.ts` so this file and its RN sibling cannot disagree about which
298
+ * sentence is true.
299
+ */
300
+ declare function TelevetClinicianEmptyState({ cause, onRetry, stateInterest, }: TelevetClinicianEmptyStateProps): ReactNode;
301
+ interface TelevetEntitlementInterestStateProps {
302
+ /** Opens the state-scoped roster read and nothing else. Absent, the card stands alone. */
303
+ readonly onCheckAvailability?: (() => void) | undefined;
304
+ }
305
+ /**
306
+ * THE PARTNER'S BOOKING IS PAUSED, WITH THE ONE DELIBERATELY NON-BOOKING ESCAPE HATCH. See the RN sibling's
307
+ * docblock for why this is the paused state and not a membership sentence.
308
+ */
309
+ declare function TelevetEntitlementInterestState({ onCheckAvailability, }: TelevetEntitlementInterestStateProps): ReactNode;
310
+ interface TelevetMediaDropNoticeProps {
311
+ readonly shortfall: TelevetMediaShortfall;
312
+ readonly testIDPrefix: string;
313
+ }
314
+ /**
315
+ * WHAT HAPPENED TO THE OWNER'S ATTACHMENTS, one line per cause.
316
+ *
317
+ * Ported from the consumer web app's own composition: `consultAttachmentShortfallLines` builds the sentences
318
+ * (consultAttachmentUpload.ts:382-407) and `BookingMediaField.tsx:441` renders them as a list. So this is a
319
+ * `<ul>`, which is what the web app does and what a reader needs in order to be told how many things went
320
+ * wrong before it reads the first one.
321
+ *
322
+ * MOUNTED ON BOTH REVIEW AND THE CONFIRMATION, for the reason the consumer mobile app found the hard way:
323
+ * review unmounts the instant the booking succeeds, and the confirmation is where a "your photo did not reach
324
+ * the vet" line actually has to be read.
325
+ */
326
+ declare function TelevetMediaDropNotice({ shortfall, testIDPrefix, }: TelevetMediaDropNoticeProps): ReactNode;
327
+
196
328
  /** The screens of the televet stack. */
197
- type TelevetScreen = {
329
+ type TelevetScreen =
330
+ /** Where a vet entry lands: the visits when one is still ahead, otherwise the booking. The default root. */
331
+ {
332
+ readonly name: 'home';
333
+ } | {
198
334
  readonly name: 'booking';
335
+ }
336
+ /** The member's visits, upcoming and past, each with its own Join, Reschedule and Cancel. */
337
+ | {
338
+ readonly name: 'visits';
199
339
  } | {
200
340
  readonly name: 'reschedule';
201
341
  readonly consult: TelevetConsult;
342
+ }
343
+ /** Mint the room credential for this consult and join it, behind the recording notice. */
344
+ | {
345
+ readonly name: 'call';
346
+ readonly consultId: string;
347
+ readonly clinicianName?: string | null | undefined;
348
+ readonly petName?: string | null | undefined;
349
+ }
350
+ /** A visit the member already has, as a tapped reminder names it. Opens the visits. */
351
+ | {
352
+ readonly name: 'visit';
353
+ readonly visitRef: string;
354
+ readonly intent: VetVisitIntent | null;
202
355
  };
356
+ /**
357
+ * The screen a request opens on: the visit it names, or the landing (the visits when one is ahead, otherwise
358
+ * a new booking). What `EverfurTelevetHost` and a partner's own presenter both use, so the two cannot open the
359
+ * same request on different screens.
360
+ */
361
+ declare function televetScreenForRequest(request: EverfurTelevetFlowRequest): TelevetScreen;
203
362
  /** How the flow's own stack relates to the browser's history. */
204
363
  type TelevetHistoryMode = 'memory' | 'browser';
205
364
  interface EverfurTelevetProps {
@@ -218,6 +377,21 @@ interface EverfurTelevetProps {
218
377
  readonly onConfirmDiscard?: TelevetDiscardConfirm;
219
378
  readonly onRequestLocation?: () => void;
220
379
  readonly locationStatus?: TelevetLocationStatus;
380
+ /**
381
+ * THE PET'S OWN CLINIC, for the emergency screen's exit row. The partner wire has no primary-vet concept,
382
+ * so a host that holds its customer's clinic passes it here and gets the consumer's exact row.
383
+ */
384
+ readonly primaryVet?: TelevetPrimaryVet | null;
385
+ /**
386
+ * THE EMERGENCY SCREEN'S "Find an emergency vet near you" ROW. The SDK has no clinic directory and opens
387
+ * nothing outside the page, so the row renders only when the host can take the member to one of its own.
388
+ */
389
+ readonly onFindEmergencyVet?: () => void;
390
+ /**
391
+ * The emergency question asked after Describe. Absent, the question is asked at Confirm by the server, as
392
+ * it is today: the partner plane serves no triage route. See `EverfurTelevetBooking`.
393
+ */
394
+ readonly onTriageReason?: TelevetTriageRead;
221
395
  /**
222
396
  * How the flow's stack relates to the browser's history. `memory` by default, which never touches
223
397
  * `history`: a widget embedded in someone else's page must not take over their back button.
@@ -230,14 +404,14 @@ interface EverfurTelevetProps {
230
404
  */
231
405
  readonly canJoinInApp?: boolean;
232
406
  /**
233
- * Replace the hosted-visit fallback shown when the in-page booking surface is not served.
407
+ * Replace what is shown when the in-page booking surface is not served for this tenant.
234
408
  *
235
- * The default is the published `VetVisitButton`, which mints the single-use handoff and opens the hosted
236
- * Everfur visit. Passing `null` here is not a way to remove it: a flow with no fallback dead-ends, so an
237
- * explicit render prop is the only way to change it.
409
+ * The default is the paused card inside the booking chrome, whose Close is the way out: nothing leaves the
410
+ * page. A partner that wants the hosted visit offered here opts in explicitly:
411
+ * `renderUnavailable={() => <VetVisitButton prefer="redirect" />}`.
238
412
  */
239
413
  readonly renderUnavailable?: () => ReactNode;
240
- /** The screen the flow starts on; the booking flow when omitted. */
414
+ /** The screen the flow starts on; `home` (the visits when one is ahead, otherwise booking) when omitted. */
241
415
  readonly initialScreen?: TelevetScreen;
242
416
  /**
243
417
  * The heading level this flow's title claims. Defaults to 2.
@@ -253,9 +427,260 @@ interface EverfurTelevetProps {
253
427
  readonly className?: string;
254
428
  }
255
429
  declare function EverfurTelevetFlow(props: EverfurTelevetProps): ReactNode;
256
- /** The public prebuilt televet surface: the flow, starting at booking. */
430
+ /** The public prebuilt televet surface: the flow, landing on the visits or the booking. */
257
431
  declare const EverfurTelevet: typeof EverfurTelevetFlow;
258
432
 
433
+ interface EverfurTelevetDialogProps {
434
+ /** What was opened: the pet and state for a booking, or the visit a reminder named. */
435
+ readonly request: EverfurTelevetFlowRequest;
436
+ /** Close the dialog. Called by the flow's own exits and by an Escape no screen handled. */
437
+ readonly onClose: () => void;
438
+ }
439
+ /** The in-page vet visit in a modal dialog. */
440
+ declare function EverfurTelevetDialog({ request, onClose }: EverfurTelevetDialogProps): ReactNode;
441
+
442
+ interface TelevetJoinScreenProps {
443
+ /** The consult to join. */
444
+ readonly consultId: string;
445
+ /** Host/test seam: inject a booking controller instead of building one from the provider's session. */
446
+ readonly controller?: TelevetBookingController | undefined;
447
+ /** Shown in the lobby while the clinician has not joined. Never invented. */
448
+ readonly clinicianName?: string | null | undefined;
449
+ /** The pet's name for the lobby's prep line. */
450
+ readonly petName?: string | null | undefined;
451
+ /** The way out: the member left the call, declined the notice, or pressed Leave on a refusal. */
452
+ readonly onLeave: () => void;
453
+ readonly style?: CSSProperties | undefined;
454
+ }
455
+ /** Mint the room credential for one consult and join it in the page. */
456
+ declare function TelevetJoinScreen({ consultId, controller: injected, clinicianName, petName, onLeave, style }: TelevetJoinScreenProps): ReactNode;
457
+
458
+ interface TelevetVisitsScreenProps {
459
+ /** Host/test seam: inject a booking controller instead of building one from the provider's session. */
460
+ readonly controller?: TelevetBookingController | undefined;
461
+ /** Join a visit: the flow mints the credential and opens the call behind the recording notice. */
462
+ readonly onJoin: (consult: TelevetConsult, petName: string | null) => void;
463
+ /** Move a visit. Absent, the control is omitted rather than rendered inert. */
464
+ readonly onReschedule?: ((consult: TelevetConsult) => void) | undefined;
465
+ /** Start a new booking. Absent, the book card is omitted. */
466
+ readonly onBook?: (() => void) | undefined;
467
+ /** Leave the visits: back to the screen under them, or out of the flow from its first screen. */
468
+ readonly onBack: () => void;
469
+ /** True when the visits are the flow's first screen, so the way out is the close control rather than Back. */
470
+ readonly isRoot?: boolean | undefined;
471
+ /** Bumped by the flow after a booking, a move or a call, so the list is read again. */
472
+ readonly revision?: number | undefined;
473
+ /** Injected by tests, so the split and the window can sit on either side of a boundary. */
474
+ readonly nowMs?: number | undefined;
475
+ readonly style?: CSSProperties | undefined;
476
+ }
477
+ declare function TelevetVisitsScreen({ controller: injected, onJoin, onReschedule, onBook, onBack, isRoot, revision, nowMs, style, }: TelevetVisitsScreenProps): ReactNode;
478
+
479
+ type Css = CSSProperties;
480
+ declare function makeVisitStyles(theme: EverfurTheme): {
481
+ screen: Css;
482
+ topBar: Css;
483
+ topBarStart: Css;
484
+ iconButton: Css;
485
+ textButton: Css;
486
+ panel: Css;
487
+ panelBody: Css;
488
+ panelHeader: Css;
489
+ panelTitle: Css;
490
+ count: Css;
491
+ bookTitle: Css;
492
+ list: Css;
493
+ row: Css;
494
+ rowHead: Css;
495
+ when: Css;
496
+ pet: Css;
497
+ chip: Css;
498
+ chipPositive: Css;
499
+ actions: Css;
500
+ note: Css;
501
+ notice: Css;
502
+ noticeTitle: Css;
503
+ noticeDanger: Css;
504
+ form: Css;
505
+ label: Css;
506
+ textarea: Css;
507
+ fieldError: Css;
508
+ empty: Css;
509
+ skeletons: Css;
510
+ };
511
+ type VisitStyles = ReturnType<typeof makeVisitStyles>;
512
+
513
+ type TelevetCancelTerms = {
514
+ readonly status: 'loading';
515
+ } | {
516
+ readonly status: 'ready';
517
+ readonly summary: string;
518
+ } | {
519
+ readonly status: 'error';
520
+ };
521
+ interface TelevetCancelVisitFormProps {
522
+ readonly terms: TelevetCancelTerms;
523
+ readonly submitting: boolean;
524
+ /** The line to show when the last attempt did not land, or null. */
525
+ readonly failure: string | null;
526
+ readonly onConfirm: (reason: string) => void;
527
+ readonly onDismiss: () => void;
528
+ readonly onRetryTerms: () => void;
529
+ readonly styles: VisitStyles;
530
+ }
531
+ declare function TelevetCancelVisitForm({ terms, submitting, failure, onConfirm, onDismiss, onRetryTerms, styles, }: TelevetCancelVisitFormProps): ReactNode;
532
+
533
+ /**
534
+ * The emergency interstitial's cards: ownerCopy.ts:1074-1077, rendered by `EmergencyInterstitial`
535
+ * (BookingFunnel.tsx:713-774). The number is the web app's own dialled constant (BookingFunnel.tsx:643), the
536
+ * same one its emergency notice gives in words, never parsed back out of the displayed line.
537
+ */
538
+ declare const TELEVET_EMERGENCY_EXITS_WEB: Readonly<{
539
+ findEmergencyVet: "Find an emergency vet near you";
540
+ poisonControl: "ASPCA Animal Poison Control";
541
+ poisonControlDetail: "(888) 426-4435 · a fee may apply";
542
+ poisonControlTel: "tel:+18884264435";
543
+ }>;
544
+ declare const TELEVET_BOOKING_COPY_WEB: Readonly<{
545
+ /** :1037. The same words as the shared deck, restated so the web deck is complete for this screen. */
546
+ petSelectTitle: "Who is this visit for?";
547
+ /** :1054. The shared deck's "or Type to the vet what you're seeing" kept an "or" from a removed option. */
548
+ describeHeading: "Type to the vet what you're seeing";
549
+ /** :1056 `describeHint`, the web frame's line under that heading. */
550
+ describeHelpLong: "Describe the issues your pet is experiencing";
551
+ /** see-a-vet/copy.ts:264 `intakeStepTwoCopy.detail.placeholder`, which the web funnel's textarea uses. */
552
+ reasonPlaceholder: "She's been scratching her left ear a lot this week...";
553
+ /** :1094 `vetHeading`. The shared deck's "Your Vet" is the mobile card's title. */
554
+ yourVetTitle: "Which vet would you like to see?";
555
+ /** :1113 `timeHeading`. */
556
+ timeHeading: "Pick a date and time";
557
+ /** :1116 `reviewHeading`, drawn on the web frame where the mobile review draws none. */
558
+ reviewHeading: "Does this look right?";
559
+ /**
560
+ * :1047 `issuesHeading`, :1049 `issuesHint`, :1051 `otherIssue`. `{pet}` is DATA. The apostrophe is the
561
+ * web deck's typographic one, character for character.
562
+ */
563
+ issuesHeadingTemplate: "Select {pet}’s main issues";
564
+ issuesHint: "Can select more than 1";
565
+ otherIssue: "Other";
566
+ /** :1129 `bookedHeading`. `{vet}` is the booked clinician's served name; without one the shared title stays. */
567
+ bookedHeadingTemplate: "You're booked with {vet}";
568
+ /** :1141, capital C as the web frame draws it. */
569
+ addToCalendarCta: "Add to Calendar";
570
+ /** see-a-vet/copy.ts `statePolicyNoticeCopy.back`, the funnel's Back (FunnelFrame, BookingFunnel.tsx:280). */
571
+ backLabel: "Back";
572
+ /**
573
+ * The emergency interstitial (`Desktop - 18`): ownerCopy.ts:1069, :1071-1072, :1085 and :1091.
574
+ *
575
+ * "PLEASE CALL ONE OF THESE FIRST." ONLY OVER CARDS THAT ARE THERE. The consumer web draws its cards on every
576
+ * warning, so its lede can point at them. The SDK draws a card only when the host gave it one (a locator, the
577
+ * pet's clinic) or the owner approves poison control, so a warning with none reads `ledeWithoutExits`: the
578
+ * consumer MOBILE deck's lede for exactly that state (everfur-mobile copy.ts:726-730, "it must not tell an
579
+ * owner to call a list that is absent from the screen"), which is the shared deck's value.
580
+ */
581
+ emergency: Readonly<{
582
+ bannerTitle: "This can't wait for a scheduled call.";
583
+ lede: "What you're describing is the kind of thing vets want to see in person, now. Please call one of these first.";
584
+ ledeWithoutExits: string;
585
+ keepBookingCta: "I've handled this, continue with booking";
586
+ exitPrimaryVetTitle: "Call {petName}'s primary vet";
587
+ exitFindErTitle: string;
588
+ startCallHint: string;
589
+ }>;
590
+ stateBlockedTitle: string;
591
+ noCliniciansTitle: string;
592
+ noCliniciansBody: string;
593
+ noCliniciansRetryCta: string;
594
+ noCliniciansRegionBody: string;
595
+ reviewsLabel: string;
596
+ rescheduleFromTemplate: string;
597
+ rescheduleFailed: string;
598
+ keepExistingCta: string;
599
+ bookingPausedTitle: string;
600
+ slotsErrorTitle: string;
601
+ noSlotsTitle: string;
602
+ nextOpeningTemplate: string;
603
+ seeOtherVetsCta: string;
604
+ retryCta: string;
605
+ holdExpired: string;
606
+ slotTaken: string;
607
+ reasonTooLong: string;
608
+ shareRecordsOff: string;
609
+ confirmNotEntitled: string;
610
+ confirmFailed: string;
611
+ checkAvailabilityCta: string;
612
+ stateInterest: Readonly<{
613
+ cta: string;
614
+ submitting: string;
615
+ joinedTitle: string;
616
+ joinedBody: string;
617
+ failed: string;
618
+ }>;
619
+ media: Readonly<{
620
+ droppedTemplate: string;
621
+ droppedPluralTemplate: string;
622
+ refusedSizeTemplate: string;
623
+ refusedSizePluralTemplate: string;
624
+ refusedTypeTemplate: string;
625
+ refusedTypePluralTemplate: string;
626
+ refusedUnreadableTemplate: string;
627
+ refusedUnreadablePluralTemplate: string;
628
+ }>;
629
+ navTitle: string;
630
+ rescheduleNavTitle: string;
631
+ close: string;
632
+ continueCta: string;
633
+ addPetCta: string;
634
+ locationUnknownTitle: string;
635
+ locationUnknownBody: string;
636
+ locationUnknownCta: string;
637
+ locationBlockedTitle: string;
638
+ locationBlockedBody: string;
639
+ locationBlockedCta: string;
640
+ locationUnavailableTitle: string;
641
+ locationUnavailableBody: string;
642
+ stateAttestTemplate: string;
643
+ addPhotoCta: string;
644
+ removePhotoLabel: string;
645
+ summaryPet: string;
646
+ summaryVet: string;
647
+ summaryWhen: string;
648
+ summaryLength: string;
649
+ summaryReason: string;
650
+ summaryLengthTemplate: string;
651
+ confirmCta: string;
652
+ bookedTitle: string;
653
+ doneCta: string;
654
+ booked: Readonly<{
655
+ remindPromise: string;
656
+ summaryPromise: string;
657
+ joinPromise: string;
658
+ backToPet: string;
659
+ calendarAdded: string;
660
+ calendarFailedBody: string;
661
+ }>;
662
+ chrome: Readonly<{
663
+ closeHint: string;
664
+ discardTitle: string;
665
+ discardBody: string;
666
+ discardConfirmCta: string;
667
+ discardKeepCta: string;
668
+ noPetsTitle: string;
669
+ loadFailedTitle: string;
670
+ retryCta: string;
671
+ }>;
672
+ visit: Readonly<{
673
+ title: string;
674
+ }>;
675
+ loading: Readonly<{
676
+ pets: "Loading pets. Nothing to read yet.";
677
+ clinicians: "Loading vets. Nothing to read yet.";
678
+ slots: "Loading times. Nothing to read yet.";
679
+ consult: "Loading your visit. Nothing to read yet.";
680
+ progressTemplate: "Step {step} of {total}";
681
+ }>;
682
+ }>;
683
+
259
684
  interface EverfurTelevetRescheduleProps {
260
685
  /** The consult being moved. Null while the host is still loading it. */
261
686
  readonly consult: TelevetConsult | null;
@@ -346,4 +771,4 @@ declare function TelevetSummaryCard({ children, testID }: {
346
771
  readonly testID?: string;
347
772
  }): ReactNode;
348
773
 
349
- export { BACK_LABEL, type EverfurHeadingLevel, EverfurTelevet, EverfurTelevetBooking, type EverfurTelevetBookingProps, EverfurTelevetFlow, type EverfurTelevetProps, EverfurTelevetReschedule, type EverfurTelevetRescheduleProps, PetRef, TelevetBookedScreen, type TelevetBookedScreenProps, TelevetBookingChrome, type TelevetBookingChromeProps, TelevetBookingController, type TelevetBookingFailure, TelevetBookingStep, type TelevetCalendarEvent, type TelevetCalendarWriter, TelevetConsentCheckbox, TelevetConsult, type TelevetDay, TelevetDayStrip, type TelevetDayStripProps, type TelevetDiscardConfirm, type TelevetHistoryMode, TelevetIntakeMedia, type TelevetIntakeMediaItem, type TelevetIntakeMediaProps, type TelevetLocationStatus, type TelevetMediaPicker, type TelevetScreen, TelevetSlot, TelevetSlotPicker, type TelevetSlotPickerProps, TelevetSummaryCard, TelevetSummaryRow, televetConsultCalendarKey, televetDaysFromSlots };
774
+ export { BACK_LABEL, type EverfurHeadingLevel, EverfurTelevet, EverfurTelevetBooking, type EverfurTelevetBookingProps, EverfurTelevetDialog, type EverfurTelevetDialogProps, EverfurTelevetFlow, EverfurTelevetFlowRequest, type EverfurTelevetProps, EverfurTelevetReschedule, type EverfurTelevetRescheduleProps, PetRef, TELEVET_BOOKING_COPY_WEB, TELEVET_EMERGENCY_EXITS_WEB, TelevetBookedScreen, type TelevetBookedScreenProps, TelevetBookingChrome, type TelevetBookingChromeProps, TelevetBookingController, TelevetBookingStep, type TelevetCalendarEvent, type TelevetCalendarWriter, type TelevetCancelTerms, TelevetCancelVisitForm, type TelevetCancelVisitFormProps, TelevetClinicianEmptyState, type TelevetClinicianEmptyStateProps, TelevetConsentCheckbox, TelevetConsult, type TelevetDay, TelevetDayStrip, type TelevetDayStripProps, type TelevetDiscardConfirm, TelevetEarlyEmergency, type TelevetEarlyEmergencyProps, TelevetEmergencyExits, type TelevetEmergencyExitsProps, TelevetEmptyRosterCause, TelevetEntitlementInterestState, type TelevetEntitlementInterestStateProps, type TelevetHistoryMode, TelevetIntakeMedia, type TelevetIntakeMediaItem, type TelevetIntakeMediaProps, TelevetJoinScreen, type TelevetJoinScreenProps, type TelevetLocationStatus, TelevetMediaDropNotice, type TelevetMediaDropNoticeProps, type TelevetMediaPicker, TelevetMediaShortfall, type TelevetPrimaryVet, type TelevetScreen, TelevetSlot, TelevetSlotPicker, type TelevetSlotPickerProps, TelevetStateInterestAction, type TelevetStateInterestActionProps, TelevetStateInterestAction$1 as TelevetStateInterestLifecycle, TelevetStateInterestWrite, TelevetSummaryCard, TelevetSummaryRow, TelevetTriageRead, TelevetVisitsScreen, type TelevetVisitsScreenProps, VetVisitIntent, televetConsultCalendarKey, televetDaysFromSlots, televetScreenForRequest };