@everfur/sdk 0.13.0 → 0.14.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/CHANGELOG.md +126 -0
- package/README.md +11 -10
- package/dist/{Chat.d-Dts8u_1a.d.cts → Chat.d-aycmX1CA.d.cts} +12 -4
- package/dist/{Chat.d-DUNTfzqC.d.ts → Chat.d-puminpyi.d.ts} +12 -4
- package/dist/{DepthViews.d-CubkMPbU.d.ts → DepthViews.d-BdvFZgPs.d.cts} +1 -1
- package/dist/{DepthViews.d-Ce2Zhnrb.d.ts → DepthViews.d-DIvxzLDf.d.ts} +1 -1
- package/dist/{DepthViews.d-BMU2jFPw.d.cts → DepthViews.d-Dy0Zl-s-.d.ts} +1 -1
- package/dist/{DepthViews.d-BIp599lz.d.cts → DepthViews.d-wLNkzk9f.d.cts} +1 -1
- package/dist/RecordsPage.d-9Ank15PT.d.ts +93 -0
- package/dist/RecordsPage.d-DMKU0IKc.d.cts +93 -0
- package/dist/animations/index.d.cts +5 -5
- package/dist/animations/index.d.ts +5 -5
- package/dist/{attachments.d-D1yhJjcZ.d.ts → attachments.d--sIsfk6e.d.ts} +2 -2
- package/dist/{attachments.d-Bp2qbHxn.d.cts → attachments.d-DNUCiyy5.d.cts} +6 -24
- package/dist/{attachments.d-DisnvB9R.d.cts → attachments.d-ZEpTUeWN.d.cts} +2 -2
- package/dist/{attachments.d-Djy9z_0Z.d.ts → attachments.d-rp3xs-Q3.d.ts} +6 -24
- package/dist/{bookingCopy.d-BJF6gd1A.d.ts → bookingCopy.d-D0uIIFAJ.d.ts} +2 -2
- package/dist/{bookingCopy.d-BlBmhAJc.d.cts → bookingCopy.d-DUrmVcLs.d.cts} +2 -2
- package/dist/{branding.d-DI8S400y.d.cts → branding.d-CTXTUg_8.d.cts} +1 -1
- package/dist/{branding.d-OIGLbQeM.d.ts → branding.d-DxJSoFce.d.ts} +1 -1
- package/dist/{casesRepository.d-CT2LTicS.d.cts → casesRepository.d-DCnix2pT.d.cts} +1 -1
- package/dist/{casesRepository.d-UsWOz9bv.d.ts → casesRepository.d-DbirgbyH.d.ts} +1 -1
- package/dist/chat/index.cjs +43 -41
- package/dist/chat/index.d.cts +26 -13
- package/dist/chat/index.d.ts +26 -13
- package/dist/chat/index.js +43 -41
- package/dist/client/index.cjs +2 -2
- package/dist/client/index.d.cts +10 -10
- package/dist/client/index.d.ts +10 -10
- package/dist/client/index.js +2 -2
- package/dist/clinicBatch.d-Ccmrngcu.d.cts +71 -0
- package/dist/clinicBatch.d-D9Ci7IpP.d.ts +71 -0
- package/dist/clinicModels.d-BXgKZqDb.d.cts +68 -0
- package/dist/clinicModels.d-CaS64-P-.d.ts +68 -0
- package/dist/clinicRequestProps.d-1dCtouGA.d.cts +65 -0
- package/dist/clinicRequestProps.d-CjsMg_OD.d.ts +65 -0
- package/dist/{config.d-BR3DT9ho.d.cts → config.d-DJ4mvf_w.d.cts} +1 -1
- package/dist/{config.d-Dy6igYlH.d.ts → config.d-MX7IKP2f.d.ts} +1 -1
- package/dist/consent/index.d.cts +5 -5
- package/dist/consent/index.d.ts +5 -5
- package/dist/{context.d-QcCgguzA.d.ts → context.d-BdnBe8Oe.d.ts} +7 -7
- package/dist/{context.d-Cwks0p3C.d.cts → context.d-C6MJsMpN.d.cts} +7 -7
- package/dist/{copy.d-CiMn2IIt.d.ts → copy.d-BIfQOoDB.d.ts} +2 -2
- package/dist/{copy.d-DLJTyRfT.d.cts → copy.d-C_u7shha.d.cts} +2 -2
- package/dist/core/index.cjs +3 -3
- package/dist/core/index.d.cts +20 -18
- package/dist/core/index.d.ts +20 -18
- package/dist/core/index.js +3 -3
- package/dist/{depth.d-OSALbYM7.d.ts → depth.d-COFxYWLU.d.ts} +6 -133
- package/dist/{depth.d-CjPGVPDL.d.cts → depth.d-D2e5WZuE.d.cts} +6 -133
- package/dist/{entitlementRepository.d-CVQa1DA1.d.cts → entitlementRepository.d-BP15dFbe.d.cts} +4 -4
- package/dist/{entitlementRepository.d-Cf3LbTwD.d.ts → entitlementRepository.d-DLuxnGi5.d.ts} +4 -4
- package/dist/{features.d-fNsGcg0R.d.ts → features.d-DrQxTw3-.d.cts} +1 -1
- package/dist/{features.d-fNsGcg0R.d.cts → features.d-DrQxTw3-.d.ts} +1 -1
- package/dist/{focus.d-DMg2ngHI.d.ts → focus.d-C0Tr0oVJ.d.ts} +109 -348
- package/dist/{focus.d-az9cqUz3.d.cts → focus.d-jQWp0hdK.d.cts} +109 -348
- package/dist/health-plan/index.cjs +165 -151
- package/dist/health-plan/index.d.cts +53 -11
- package/dist/health-plan/index.d.ts +53 -11
- package/dist/health-plan/index.js +169 -155
- package/dist/{idempotency.d-D461_DPD.d.cts → idempotency.d-DXb1BN2A.d.ts} +151 -6
- package/dist/{idempotency.d-WpXx9zQo.d.ts → idempotency.d-HF6fyRt2.d.cts} +151 -6
- package/dist/{identity.d-DzTijonw.d.ts → identity.d-BePPZ7Uv.d.ts} +1 -1
- package/dist/{identity.d-60LeJt_s.d.cts → identity.d-CJfnWOdH.d.cts} +1 -1
- package/dist/index.cjs +46 -44
- package/dist/index.d.cts +19 -18
- package/dist/index.d.ts +19 -18
- package/dist/index.js +46 -44
- package/dist/introEvents.d-BkGDT_kG.d.cts +175 -0
- package/dist/introEvents.d-DHlMvmC7.d.ts +175 -0
- package/dist/introEvents.d-dS3fJCH1.d.cts +5 -0
- package/dist/introEvents.d-dS3fJCH1.d.ts +5 -0
- package/dist/{models.d-BnLm3VAA.d.cts → models.d-BSqvbTE1.d.cts} +8 -1
- package/dist/{models.d-BagXhafD.d.ts → models.d-DOwnr8fi.d.ts} +8 -1
- package/dist/notifications/index.d.cts +4 -4
- package/dist/notifications/index.d.ts +4 -4
- package/dist/{optInView.d-CEyHR6PK.d.cts → optInView.d-0iI5JoAf.d.cts} +119 -3
- package/dist/{optInView.d-acKpV8V2.d.ts → optInView.d-s-w4aGN3.d.ts} +119 -3
- package/dist/{parse.d-C8CXyS58.d.ts → parse.d-COt1qVA6.d.ts} +1 -1
- package/dist/{parse.d-tEzufgJX.d.cts → parse.d-EmsgOUMQ.d.cts} +1 -1
- package/dist/{pets.d-C_53_fzo.d.ts → pets.d-BFT_b53y.d.ts} +1 -1
- package/dist/{pets.d-NbJvP_kh.d.cts → pets.d-nNAVnw7f.d.cts} +1 -1
- package/dist/{petsRepository.d-lp1BHRqM.d.cts → petsRepository.d-B2TpRE7r.d.cts} +1 -1
- package/dist/{petsRepository.d-BuGHymNx.d.ts → petsRepository.d-RGwSZcYl.d.ts} +1 -1
- package/dist/planSignals.d-BDbp2e-k.d.cts +126 -0
- package/dist/planSignals.d-DSnxKoWe.d.ts +126 -0
- package/dist/{ports.d-COIyN624.d.ts → ports.d-D2n4HRUy.d.ts} +4 -4
- package/dist/{ports.d-CEROoqnA.d.cts → ports.d-DBA_gsq5.d.cts} +4 -4
- package/dist/{presentation.d-DMbdad7G.d.cts → presentation.d-vy8kTGfR.d.cts} +6 -0
- package/dist/{presentation.d-DMbdad7G.d.ts → presentation.d-vy8kTGfR.d.ts} +6 -0
- package/dist/quickPrompts.d-NM_81Jc1.d.cts +19 -0
- package/dist/quickPrompts.d-NM_81Jc1.d.ts +19 -0
- package/dist/records/depth/index.d.cts +13 -9
- package/dist/records/depth/index.d.ts +13 -9
- package/dist/records/index.cjs +252 -138
- package/dist/records/index.d.cts +88 -23
- package/dist/records/index.d.ts +88 -23
- package/dist/records/index.js +253 -139
- package/dist/{requestFunnel.d-CXUMPw1K.d.ts → requestFunnel.d-D9edIEjZ.d.ts} +2 -2
- package/dist/{requestFunnel.d-DWQQpjFR.d.cts → requestFunnel.d-RZex94XX.d.cts} +2 -2
- package/dist/{resolve.d-jI8FmBj3.d.cts → resolve.d-CoQWUy1Y.d.cts} +1 -1
- package/dist/{resolve.d-jI8FmBj3.d.ts → resolve.d-CoQWUy1Y.d.ts} +1 -1
- package/dist/{runtimeTypes.d-4yFNNuYR.d.ts → runtimeTypes.d-BYq38b17.d.ts} +6 -6
- package/dist/{runtimeTypes.d-D6N_fhxx.d.cts → runtimeTypes.d-LkwZaF7z.d.cts} +6 -6
- package/dist/{useRecordsDepth.d-DFcCfiXm.d.ts → screenProps.d-BVzRzowC.d.ts} +5 -91
- package/dist/{useRecordsDepth.d-sAq2Qkhr.d.cts → screenProps.d-CQ0qZJkr.d.cts} +5 -91
- package/dist/server/events/index.cjs +1 -1
- package/dist/server/events/index.d.cts +2 -2
- package/dist/server/events/index.d.ts +2 -2
- package/dist/server/events/index.js +1 -1
- package/dist/server/index.cjs +1 -1
- package/dist/server/index.d.cts +3 -3
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.js +1 -1
- package/dist/{sheetSeam.d-Cviqk89n.d.ts → sheetSeam.d-B09jf4YC.d.ts} +8 -4
- package/dist/{sheetSeam.d-DCS3LW8g.d.cts → sheetSeam.d-BBuEIVsa.d.cts} +8 -4
- package/dist/shop/index.cjs +224 -58
- package/dist/shop/index.d.cts +23 -5
- package/dist/shop/index.d.ts +23 -5
- package/dist/shop/index.js +225 -59
- package/dist/tabs/index.cjs +195 -0
- package/dist/tabs/index.d.cts +174 -0
- package/dist/tabs/index.d.ts +174 -0
- package/dist/tabs/index.js +195 -0
- package/dist/tabsModel.d-BfIQg6yS.d.cts +31 -0
- package/dist/tabsModel.d-BfIQg6yS.d.ts +31 -0
- package/dist/televet/booking/index.d.cts +6 -6
- package/dist/televet/booking/index.d.ts +6 -6
- package/dist/testing/index.cjs +1 -1
- package/dist/testing/index.d.cts +1 -1
- package/dist/testing/index.d.ts +1 -1
- package/dist/testing/index.js +1 -1
- package/dist/testing/rn/index.cjs +1 -1
- package/dist/testing/rn/index.d.cts +11 -11
- package/dist/testing/rn/index.d.ts +11 -11
- package/dist/testing/rn/index.js +1 -1
- package/dist/testing/web/index.d.cts +12 -12
- package/dist/testing/web/index.d.ts +12 -12
- package/dist/texting/index.cjs +40 -5
- package/dist/texting/index.d.cts +40 -7
- package/dist/texting/index.d.ts +40 -7
- package/dist/texting/index.js +40 -5
- package/dist/threadOptions.d-9r4Csa7k.d.cts +458 -0
- package/dist/threadOptions.d-B6GA09aM.d.ts +458 -0
- package/dist/{timelineRows.d-CU5GvvLk.d.ts → timelineRows.d-Bes8ip2v.d.ts} +1 -1
- package/dist/{timelineRows.d-BNxgzYRW.d.cts → timelineRows.d-BvM2A7_G.d.cts} +1 -1
- package/dist/{typeStyle.d-C1HBRAI3.d.ts → typeStyle.d-Co5KF0up.d.ts} +1 -1
- package/dist/{typeStyle.d-Bl8pzbBy.d.cts → typeStyle.d-xIZj02Ru.d.cts} +1 -1
- package/dist/useIntroSeen.d-CTWFUthO.d.cts +35 -0
- package/dist/useIntroSeen.d-CTWFUthO.d.ts +35 -0
- package/dist/usePresentation.d-BGz32Vlm.d.ts +285 -0
- package/dist/usePresentation.d-DYTF_ZGf.d.cts +285 -0
- package/dist/{useRecords.d-Cb-36SF5.d.cts → useRecords.d-BYNX01El.d.cts} +2 -2
- package/dist/{useRecords.d-aQTzQZoV.d.ts → useRecords.d-DWk61a4c.d.ts} +2 -2
- package/dist/useRecordsDepth.d--LLA_4ga.d.cts +32 -0
- package/dist/useRecordsDepth.d-BQRL0Hez.d.ts +32 -0
- package/dist/{view.d-Dps5C8-s.d.cts → view.d-0yBjLTV3.d.cts} +6 -4
- package/dist/{view.d-C-SNpDJX.d.ts → view.d-DqbCADFa.d.ts} +6 -4
- package/dist/web/consent/index.d.cts +5 -5
- package/dist/web/consent/index.d.ts +5 -5
- package/dist/web/health-plan/index.cjs +50 -43
- package/dist/web/health-plan/index.d.cts +46 -192
- package/dist/web/health-plan/index.d.ts +46 -192
- package/dist/web/health-plan/index.js +65 -58
- package/dist/web/index.cjs +61 -45
- package/dist/web/index.d.cts +165 -25
- package/dist/web/index.d.ts +165 -25
- package/dist/web/index.js +62 -46
- package/dist/web/intro/index.cjs +167 -0
- package/dist/web/intro/index.d.cts +79 -0
- package/dist/web/intro/index.d.ts +79 -0
- package/dist/web/intro/index.js +167 -0
- package/dist/web/notifications/index.d.cts +3 -3
- package/dist/web/notifications/index.d.ts +3 -3
- package/dist/web/records/depth/index.d.cts +13 -9
- package/dist/web/records/depth/index.d.ts +13 -9
- package/dist/web/records/index.cjs +7 -7
- package/dist/web/records/index.d.cts +21 -82
- package/dist/web/records/index.d.ts +21 -82
- package/dist/web/records/index.js +7 -7
- package/dist/web/records-sheet/index.cjs +181 -127
- package/dist/web/records-sheet/index.d.cts +18 -16
- package/dist/web/records-sheet/index.d.ts +18 -16
- package/dist/web/records-sheet/index.js +181 -127
- package/dist/web/shop/index.cjs +191 -76
- package/dist/web/shop/index.d.cts +21 -4
- package/dist/web/shop/index.d.ts +21 -4
- package/dist/web/shop/index.js +191 -76
- package/dist/web/televet/booking/index.d.cts +6 -6
- package/dist/web/televet/booking/index.d.ts +6 -6
- package/dist/web/texting/index.cjs +36 -5
- package/dist/web/texting/index.d.cts +40 -7
- package/dist/web/texting/index.d.ts +40 -7
- package/dist/web/texting/index.js +36 -5
- package/package.json +35 -4
- package/tabs/package.json +8 -0
- package/web/intro/native-blocked.cjs +12 -0
- package/web/intro/package.json +8 -0
- package/dist/threadOptions.d-B1pTMmDF.d.cts +0 -260
- package/dist/threadOptions.d-B1pTMmDF.d.ts +0 -260
- package/dist/usePresentation.d-D6qsFzBz.d.cts +0 -9
- package/dist/usePresentation.d-DuGQe_Do.d.ts +0 -9
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { a as HealthPlanPetWords, H as HealthPlanPage } from './focus.d-jQWp0hdK.cjs';
|
|
2
|
+
import { P as PetRef } from './ids.d-B2GAAifq.cjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The partner's own words in the intro. Each defaults to '' (the line is then not drawn). Raph's Embark lines, for
|
|
6
|
+
* reference: eyebrow "New in Embark"; lede "Built from her Embark DNA (all 255 results of it)."; pendingLede "Built from
|
|
7
|
+
* her Embark DNA, the day her results land."; recordsRowMore "Her DNA risks and her vet records, side by side.";
|
|
8
|
+
* planTopic "back"; askTitle "Her DNA knows a lot. Her vet knows the rest."; noVetTitle "No vet yet? Fair. Her plan
|
|
9
|
+
* runs on her DNA until she has one."; sentFine "Until then, her plan runs on her Embark DNA."; clinicEta "Usually 2
|
|
10
|
+
* to 5 days"; blanksDetail "Her weight, her dose and her next shots"; bannerBody "Her plan's three blanks are filled:
|
|
11
|
+
* her weight, her dose and her next shots."; appName "Embark".
|
|
12
|
+
*/
|
|
13
|
+
interface EverfurIntroCopy {
|
|
14
|
+
/** Frame 1's eyebrow, before Everfur's "powered by" lockup. */
|
|
15
|
+
readonly eyebrow: string;
|
|
16
|
+
/** Frame 1's line under the title (the partner counts its own results). */
|
|
17
|
+
readonly lede: string;
|
|
18
|
+
/** Frame 1's line under the title while the pet's results are not back (`resultsPending`). */
|
|
19
|
+
readonly pendingLede: string;
|
|
20
|
+
/** The Records row's second sentence. */
|
|
21
|
+
readonly recordsRowMore: string;
|
|
22
|
+
/** What the plan is for, in a word or two ("back"): "One plan for her back, built with ...". Empty drops that sentence. */
|
|
23
|
+
readonly planTopic: string;
|
|
24
|
+
/** Frame 2's title. Empty: no title, and focus goes to the frame's first line. */
|
|
25
|
+
readonly askTitle: string;
|
|
26
|
+
/** The no-vet frame's title. Empty: as `askTitle`. */
|
|
27
|
+
readonly noVetTitle: string;
|
|
28
|
+
/** The Sent frame's fine print. */
|
|
29
|
+
readonly sentFine: string;
|
|
30
|
+
/** How long a clinic usually takes, under "Her clinic sends her records". */
|
|
31
|
+
readonly clinicEta: string;
|
|
32
|
+
/** What fills in, under "Her three blanks fill in". */
|
|
33
|
+
readonly blanksDetail: string;
|
|
34
|
+
/** The records-landed banner's second line. */
|
|
35
|
+
readonly bannerBody: string;
|
|
36
|
+
/** The app the banner comes from (its header line). */
|
|
37
|
+
readonly appName: string;
|
|
38
|
+
}
|
|
39
|
+
declare const EVERFUR_INTRO_COPY: EverfurIntroCopy;
|
|
40
|
+
/**
|
|
41
|
+
* One of the plan's blanks: the words around the value only the pet's vet records hold. `before` + blank + `after`
|
|
42
|
+
* reads as one line ("Keep her at __ lb"); `source` is the small line under it. `width` is Raph's blank size.
|
|
43
|
+
*/
|
|
44
|
+
interface EverfurIntroBlank {
|
|
45
|
+
readonly before: string;
|
|
46
|
+
readonly after: string;
|
|
47
|
+
readonly source: string;
|
|
48
|
+
readonly width?: 's' | 'l';
|
|
49
|
+
}
|
|
50
|
+
/** The pet's words, plus the subject pronoun Raph's clinic frame uses ("the one she sees most"). */
|
|
51
|
+
interface IntroPetWords extends HealthPlanPetWords {
|
|
52
|
+
/** "she", "he", or the name. */
|
|
53
|
+
readonly subj: string;
|
|
54
|
+
}
|
|
55
|
+
declare function introPetWords(name: string | null | undefined, sex: 'female' | 'male' | null | undefined): IntroPetWords;
|
|
56
|
+
/** "three" for 3, up to ten; null outside one to ten (the line that needs it is then not drawn). */
|
|
57
|
+
declare function numberWord(n: number): string | null;
|
|
58
|
+
/**
|
|
59
|
+
* Raph's two default blanks (BLANKS, plan.src.html L5080): her weight and her next shots, the two that hold for any
|
|
60
|
+
* partner. His middle one ("1 chew a day of Embark Joint") names the partner's product, so it comes from the host.
|
|
61
|
+
*/
|
|
62
|
+
declare function defaultIntroBlanks(p: IntroPetWords): readonly EverfurIntroBlank[];
|
|
63
|
+
/** What the intro knows about the pet and its plan, read off the plan page. */
|
|
64
|
+
interface IntroFacts {
|
|
65
|
+
readonly pet: IntroPetWords;
|
|
66
|
+
/** The plan page's title ("Georgia's back plan"), the blanks card's header. */
|
|
67
|
+
readonly planTitle: string;
|
|
68
|
+
/** The vet who built the plan, only when the page says a vet reviewed it. */
|
|
69
|
+
readonly vetName: string | null;
|
|
70
|
+
/** How many daily tips the plan starts with (its routine's steps). */
|
|
71
|
+
readonly tips: number;
|
|
72
|
+
}
|
|
73
|
+
declare function introFacts(page: HealthPlanPage | null, petName?: string | null): IntroFacts;
|
|
74
|
+
/** Every line the intro draws, for one pet. An empty string is a line not drawn. */
|
|
75
|
+
interface IntroText {
|
|
76
|
+
readonly sheetLabel: {
|
|
77
|
+
readonly intro: string;
|
|
78
|
+
readonly records: string;
|
|
79
|
+
};
|
|
80
|
+
readonly back: string;
|
|
81
|
+
readonly skip: string;
|
|
82
|
+
readonly close: string;
|
|
83
|
+
readonly poweredBy: string;
|
|
84
|
+
readonly tabs: {
|
|
85
|
+
readonly eyebrow: string;
|
|
86
|
+
readonly title: string;
|
|
87
|
+
readonly lede: string;
|
|
88
|
+
readonly ask: string;
|
|
89
|
+
readonly plan: string;
|
|
90
|
+
readonly records: string;
|
|
91
|
+
readonly next: string;
|
|
92
|
+
/** Next with the pet's vet records already in: frame 1 is the only frame. */
|
|
93
|
+
readonly seePlan: string;
|
|
94
|
+
};
|
|
95
|
+
readonly ask: {
|
|
96
|
+
readonly title: string;
|
|
97
|
+
readonly lede: string;
|
|
98
|
+
readonly blanksPill: string;
|
|
99
|
+
readonly blankLabel: string;
|
|
100
|
+
readonly later: string;
|
|
101
|
+
readonly connect: string;
|
|
102
|
+
readonly fine: string;
|
|
103
|
+
readonly noVet: string;
|
|
104
|
+
};
|
|
105
|
+
readonly clinic: {
|
|
106
|
+
readonly title: string;
|
|
107
|
+
readonly search: string;
|
|
108
|
+
readonly searchLabel: string;
|
|
109
|
+
readonly list: string;
|
|
110
|
+
readonly more: string;
|
|
111
|
+
readonly request: string;
|
|
112
|
+
readonly upload: string;
|
|
113
|
+
readonly add: string;
|
|
114
|
+
};
|
|
115
|
+
readonly sent: {
|
|
116
|
+
readonly eyebrow: string;
|
|
117
|
+
readonly title: string;
|
|
118
|
+
readonly track: string;
|
|
119
|
+
readonly sentStep: string;
|
|
120
|
+
readonly sentTo: (clinic: string) => string;
|
|
121
|
+
readonly clinicStep: string;
|
|
122
|
+
readonly clinicEta: string;
|
|
123
|
+
readonly blanksStep: string;
|
|
124
|
+
readonly blanksDetail: string;
|
|
125
|
+
readonly lede: string;
|
|
126
|
+
readonly notify: string;
|
|
127
|
+
readonly notNow: string;
|
|
128
|
+
readonly fine: string;
|
|
129
|
+
};
|
|
130
|
+
readonly noVet: {
|
|
131
|
+
readonly title: string;
|
|
132
|
+
readonly lede: string;
|
|
133
|
+
readonly seePlan: string;
|
|
134
|
+
};
|
|
135
|
+
readonly toast: {
|
|
136
|
+
readonly on: string;
|
|
137
|
+
readonly off: string;
|
|
138
|
+
readonly landed: string;
|
|
139
|
+
};
|
|
140
|
+
readonly banner: {
|
|
141
|
+
readonly app: string;
|
|
142
|
+
readonly now: string;
|
|
143
|
+
readonly title: string;
|
|
144
|
+
readonly body: string;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
interface IntroTextInput {
|
|
148
|
+
readonly facts: IntroFacts;
|
|
149
|
+
readonly copy: EverfurIntroCopy;
|
|
150
|
+
/** How many blanks the plan holds (the blanks the intro shows). */
|
|
151
|
+
readonly blanks: number;
|
|
152
|
+
/** The pet's results are not back yet (frame 1's waiting lines). */
|
|
153
|
+
readonly resultsPending: boolean;
|
|
154
|
+
}
|
|
155
|
+
/** The intro's lines for one pet. Pure. */
|
|
156
|
+
declare function introText(input: IntroTextInput): IntroText;
|
|
157
|
+
|
|
158
|
+
/** A clinic records request the member sent from the intro (or its records-mode entry). */
|
|
159
|
+
interface EverfurRecordsRequested {
|
|
160
|
+
readonly petRef: PetRef;
|
|
161
|
+
/** The clinic as the member picked it. The callback's only: the web's window event leaves it out. */
|
|
162
|
+
readonly clinicName: string;
|
|
163
|
+
/** The created request's id, or null when the host's own flow sent it. */
|
|
164
|
+
readonly requestId: string | null;
|
|
165
|
+
/** ISO 8601. */
|
|
166
|
+
readonly at: string;
|
|
167
|
+
}
|
|
168
|
+
/** The pet's vet records arrived while the member was here (the records read turned from none to some). */
|
|
169
|
+
interface EverfurRecordsLanded {
|
|
170
|
+
readonly petRef: PetRef;
|
|
171
|
+
/** ISO 8601. */
|
|
172
|
+
readonly at: string;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export { type EverfurIntroCopy as E, type IntroText as I, type EverfurIntroBlank as a, type EverfurRecordsRequested as b, EVERFUR_INTRO_COPY as c, type EverfurRecordsLanded as d, type IntroFacts as e, type IntroPetWords as f, type IntroTextInput as g, defaultIntroBlanks as h, introFacts as i, introPetWords as j, introText as k, numberWord as n };
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { a as HealthPlanPetWords, H as HealthPlanPage } from './focus.d-C0Tr0oVJ.js';
|
|
2
|
+
import { P as PetRef } from './ids.d-B2GAAifq.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* The partner's own words in the intro. Each defaults to '' (the line is then not drawn). Raph's Embark lines, for
|
|
6
|
+
* reference: eyebrow "New in Embark"; lede "Built from her Embark DNA (all 255 results of it)."; pendingLede "Built from
|
|
7
|
+
* her Embark DNA, the day her results land."; recordsRowMore "Her DNA risks and her vet records, side by side.";
|
|
8
|
+
* planTopic "back"; askTitle "Her DNA knows a lot. Her vet knows the rest."; noVetTitle "No vet yet? Fair. Her plan
|
|
9
|
+
* runs on her DNA until she has one."; sentFine "Until then, her plan runs on her Embark DNA."; clinicEta "Usually 2
|
|
10
|
+
* to 5 days"; blanksDetail "Her weight, her dose and her next shots"; bannerBody "Her plan's three blanks are filled:
|
|
11
|
+
* her weight, her dose and her next shots."; appName "Embark".
|
|
12
|
+
*/
|
|
13
|
+
interface EverfurIntroCopy {
|
|
14
|
+
/** Frame 1's eyebrow, before Everfur's "powered by" lockup. */
|
|
15
|
+
readonly eyebrow: string;
|
|
16
|
+
/** Frame 1's line under the title (the partner counts its own results). */
|
|
17
|
+
readonly lede: string;
|
|
18
|
+
/** Frame 1's line under the title while the pet's results are not back (`resultsPending`). */
|
|
19
|
+
readonly pendingLede: string;
|
|
20
|
+
/** The Records row's second sentence. */
|
|
21
|
+
readonly recordsRowMore: string;
|
|
22
|
+
/** What the plan is for, in a word or two ("back"): "One plan for her back, built with ...". Empty drops that sentence. */
|
|
23
|
+
readonly planTopic: string;
|
|
24
|
+
/** Frame 2's title. Empty: no title, and focus goes to the frame's first line. */
|
|
25
|
+
readonly askTitle: string;
|
|
26
|
+
/** The no-vet frame's title. Empty: as `askTitle`. */
|
|
27
|
+
readonly noVetTitle: string;
|
|
28
|
+
/** The Sent frame's fine print. */
|
|
29
|
+
readonly sentFine: string;
|
|
30
|
+
/** How long a clinic usually takes, under "Her clinic sends her records". */
|
|
31
|
+
readonly clinicEta: string;
|
|
32
|
+
/** What fills in, under "Her three blanks fill in". */
|
|
33
|
+
readonly blanksDetail: string;
|
|
34
|
+
/** The records-landed banner's second line. */
|
|
35
|
+
readonly bannerBody: string;
|
|
36
|
+
/** The app the banner comes from (its header line). */
|
|
37
|
+
readonly appName: string;
|
|
38
|
+
}
|
|
39
|
+
declare const EVERFUR_INTRO_COPY: EverfurIntroCopy;
|
|
40
|
+
/**
|
|
41
|
+
* One of the plan's blanks: the words around the value only the pet's vet records hold. `before` + blank + `after`
|
|
42
|
+
* reads as one line ("Keep her at __ lb"); `source` is the small line under it. `width` is Raph's blank size.
|
|
43
|
+
*/
|
|
44
|
+
interface EverfurIntroBlank {
|
|
45
|
+
readonly before: string;
|
|
46
|
+
readonly after: string;
|
|
47
|
+
readonly source: string;
|
|
48
|
+
readonly width?: 's' | 'l';
|
|
49
|
+
}
|
|
50
|
+
/** The pet's words, plus the subject pronoun Raph's clinic frame uses ("the one she sees most"). */
|
|
51
|
+
interface IntroPetWords extends HealthPlanPetWords {
|
|
52
|
+
/** "she", "he", or the name. */
|
|
53
|
+
readonly subj: string;
|
|
54
|
+
}
|
|
55
|
+
declare function introPetWords(name: string | null | undefined, sex: 'female' | 'male' | null | undefined): IntroPetWords;
|
|
56
|
+
/** "three" for 3, up to ten; null outside one to ten (the line that needs it is then not drawn). */
|
|
57
|
+
declare function numberWord(n: number): string | null;
|
|
58
|
+
/**
|
|
59
|
+
* Raph's two default blanks (BLANKS, plan.src.html L5080): her weight and her next shots, the two that hold for any
|
|
60
|
+
* partner. His middle one ("1 chew a day of Embark Joint") names the partner's product, so it comes from the host.
|
|
61
|
+
*/
|
|
62
|
+
declare function defaultIntroBlanks(p: IntroPetWords): readonly EverfurIntroBlank[];
|
|
63
|
+
/** What the intro knows about the pet and its plan, read off the plan page. */
|
|
64
|
+
interface IntroFacts {
|
|
65
|
+
readonly pet: IntroPetWords;
|
|
66
|
+
/** The plan page's title ("Georgia's back plan"), the blanks card's header. */
|
|
67
|
+
readonly planTitle: string;
|
|
68
|
+
/** The vet who built the plan, only when the page says a vet reviewed it. */
|
|
69
|
+
readonly vetName: string | null;
|
|
70
|
+
/** How many daily tips the plan starts with (its routine's steps). */
|
|
71
|
+
readonly tips: number;
|
|
72
|
+
}
|
|
73
|
+
declare function introFacts(page: HealthPlanPage | null, petName?: string | null): IntroFacts;
|
|
74
|
+
/** Every line the intro draws, for one pet. An empty string is a line not drawn. */
|
|
75
|
+
interface IntroText {
|
|
76
|
+
readonly sheetLabel: {
|
|
77
|
+
readonly intro: string;
|
|
78
|
+
readonly records: string;
|
|
79
|
+
};
|
|
80
|
+
readonly back: string;
|
|
81
|
+
readonly skip: string;
|
|
82
|
+
readonly close: string;
|
|
83
|
+
readonly poweredBy: string;
|
|
84
|
+
readonly tabs: {
|
|
85
|
+
readonly eyebrow: string;
|
|
86
|
+
readonly title: string;
|
|
87
|
+
readonly lede: string;
|
|
88
|
+
readonly ask: string;
|
|
89
|
+
readonly plan: string;
|
|
90
|
+
readonly records: string;
|
|
91
|
+
readonly next: string;
|
|
92
|
+
/** Next with the pet's vet records already in: frame 1 is the only frame. */
|
|
93
|
+
readonly seePlan: string;
|
|
94
|
+
};
|
|
95
|
+
readonly ask: {
|
|
96
|
+
readonly title: string;
|
|
97
|
+
readonly lede: string;
|
|
98
|
+
readonly blanksPill: string;
|
|
99
|
+
readonly blankLabel: string;
|
|
100
|
+
readonly later: string;
|
|
101
|
+
readonly connect: string;
|
|
102
|
+
readonly fine: string;
|
|
103
|
+
readonly noVet: string;
|
|
104
|
+
};
|
|
105
|
+
readonly clinic: {
|
|
106
|
+
readonly title: string;
|
|
107
|
+
readonly search: string;
|
|
108
|
+
readonly searchLabel: string;
|
|
109
|
+
readonly list: string;
|
|
110
|
+
readonly more: string;
|
|
111
|
+
readonly request: string;
|
|
112
|
+
readonly upload: string;
|
|
113
|
+
readonly add: string;
|
|
114
|
+
};
|
|
115
|
+
readonly sent: {
|
|
116
|
+
readonly eyebrow: string;
|
|
117
|
+
readonly title: string;
|
|
118
|
+
readonly track: string;
|
|
119
|
+
readonly sentStep: string;
|
|
120
|
+
readonly sentTo: (clinic: string) => string;
|
|
121
|
+
readonly clinicStep: string;
|
|
122
|
+
readonly clinicEta: string;
|
|
123
|
+
readonly blanksStep: string;
|
|
124
|
+
readonly blanksDetail: string;
|
|
125
|
+
readonly lede: string;
|
|
126
|
+
readonly notify: string;
|
|
127
|
+
readonly notNow: string;
|
|
128
|
+
readonly fine: string;
|
|
129
|
+
};
|
|
130
|
+
readonly noVet: {
|
|
131
|
+
readonly title: string;
|
|
132
|
+
readonly lede: string;
|
|
133
|
+
readonly seePlan: string;
|
|
134
|
+
};
|
|
135
|
+
readonly toast: {
|
|
136
|
+
readonly on: string;
|
|
137
|
+
readonly off: string;
|
|
138
|
+
readonly landed: string;
|
|
139
|
+
};
|
|
140
|
+
readonly banner: {
|
|
141
|
+
readonly app: string;
|
|
142
|
+
readonly now: string;
|
|
143
|
+
readonly title: string;
|
|
144
|
+
readonly body: string;
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
interface IntroTextInput {
|
|
148
|
+
readonly facts: IntroFacts;
|
|
149
|
+
readonly copy: EverfurIntroCopy;
|
|
150
|
+
/** How many blanks the plan holds (the blanks the intro shows). */
|
|
151
|
+
readonly blanks: number;
|
|
152
|
+
/** The pet's results are not back yet (frame 1's waiting lines). */
|
|
153
|
+
readonly resultsPending: boolean;
|
|
154
|
+
}
|
|
155
|
+
/** The intro's lines for one pet. Pure. */
|
|
156
|
+
declare function introText(input: IntroTextInput): IntroText;
|
|
157
|
+
|
|
158
|
+
/** A clinic records request the member sent from the intro (or its records-mode entry). */
|
|
159
|
+
interface EverfurRecordsRequested {
|
|
160
|
+
readonly petRef: PetRef;
|
|
161
|
+
/** The clinic as the member picked it. The callback's only: the web's window event leaves it out. */
|
|
162
|
+
readonly clinicName: string;
|
|
163
|
+
/** The created request's id, or null when the host's own flow sent it. */
|
|
164
|
+
readonly requestId: string | null;
|
|
165
|
+
/** ISO 8601. */
|
|
166
|
+
readonly at: string;
|
|
167
|
+
}
|
|
168
|
+
/** The pet's vet records arrived while the member was here (the records read turned from none to some). */
|
|
169
|
+
interface EverfurRecordsLanded {
|
|
170
|
+
readonly petRef: PetRef;
|
|
171
|
+
/** ISO 8601. */
|
|
172
|
+
readonly at: string;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export { type EverfurIntroCopy as E, type IntroText as I, type EverfurIntroBlank as a, type EverfurRecordsRequested as b, EVERFUR_INTRO_COPY as c, type EverfurRecordsLanded as d, type IntroFacts as e, type IntroPetWords as f, type IntroTextInput as g, defaultIntroBlanks as h, introFacts as i, introPetWords as j, introText as k, numberWord as n };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** The window event names, with the details above. */
|
|
2
|
+
declare const EVERFUR_RECORDS_REQUESTED_EVENT = "everfur:records-requested";
|
|
3
|
+
declare const EVERFUR_RECORDS_LANDED_EVENT = "everfur:records-landed";
|
|
4
|
+
|
|
5
|
+
export { EVERFUR_RECORDS_LANDED_EVENT as E, EVERFUR_RECORDS_REQUESTED_EVENT as a };
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** The window event names, with the details above. */
|
|
2
|
+
declare const EVERFUR_RECORDS_REQUESTED_EVENT = "everfur:records-requested";
|
|
3
|
+
declare const EVERFUR_RECORDS_LANDED_EVENT = "everfur:records-landed";
|
|
4
|
+
|
|
5
|
+
export { EVERFUR_RECORDS_LANDED_EVENT as E, EVERFUR_RECORDS_REQUESTED_EVENT as a };
|
|
@@ -150,6 +150,13 @@ interface RecordForwardItem {
|
|
|
150
150
|
readonly title: string;
|
|
151
151
|
readonly detail: string | null;
|
|
152
152
|
readonly dueAt: string | null;
|
|
153
|
+
/**
|
|
154
|
+
* The care item's stable key (`dhpp_booster`), or null from a server older than the field. Never shown: `title` is
|
|
155
|
+
* the owner-facing name. Optional so an item built by hand without it still type-checks.
|
|
156
|
+
*/
|
|
157
|
+
readonly careItemKey?: string | null;
|
|
158
|
+
/** Where the due date came from: the pet's vet (`vet_stated`) or an Everfur default rule; null when unsaid. */
|
|
159
|
+
readonly dueDateSource?: 'vet_stated' | 'derived_default_rule' | null;
|
|
153
160
|
}
|
|
154
161
|
/** Metadata for one source document, keyed by its id. No raw bytes / provenance. */
|
|
155
162
|
interface RecordDocumentMeta {
|
|
@@ -216,4 +223,4 @@ type RecordsDenialReason = 'consent_required' | 'session_required' | 'entitlemen
|
|
|
216
223
|
/** Read the records denial reason off any settled error, defensively (null when absent). */
|
|
217
224
|
declare function recordsDenialReasonOf(error: EverfurError | null): RecordsDenialReason | null;
|
|
218
225
|
|
|
219
|
-
export { type CreateUploadRequestInput as C, type GrantConsentInput as G, type RecordDocumentMeta as R, type UploadedDocument as U, type RecordEntity as a, type RecordOrigin as b, type RecordForwardItem as c, type RecordsRequestView as d, type
|
|
226
|
+
export { type CreateUploadRequestInput as C, type GrantConsentInput as G, type RecordDocumentMeta as R, type UploadedDocument as U, type RecordEntity as a, type RecordOrigin as b, type RecordForwardItem as c, type RecordsRequestView as d, type RecordsRequestGroupView as e, type RecordsView as f, type ConsentState as g, type RecordsDenialReason as h, type RecordsRequestStatus as i, type RecordsSimpleStatus as j, RECORDS_TERMINAL as k, type RecordIdentityField as l, type RecordSeries as m, type RecordSeriesPoint as n, isTerminalStatus as o, recordsDenialReasonOf as r };
|
|
@@ -150,6 +150,13 @@ interface RecordForwardItem {
|
|
|
150
150
|
readonly title: string;
|
|
151
151
|
readonly detail: string | null;
|
|
152
152
|
readonly dueAt: string | null;
|
|
153
|
+
/**
|
|
154
|
+
* The care item's stable key (`dhpp_booster`), or null from a server older than the field. Never shown: `title` is
|
|
155
|
+
* the owner-facing name. Optional so an item built by hand without it still type-checks.
|
|
156
|
+
*/
|
|
157
|
+
readonly careItemKey?: string | null;
|
|
158
|
+
/** Where the due date came from: the pet's vet (`vet_stated`) or an Everfur default rule; null when unsaid. */
|
|
159
|
+
readonly dueDateSource?: 'vet_stated' | 'derived_default_rule' | null;
|
|
153
160
|
}
|
|
154
161
|
/** Metadata for one source document, keyed by its id. No raw bytes / provenance. */
|
|
155
162
|
interface RecordDocumentMeta {
|
|
@@ -216,4 +223,4 @@ type RecordsDenialReason = 'consent_required' | 'session_required' | 'entitlemen
|
|
|
216
223
|
/** Read the records denial reason off any settled error, defensively (null when absent). */
|
|
217
224
|
declare function recordsDenialReasonOf(error: EverfurError | null): RecordsDenialReason | null;
|
|
218
225
|
|
|
219
|
-
export { type CreateUploadRequestInput as C, type GrantConsentInput as G, type RecordDocumentMeta as R, type UploadedDocument as U, type RecordEntity as a, type RecordOrigin as b, type RecordForwardItem as c, type RecordsRequestView as d, type
|
|
226
|
+
export { type CreateUploadRequestInput as C, type GrantConsentInput as G, type RecordDocumentMeta as R, type UploadedDocument as U, type RecordEntity as a, type RecordOrigin as b, type RecordForwardItem as c, type RecordsRequestView as d, type RecordsRequestGroupView as e, type RecordsView as f, type ConsentState as g, type RecordsDenialReason as h, type RecordsRequestStatus as i, type RecordsSimpleStatus as j, RECORDS_TERMINAL as k, type RecordIdentityField as l, type RecordSeries as m, type RecordSeriesPoint as n, isTerminalStatus as o, recordsDenialReasonOf as r };
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { E as EverfurNotificationsOptions, a as EverfurNotificationsState } from '../parse.d-
|
|
2
|
-
export { D as DevicePlatform, b as EVERFUR_NOTIFICATION_EVENT_TYPES, c as EVERFUR_NOTIFICATION_TARGET_KINDS, d as EVERFUR_NOTIFICATION_VERSION, e as EverfurNotification, f as EverfurNotificationEventType, g as EverfurNotificationTarget, h as EverfurNotificationTargetKind, i as EverfurNotificationsStatus, N as NOTIFICATIONS_REASON_MESSAGES, j as NotificationPreferences, k as NotificationPreferencesInput, l as NotificationsClient, m as NotificationsReasonCode, n as NotificationsRuntime, P as PushProvider, R as RegisterDeviceInput, o as RegisteredDevice, p as createNotificationsClient, q as explainNotificationsReason, r as parseEverfurNotification, u as useEverfurNotificationsClient } from '../parse.d-
|
|
1
|
+
import { E as EverfurNotificationsOptions, a as EverfurNotificationsState } from '../parse.d-EmsgOUMQ.cjs';
|
|
2
|
+
export { D as DevicePlatform, b as EVERFUR_NOTIFICATION_EVENT_TYPES, c as EVERFUR_NOTIFICATION_TARGET_KINDS, d as EVERFUR_NOTIFICATION_VERSION, e as EverfurNotification, f as EverfurNotificationEventType, g as EverfurNotificationTarget, h as EverfurNotificationTargetKind, i as EverfurNotificationsStatus, N as NOTIFICATIONS_REASON_MESSAGES, j as NotificationPreferences, k as NotificationPreferencesInput, l as NotificationsClient, m as NotificationsReasonCode, n as NotificationsRuntime, P as PushProvider, R as RegisterDeviceInput, o as RegisteredDevice, p as createNotificationsClient, q as explainNotificationsReason, r as parseEverfurNotification, u as useEverfurNotificationsClient } from '../parse.d-EmsgOUMQ.cjs';
|
|
3
3
|
export { V as VetVisitIntent } from '../visitIntent.d-D7_yVp1I.cjs';
|
|
4
|
-
export { A as AuthContext, I as IdentityProvider, M as MintedToken, T as TokenProvider } from '../identity.d-
|
|
5
|
-
export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFrame, D as DeltaFrame, c as DoneFrame, E as ErrorFrame, d as EverfurRequest, e as EverfurRequestBase, F as Frame, f as FrameBase, g as FrameKind, H as HeartbeatFrame, h as HttpMethod, M as MultipartBody, T as TransportPort, U as UnknownFrame, i as UrgencyLevel } from '../config.d-
|
|
4
|
+
export { A as AuthContext, I as IdentityProvider, M as MintedToken, T as TokenProvider } from '../identity.d-CJfnWOdH.cjs';
|
|
5
|
+
export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFrame, D as DeltaFrame, c as DoneFrame, E as ErrorFrame, d as EverfurRequest, e as EverfurRequestBase, F as Frame, f as FrameBase, g as FrameKind, H as HeartbeatFrame, h as HttpMethod, M as MultipartBody, T as TransportPort, U as UnknownFrame, i as UrgencyLevel } from '../config.d-DJ4mvf_w.cjs';
|
|
6
6
|
export { B as Brand, C as ConversationId, P as PetRef, R as RecordsRequestId, U as UserRef, _ as __brand } from '../ids.d-B2GAAifq.cjs';
|
|
7
7
|
export { E as EverfurError, a as EverfurErrorCategory, b as EverfurErrorCode } from '../EverfurError.d-8NHtlgzA.cjs';
|
|
8
8
|
export { E as EverfurResult } from '../EverfurResult.d-BFH-3s6E.cjs';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { E as EverfurNotificationsOptions, a as EverfurNotificationsState } from '../parse.d-
|
|
2
|
-
export { D as DevicePlatform, b as EVERFUR_NOTIFICATION_EVENT_TYPES, c as EVERFUR_NOTIFICATION_TARGET_KINDS, d as EVERFUR_NOTIFICATION_VERSION, e as EverfurNotification, f as EverfurNotificationEventType, g as EverfurNotificationTarget, h as EverfurNotificationTargetKind, i as EverfurNotificationsStatus, N as NOTIFICATIONS_REASON_MESSAGES, j as NotificationPreferences, k as NotificationPreferencesInput, l as NotificationsClient, m as NotificationsReasonCode, n as NotificationsRuntime, P as PushProvider, R as RegisterDeviceInput, o as RegisteredDevice, p as createNotificationsClient, q as explainNotificationsReason, r as parseEverfurNotification, u as useEverfurNotificationsClient } from '../parse.d-
|
|
1
|
+
import { E as EverfurNotificationsOptions, a as EverfurNotificationsState } from '../parse.d-COt1qVA6.js';
|
|
2
|
+
export { D as DevicePlatform, b as EVERFUR_NOTIFICATION_EVENT_TYPES, c as EVERFUR_NOTIFICATION_TARGET_KINDS, d as EVERFUR_NOTIFICATION_VERSION, e as EverfurNotification, f as EverfurNotificationEventType, g as EverfurNotificationTarget, h as EverfurNotificationTargetKind, i as EverfurNotificationsStatus, N as NOTIFICATIONS_REASON_MESSAGES, j as NotificationPreferences, k as NotificationPreferencesInput, l as NotificationsClient, m as NotificationsReasonCode, n as NotificationsRuntime, P as PushProvider, R as RegisterDeviceInput, o as RegisteredDevice, p as createNotificationsClient, q as explainNotificationsReason, r as parseEverfurNotification, u as useEverfurNotificationsClient } from '../parse.d-COt1qVA6.js';
|
|
3
3
|
export { V as VetVisitIntent } from '../visitIntent.d-D7_yVp1I.js';
|
|
4
|
-
export { A as AuthContext, I as IdentityProvider, M as MintedToken, T as TokenProvider } from '../identity.d-
|
|
5
|
-
export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFrame, D as DeltaFrame, c as DoneFrame, E as ErrorFrame, d as EverfurRequest, e as EverfurRequestBase, F as Frame, f as FrameBase, g as FrameKind, H as HeartbeatFrame, h as HttpMethod, M as MultipartBody, T as TransportPort, U as UnknownFrame, i as UrgencyLevel } from '../config.d-
|
|
4
|
+
export { A as AuthContext, I as IdentityProvider, M as MintedToken, T as TokenProvider } from '../identity.d-BePPZ7Uv.js';
|
|
5
|
+
export { A as AcceptedFrame, a as AnalysisCompleteFrame, b as AnalysisStartedFrame, D as DeltaFrame, c as DoneFrame, E as ErrorFrame, d as EverfurRequest, e as EverfurRequestBase, F as Frame, f as FrameBase, g as FrameKind, H as HeartbeatFrame, h as HttpMethod, M as MultipartBody, T as TransportPort, U as UnknownFrame, i as UrgencyLevel } from '../config.d-MX7IKP2f.js';
|
|
6
6
|
export { B as Brand, C as ConversationId, P as PetRef, R as RecordsRequestId, U as UserRef, _ as __brand } from '../ids.d-B2GAAifq.js';
|
|
7
7
|
export { E as EverfurError, a as EverfurErrorCategory, b as EverfurErrorCode } from '../EverfurError.d-8NHtlgzA.js';
|
|
8
8
|
export { E as EverfurResult } from '../EverfurResult.d-D_-254ZY.js';
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { E as EverfurError } from './EverfurError.d-8NHtlgzA.cjs';
|
|
2
2
|
import { E as EverfurResult } from './EverfurResult.d-BFH-3s6E.cjs';
|
|
3
|
-
import { R as RequestFunnel } from './requestFunnel.d-
|
|
4
|
-
import { A as AuthContext } from './identity.d-
|
|
3
|
+
import { R as RequestFunnel } from './requestFunnel.d-RZex94XX.cjs';
|
|
4
|
+
import { A as AuthContext } from './identity.d-CJfnWOdH.cjs';
|
|
5
5
|
import { P as PetRef, U as UserRef } from './ids.d-B2GAAifq.cjs';
|
|
6
6
|
import { E as ErrorPolicyPort } from './ErrorPolicyPort.d-DirW9hgO.cjs';
|
|
7
7
|
|
|
@@ -11,6 +11,7 @@ declare const TEXTING_COPY: Readonly<{
|
|
|
11
11
|
loading: "Loading";
|
|
12
12
|
retry: "Try again";
|
|
13
13
|
signedOut: "Sign in required";
|
|
14
|
+
close: "Close";
|
|
14
15
|
phoneLabel: "Mobile number";
|
|
15
16
|
phoneHint: "We'll text a 6-digit code to confirm it's you.";
|
|
16
17
|
phoneInvalid: "That doesn't look like a valid number. Check it and the country, then try again.";
|
|
@@ -52,6 +53,14 @@ declare const TEXTING_COPY: Readonly<{
|
|
|
52
53
|
genericFailure: "That didn't go through. Please try again.";
|
|
53
54
|
/** Followed by the request id, for a support conversation. */
|
|
54
55
|
supportReference: "Support reference:";
|
|
56
|
+
/**
|
|
57
|
+
* The ask (the in-chat line's two chips and the app-open pop-up, `EverfurTextingPrompt`): the consumer's invitation
|
|
58
|
+
* card (`promptBody` / `promptAccept` / `promptDismiss`, Aman 2026-09-15; everfur-mobile copy.ts:120-122). The
|
|
59
|
+
* in-chat line's chips are the same two words, as in both consumer apps.
|
|
60
|
+
*/
|
|
61
|
+
promptBody: "Ask questions about your pet by text message, anytime. No app needed.";
|
|
62
|
+
promptAccept: "Turn on SMS Chat";
|
|
63
|
+
promptDismiss: "Not now";
|
|
55
64
|
/**
|
|
56
65
|
* 403 `phone_country_not_allowed`, a valid number from a country the tenant does not text. The consumer screen
|
|
57
66
|
* refuses a valid number whose own country is outside its list (everfur-frontend app/product/sms-chat/phone.ts:36)
|
|
@@ -93,6 +102,15 @@ declare const TEXTING_BRAND_COPY: Readonly<{
|
|
|
93
102
|
statusActive: (brand: string) => string;
|
|
94
103
|
/** consumer `optedOutBody` */
|
|
95
104
|
optedOutBody: (brand: string) => string;
|
|
105
|
+
/** consumer `promptTitle`: 'Ask Everfur by text, for every pet' (the app-open pop-up's title). */
|
|
106
|
+
promptTitle: (brand: string) => string;
|
|
107
|
+
/**
|
|
108
|
+
* consumer `chatAskLine`: 'Want answers by text too? Add your mobile number and you can text Everfur about your pet
|
|
109
|
+
* anytime.' (owner approved 2026-09-30; everfur-mobile copy.ts:128). The in-chat ask's line.
|
|
110
|
+
*/
|
|
111
|
+
chatAskLine: (brand: string) => string;
|
|
112
|
+
/** consumer `statusUnrecorded`: "Verified. You're all set to text Everfur." The in-chat ask's closing line. */
|
|
113
|
+
chatAskVerified: (brand: string) => string;
|
|
96
114
|
}>;
|
|
97
115
|
/** Every placeholder key in `TEXTING_COPY`, so the list a reviewer approves cannot drift from the file. */
|
|
98
116
|
declare const TEXTING_COPY_PLACEHOLDERS: readonly (keyof typeof TEXTING_COPY)[];
|
|
@@ -302,6 +320,104 @@ declare function useEverfurTextingRepository(): TextingRepository;
|
|
|
302
320
|
/** The member's texting opt-in, step by step. `EverfurTextingOptIn` renders it on either host. */
|
|
303
321
|
declare function useEverfurTexting(): EverfurTextingState;
|
|
304
322
|
|
|
323
|
+
type TextingAskStage = 'hidden' | 'offered' | 'enrolling' | 'verified' | 'dismissed';
|
|
324
|
+
interface TextingAskOptions {
|
|
325
|
+
/** The surface wants the ask (the chat's `chatTextingAsk`). Default true. */
|
|
326
|
+
readonly enabled?: boolean;
|
|
327
|
+
/** The surface is ready for it (the chat: an answer on screen, nothing in flight). Default true. */
|
|
328
|
+
readonly ready?: boolean;
|
|
329
|
+
/** Which surface draws it. A showing belongs to the surface that offered it; the other draws nothing. Default `prompt`. */
|
|
330
|
+
readonly surface?: 'chat' | 'prompt';
|
|
331
|
+
}
|
|
332
|
+
/** The ask's state and its answers. Every function is safe to call in any stage (a call out of turn does nothing). */
|
|
333
|
+
interface TextingAsk {
|
|
334
|
+
readonly stage: TextingAskStage;
|
|
335
|
+
/** The tenant's brand name (its texting profile), for the brand-named lines. Empty while hidden. */
|
|
336
|
+
readonly brand: string;
|
|
337
|
+
/** Which ask this showing is (1, 2 or 3). */
|
|
338
|
+
readonly askNumber: 1 | 2 | 3;
|
|
339
|
+
/** The enrollment underneath (the opt-in's own state and steps). */
|
|
340
|
+
readonly texting: EverfurTextingState;
|
|
341
|
+
/** "Turn on SMS Chat": open the number entry. Answers nothing yet. */
|
|
342
|
+
accept(): void;
|
|
343
|
+
/** "Not now": one ask, unless this showing was already answered. The pop-up's close hands the ask to the chat. */
|
|
344
|
+
dismiss(): void;
|
|
345
|
+
/** The close control on the number entry: back to the two answers. Answers nothing. */
|
|
346
|
+
close(): void;
|
|
347
|
+
/** Text a code to what the member typed (a code request counts as accepting, once per showing). */
|
|
348
|
+
start(phone: string): Promise<boolean>;
|
|
349
|
+
}
|
|
350
|
+
/** The texting ask for the member under the provider. `EverfurChat` and `EverfurTextingPrompt` draw it. */
|
|
351
|
+
declare function useTextingAsk(options?: TextingAskOptions): TextingAsk;
|
|
352
|
+
|
|
353
|
+
/** What the member's identity read said: still unknown (loading, refused, not read), none yet, or one exists. */
|
|
354
|
+
type TextingAskIdentity = 'unknown' | 'none' | 'exists';
|
|
355
|
+
interface TextingAskDueInput {
|
|
356
|
+
/** The surface wants the ask: the chat's `chatTextingAsk`, true for the pop-up. */
|
|
357
|
+
readonly enabled: boolean;
|
|
358
|
+
readonly capabilityGranted: boolean;
|
|
359
|
+
readonly hasProfile: boolean;
|
|
360
|
+
readonly signedIn: boolean;
|
|
361
|
+
/** The schedule was readable and says this is an eligible ask. */
|
|
362
|
+
readonly scheduleEligible: boolean;
|
|
363
|
+
readonly offeredThisSession: boolean;
|
|
364
|
+
readonly identity: TextingAskIdentity;
|
|
365
|
+
/** The chat: a message on screen and nothing in flight. True for the pop-up. */
|
|
366
|
+
readonly surfaceReady: boolean;
|
|
367
|
+
}
|
|
368
|
+
interface TextingAskDue {
|
|
369
|
+
readonly readEnabled: boolean;
|
|
370
|
+
readonly due: boolean;
|
|
371
|
+
}
|
|
372
|
+
declare function resolveTextingAskDue(input: TextingAskDueInput): TextingAskDue;
|
|
373
|
+
/** The parts of a chat message the thread rule reads (a `ChatMessage` is one). */
|
|
374
|
+
interface TextingAskThreadMessage {
|
|
375
|
+
readonly role: string;
|
|
376
|
+
readonly text: string;
|
|
377
|
+
readonly pending?: boolean | undefined;
|
|
378
|
+
/** A platform check-in asks the member something; it is not an answer. */
|
|
379
|
+
readonly checkin?: unknown;
|
|
380
|
+
readonly urgencyLevel?: string | null | undefined;
|
|
381
|
+
}
|
|
382
|
+
/** The chat state the thread rule reads (`UseEverfurChatState` is one). */
|
|
383
|
+
interface TextingAskThreadState {
|
|
384
|
+
readonly messages: ReadonlyArray<TextingAskThreadMessage>;
|
|
385
|
+
readonly status?: string | undefined;
|
|
386
|
+
readonly stopped?: boolean | undefined;
|
|
387
|
+
readonly isBootstrapping?: boolean | undefined;
|
|
388
|
+
readonly isLoadingHistory?: boolean | undefined;
|
|
389
|
+
readonly isStreaming?: boolean | undefined;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* The chat's thread is ready for the ask: the line lands after an ANSWER (the consumer rule, everfur-mobile
|
|
393
|
+
* useSmsChatAsk.ts). Nothing is opening, loading or streaming, and the latest turn is a completed Everfur answer:
|
|
394
|
+
* the last row is the assistant's, settled and not empty, not a check-in, and not urgent (`URGENT_LEVELS`); the turn
|
|
395
|
+
* neither failed (the error card) nor was stopped. A vet's message is not Everfur's answer. This only gates the
|
|
396
|
+
* OFFER: a line already offered stays when a later turn fails (the ask's session entry holds it).
|
|
397
|
+
*/
|
|
398
|
+
declare function textingAskThreadReady(chat: TextingAskThreadState): boolean;
|
|
399
|
+
|
|
400
|
+
/** The KvPort key (the web port adds its own `everfur:` namespace). */
|
|
401
|
+
declare const TEXTING_ASK_SCHEDULE_KEY = "everfur.texting.askSchedule.v1";
|
|
402
|
+
/** Flat snooze after every ask. Not a backoff. */
|
|
403
|
+
declare const TEXTING_ASK_SNOOZE_MS: number;
|
|
404
|
+
/** Lifetime cap on asks. */
|
|
405
|
+
declare const TEXTING_ASK_MAX_ASKS = 3;
|
|
406
|
+
/** One member's record. */
|
|
407
|
+
interface TextingAskEntry {
|
|
408
|
+
readonly askCount: number;
|
|
409
|
+
/** Do not ask before this instant (epoch ms). Null when never asked. */
|
|
410
|
+
readonly nextAskAt: number | null;
|
|
411
|
+
readonly completed: boolean;
|
|
412
|
+
}
|
|
413
|
+
type TextingAskScheduleRead = {
|
|
414
|
+
readonly status: 'ok';
|
|
415
|
+
readonly entry: TextingAskEntry;
|
|
416
|
+
} | {
|
|
417
|
+
readonly status: 'unreadable';
|
|
418
|
+
};
|
|
419
|
+
declare function isTextingAskEligible(read: TextingAskScheduleRead, now: number): boolean;
|
|
420
|
+
|
|
305
421
|
/**
|
|
306
422
|
* The line for a refused step. The consumer deck's own words per refusal; never the raw server message. For a refused
|
|
307
423
|
* code, pass the snapshot's `codeRefusal` so a typo, an expired code and a used-up code read differently; without it
|
|
@@ -322,4 +438,4 @@ declare function textingOptedOutBody(identity: EverfurTextingIdentity | null, br
|
|
|
322
438
|
/** A +1 E.164 number as a member reads it: `+14155550134` becomes `(415) 555-0134`. Anything else is unchanged. */
|
|
323
439
|
declare function formatTextingPhone(e164: string | null): string;
|
|
324
440
|
|
|
325
|
-
export {
|
|
441
|
+
export { toTextingE164 as $, type TextingAskStage as A, type TextingAskThreadMessage as B, COPY_PLACEHOLDER_PREFIX as C, type TextingAskThreadState as D, type EverfurTextingViewStatus as E, type TextingCodeRefusal as F, TextingController as G, type TextingPhase as H, type TextingRepository as I, type TextingRepositoryDeps as J, type TextingRuntime as K, type TextingSnapshot as L, createTextingRepository as M, createTextingRepositoryOver as N, formatTextingPhone as O, isE164 as P, isTextingAskEligible as Q, parseTextingProfile as R, resolveTextingAskDue as S, type TextingCopy as T, textingAskThreadReady as U, textingErrorText as V, textingIdentityFromWire as W, textingInputProblemText as X, textingOptedOutBody as Y, textingReasonOf as Z, textingSupportText as _, type TextingBrandCopy as a, useEverfurTexting as a0, useEverfurTextingProfile as a1, useEverfurTextingRepository as a2, useTextingAsk as a3, validateTextingCode as a4, validateTextingEnroll as a5, type TextingAsk as b, EVERFUR_TEXTING_STATUSES as c, type EverfurTextingChallenge as d, type EverfurTextingIdentity as e, type EverfurTextingInputProblem as f, type EverfurTextingProfile as g, type EverfurTextingReason as h, type EverfurTextingState as i, type EverfurTextingStatus as j, type EverfurTextingVerificationInput as k, TEXTING_ASK_MAX_ASKS as l, TEXTING_ASK_SCHEDULE_KEY as m, TEXTING_ASK_SNOOZE_MS as n, TEXTING_BRAND_COPY as o, TEXTING_CODE_PATTERN as p, TEXTING_COPY as q, TEXTING_COPY_PLACEHOLDERS as r, TEXTING_UI_CODE_LENGTH as s, type TextingAction as t, type TextingAskDue as u, type TextingAskDueInput as v, type TextingAskEntry as w, type TextingAskIdentity as x, type TextingAskOptions as y, type TextingAskScheduleRead as z };
|