@getrheo/contracts 1.0.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.
Files changed (81) hide show
  1. package/dist/animations.d.ts +226 -0
  2. package/dist/animations.js +1160 -0
  3. package/dist/animations.js.map +1 -0
  4. package/dist/appIntegrations.d.ts +175 -0
  5. package/dist/appIntegrations.js +60 -0
  6. package/dist/appIntegrations.js.map +1 -0
  7. package/dist/billingPeriod.d.ts +26 -0
  8. package/dist/billingPeriod.js +39 -0
  9. package/dist/billingPeriod.js.map +1 -0
  10. package/dist/canvasEditorGates.d.ts +81 -0
  11. package/dist/canvasEditorGates.js +1460 -0
  12. package/dist/canvasEditorGates.js.map +1 -0
  13. package/dist/constants/index.d.ts +30 -0
  14. package/dist/constants/index.js +67 -0
  15. package/dist/constants/index.js.map +1 -0
  16. package/dist/dashboard.d.ts +181856 -0
  17. package/dist/dashboard.js +3348 -0
  18. package/dist/dashboard.js.map +1 -0
  19. package/dist/decisions.d.ts +575 -0
  20. package/dist/decisions.js +1209 -0
  21. package/dist/decisions.js.map +1 -0
  22. package/dist/events.d.ts +231 -0
  23. package/dist/events.js +63 -0
  24. package/dist/events.js.map +1 -0
  25. package/dist/experiments-DN8pQa_D.d.ts +530 -0
  26. package/dist/externalSurfaceIntegrations.d.ts +20 -0
  27. package/dist/externalSurfaceIntegrations.js +49 -0
  28. package/dist/externalSurfaceIntegrations.js.map +1 -0
  29. package/dist/externalSurfaces.d.ts +177 -0
  30. package/dist/externalSurfaces.js +1190 -0
  31. package/dist/externalSurfaces.js.map +1 -0
  32. package/dist/fields.d.ts +8 -0
  33. package/dist/fields.js +15 -0
  34. package/dist/fields.js.map +1 -0
  35. package/dist/flowManifestSchema-CtqygXCK.d.ts +50857 -0
  36. package/dist/flowTemplateComments.d.ts +23 -0
  37. package/dist/flowTemplateComments.js +14 -0
  38. package/dist/flowTemplateComments.js.map +1 -0
  39. package/dist/flowTemplates.d.ts +22 -0
  40. package/dist/flowTemplates.js +73 -0
  41. package/dist/flowTemplates.js.map +1 -0
  42. package/dist/identity.d.ts +35 -0
  43. package/dist/identity.js +18 -0
  44. package/dist/identity.js.map +1 -0
  45. package/dist/imageContentType.d.ts +11 -0
  46. package/dist/imageContentType.js +54 -0
  47. package/dist/imageContentType.js.map +1 -0
  48. package/dist/index.d.ts +224 -0
  49. package/dist/index.js +4557 -0
  50. package/dist/index.js.map +1 -0
  51. package/dist/layerUnion-BzXoAJLY.d.ts +34 -0
  52. package/dist/layers.d.ts +89844 -0
  53. package/dist/layers.js +1507 -0
  54. package/dist/layers.js.map +1 -0
  55. package/dist/layout-D0LpaKG-.d.ts +12896 -0
  56. package/dist/localized.d.ts +17 -0
  57. package/dist/localized.js +18 -0
  58. package/dist/localized.js.map +1 -0
  59. package/dist/manifest.d.ts +22192 -0
  60. package/dist/manifest.js +2163 -0
  61. package/dist/manifest.js.map +1 -0
  62. package/dist/media.d.ts +53 -0
  63. package/dist/media.js +55 -0
  64. package/dist/media.js.map +1 -0
  65. package/dist/planEntitlements.d.ts +65 -0
  66. package/dist/planEntitlements.js +117 -0
  67. package/dist/planEntitlements.js.map +1 -0
  68. package/dist/publish-exports.json +102 -0
  69. package/dist/screens.d.ts +33586 -0
  70. package/dist/screens.js +1439 -0
  71. package/dist/screens.js.map +1 -0
  72. package/dist/sdk.d.ts +145942 -0
  73. package/dist/sdk.js +3424 -0
  74. package/dist/sdk.js.map +1 -0
  75. package/dist/sdkAttributes.d.ts +11 -0
  76. package/dist/sdkAttributes.js +17 -0
  77. package/dist/sdkAttributes.js.map +1 -0
  78. package/dist/workspaceCapabilities.d.ts +15 -0
  79. package/dist/workspaceCapabilities.js +116 -0
  80. package/dist/workspaceCapabilities.js.map +1 -0
  81. package/package.json +162 -0
@@ -0,0 +1,23 @@
1
+ import { z } from 'zod';
2
+
3
+ /** Default canvas comment pin seeded when a flow is created from a flow template. */
4
+ declare const FlowTemplateDefaultCommentSchema: z.ZodObject<{
5
+ positionX: z.ZodNumber;
6
+ positionY: z.ZodNumber;
7
+ body: z.ZodString;
8
+ }, "strip", z.ZodTypeAny, {
9
+ body: string;
10
+ positionX: number;
11
+ positionY: number;
12
+ }, {
13
+ body: string;
14
+ positionX: number;
15
+ positionY: number;
16
+ }>;
17
+ type FlowTemplateDefaultComment = z.infer<typeof FlowTemplateDefaultCommentSchema>;
18
+ /** Author label shown for threads seeded from a flow template. */
19
+ declare const TEMPLATE_COMMENT_AUTHOR_LABEL = "Template";
20
+ declare const FlowCommentThreadSourceSchema: z.ZodEnum<["user", "template"]>;
21
+ type FlowCommentThreadSource = z.infer<typeof FlowCommentThreadSourceSchema>;
22
+
23
+ export { type FlowCommentThreadSource, FlowCommentThreadSourceSchema, type FlowTemplateDefaultComment, FlowTemplateDefaultCommentSchema, TEMPLATE_COMMENT_AUTHOR_LABEL };
@@ -0,0 +1,14 @@
1
+ import { z } from 'zod';
2
+
3
+ // src/flowTemplateComments.ts
4
+ var FlowTemplateDefaultCommentSchema = z.object({
5
+ positionX: z.number().finite(),
6
+ positionY: z.number().finite(),
7
+ body: z.string().trim().min(1).max(8e3)
8
+ });
9
+ var TEMPLATE_COMMENT_AUTHOR_LABEL = "Template";
10
+ var FlowCommentThreadSourceSchema = z.enum(["user", "template"]);
11
+
12
+ export { FlowCommentThreadSourceSchema, FlowTemplateDefaultCommentSchema, TEMPLATE_COMMENT_AUTHOR_LABEL };
13
+ //# sourceMappingURL=flowTemplateComments.js.map
14
+ //# sourceMappingURL=flowTemplateComments.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flowTemplateComments.ts"],"names":[],"mappings":";;;AAGO,IAAM,gCAAA,GAAmC,EAAE,MAAA,CAAO;AAAA,EACvD,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,MAAA,EAAO;AAAA,EAC7B,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,MAAA,EAAO;AAAA,EAC7B,IAAA,EAAM,CAAA,CAAE,MAAA,EAAO,CAAE,IAAA,GAAO,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAI;AACzC,CAAC;AAIM,IAAM,6BAAA,GAAgC;AAEtC,IAAM,gCAAgC,CAAA,CAAE,IAAA,CAAK,CAAC,MAAA,EAAQ,UAAU,CAAC","file":"flowTemplateComments.js","sourcesContent":["import { z } from 'zod';\n\n/** Default canvas comment pin seeded when a flow is created from a flow template. */\nexport const FlowTemplateDefaultCommentSchema = z.object({\n positionX: z.number().finite(),\n positionY: z.number().finite(),\n body: z.string().trim().min(1).max(8000),\n});\nexport type FlowTemplateDefaultComment = z.infer<typeof FlowTemplateDefaultCommentSchema>;\n\n/** Author label shown for threads seeded from a flow template. */\nexport const TEMPLATE_COMMENT_AUTHOR_LABEL = 'Template';\n\nexport const FlowCommentThreadSourceSchema = z.enum(['user', 'template']);\nexport type FlowCommentThreadSource = z.infer<typeof FlowCommentThreadSourceSchema>;\n"]}
@@ -0,0 +1,22 @@
1
+ import { z } from 'zod';
2
+
3
+ /** Dashboard-only identifiers for server-generated onboarding manifests. */
4
+ declare const FLOW_TEMPLATE_IDS: readonly ["stories", "language_learning", "fitness", "win_back", "feedback", "word_learning", "journal_onboarding"];
5
+ type FlowTemplateId = (typeof FLOW_TEMPLATE_IDS)[number];
6
+ declare const FlowTemplateIdSchema: z.ZodEnum<["stories", "language_learning", "fitness", "win_back", "feedback", "word_learning", "journal_onboarding"]>;
7
+ /** Dashboard template-picker icon id (maps to Lucide in FlowTemplatePicker UI only; not manifest icon layers). */
8
+ type FlowTemplateCatalogIcon = 'circle-play' | 'languages' | 'sparkles' | 'activity' | 'gift' | 'message-square' | 'book-open' | 'notebook-pen';
9
+ declare const FLOW_TEMPLATE_CATEGORIES: readonly ["engagement", "onboarding"];
10
+ type FlowTemplateCategory = (typeof FLOW_TEMPLATE_CATEGORIES)[number];
11
+ declare const FLOW_TEMPLATE_CATEGORY_LABELS: Record<FlowTemplateCategory, string>;
12
+ type FlowTemplateCatalogEntry = {
13
+ id: FlowTemplateId;
14
+ title: string;
15
+ description: string;
16
+ icon: FlowTemplateCatalogIcon;
17
+ category: FlowTemplateCategory;
18
+ };
19
+ /** Compact metadata for dashboard template picker (no manifest payloads). */
20
+ declare const FLOW_TEMPLATE_CATALOG: FlowTemplateCatalogEntry[];
21
+
22
+ export { FLOW_TEMPLATE_CATALOG, FLOW_TEMPLATE_CATEGORIES, FLOW_TEMPLATE_CATEGORY_LABELS, FLOW_TEMPLATE_IDS, type FlowTemplateCatalogEntry, type FlowTemplateCatalogIcon, type FlowTemplateCategory, type FlowTemplateId, FlowTemplateIdSchema };
@@ -0,0 +1,73 @@
1
+ import { z } from 'zod';
2
+
3
+ // src/flowTemplates.ts
4
+ var FLOW_TEMPLATE_IDS = [
5
+ "stories",
6
+ "language_learning",
7
+ "fitness",
8
+ "win_back",
9
+ "feedback",
10
+ "word_learning",
11
+ "journal_onboarding"
12
+ ];
13
+ var FlowTemplateIdSchema = z.enum(FLOW_TEMPLATE_IDS);
14
+ var FLOW_TEMPLATE_CATEGORIES = ["engagement", "onboarding"];
15
+ var FLOW_TEMPLATE_CATEGORY_LABELS = {
16
+ engagement: "Engagement",
17
+ onboarding: "Onboarding"
18
+ };
19
+ var FLOW_TEMPLATE_CATALOG = [
20
+ {
21
+ id: "stories",
22
+ title: "Stories",
23
+ description: "Full-screen video segments with progress bars and tap-to-advance.",
24
+ icon: "circle-play",
25
+ category: "engagement"
26
+ },
27
+ {
28
+ id: "language_learning",
29
+ title: "Language learning",
30
+ description: "Duolingo-style onboarding: language pick, daily goal, name, and profile setup with progress bars.",
31
+ icon: "languages",
32
+ category: "onboarding"
33
+ },
34
+ {
35
+ id: "fitness",
36
+ title: "Fitness & health",
37
+ description: "Fitness & health onboarding: Apple Health connect, strain/recovery/sleep education, and personalization quiz.",
38
+ icon: "activity",
39
+ category: "onboarding"
40
+ },
41
+ {
42
+ id: "win_back",
43
+ title: "Win-back",
44
+ description: "Churn flow: retention, cancel survey, discount offer, and confirmation (5 screens).",
45
+ icon: "gift",
46
+ category: "engagement"
47
+ },
48
+ {
49
+ id: "feedback",
50
+ title: "Feedback",
51
+ description: "In-app survey: satisfaction scale, topic picker, open feedback, and NPS \u2014 inspired by Craft and TextNow.",
52
+ icon: "message-square",
53
+ category: "engagement"
54
+ },
55
+ {
56
+ id: "word_learning",
57
+ title: "Word learning",
58
+ description: "Word-learning onboarding: personalization quiz, notifications, themes, goals, and topics (15 screens).",
59
+ icon: "book-open",
60
+ category: "onboarding"
61
+ },
62
+ {
63
+ id: "journal_onboarding",
64
+ title: "Journal onboarding",
65
+ description: "Journaly onboarding: self-discovery, name quiz, goals, privacy, journey cards, and attribution (8 screens).",
66
+ icon: "notebook-pen",
67
+ category: "onboarding"
68
+ }
69
+ ];
70
+
71
+ export { FLOW_TEMPLATE_CATALOG, FLOW_TEMPLATE_CATEGORIES, FLOW_TEMPLATE_CATEGORY_LABELS, FLOW_TEMPLATE_IDS, FlowTemplateIdSchema };
72
+ //# sourceMappingURL=flowTemplates.js.map
73
+ //# sourceMappingURL=flowTemplates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/flowTemplates.ts"],"names":[],"mappings":";;;AAGO,IAAM,iBAAA,GAAoB;AAAA,EAC/B,SAAA;AAAA,EACA,mBAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,eAAA;AAAA,EACA;AACF;AAIO,IAAM,oBAAA,GAAuB,CAAA,CAAE,IAAA,CAAK,iBAAiB;AAarD,IAAM,wBAAA,GAA2B,CAAC,YAAA,EAAc,YAAY;AAI5D,IAAM,6BAAA,GAAsE;AAAA,EACjF,UAAA,EAAY,YAAA;AAAA,EACZ,UAAA,EAAY;AACd;AAWO,IAAM,qBAAA,GAAoD;AAAA,EAC/D;AAAA,IACE,EAAA,EAAI,SAAA;AAAA,IACJ,KAAA,EAAO,SAAA;AAAA,IACP,WAAA,EAAa,mEAAA;AAAA,IACb,IAAA,EAAM,aAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,mBAAA;AAAA,IACJ,KAAA,EAAO,mBAAA;AAAA,IACP,WAAA,EACE,mGAAA;AAAA,IACF,IAAA,EAAM,WAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,SAAA;AAAA,IACJ,KAAA,EAAO,kBAAA;AAAA,IACP,WAAA,EACE,+GAAA;AAAA,IACF,IAAA,EAAM,UAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,UAAA;AAAA,IACJ,KAAA,EAAO,UAAA;AAAA,IACP,WAAA,EACE,qFAAA;AAAA,IACF,IAAA,EAAM,MAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,UAAA;AAAA,IACJ,KAAA,EAAO,UAAA;AAAA,IACP,WAAA,EACE,+GAAA;AAAA,IACF,IAAA,EAAM,gBAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,eAAA;AAAA,IACJ,KAAA,EAAO,eAAA;AAAA,IACP,WAAA,EACE,wGAAA;AAAA,IACF,IAAA,EAAM,WAAA;AAAA,IACN,QAAA,EAAU;AAAA,GACZ;AAAA,EACA;AAAA,IACE,EAAA,EAAI,oBAAA;AAAA,IACJ,KAAA,EAAO,oBAAA;AAAA,IACP,WAAA,EACE,6GAAA;AAAA,IACF,IAAA,EAAM,cAAA;AAAA,IACN,QAAA,EAAU;AAAA;AAEd","file":"flowTemplates.js","sourcesContent":["import { z } from 'zod';\n\n/** Dashboard-only identifiers for server-generated onboarding manifests. */\nexport const FLOW_TEMPLATE_IDS = [\n 'stories',\n 'language_learning',\n 'fitness',\n 'win_back',\n 'feedback',\n 'word_learning',\n 'journal_onboarding',\n] as const;\n\nexport type FlowTemplateId = (typeof FLOW_TEMPLATE_IDS)[number];\n\nexport const FlowTemplateIdSchema = z.enum(FLOW_TEMPLATE_IDS);\n\n/** Dashboard template-picker icon id (maps to Lucide in FlowTemplatePicker UI only; not manifest icon layers). */\nexport type FlowTemplateCatalogIcon =\n | 'circle-play'\n | 'languages'\n | 'sparkles'\n | 'activity'\n | 'gift'\n | 'message-square'\n | 'book-open'\n | 'notebook-pen';\n\nexport const FLOW_TEMPLATE_CATEGORIES = ['engagement', 'onboarding'] as const;\n\nexport type FlowTemplateCategory = (typeof FLOW_TEMPLATE_CATEGORIES)[number];\n\nexport const FLOW_TEMPLATE_CATEGORY_LABELS: Record<FlowTemplateCategory, string> = {\n engagement: 'Engagement',\n onboarding: 'Onboarding',\n};\n\nexport type FlowTemplateCatalogEntry = {\n id: FlowTemplateId;\n title: string;\n description: string;\n icon: FlowTemplateCatalogIcon;\n category: FlowTemplateCategory;\n};\n\n/** Compact metadata for dashboard template picker (no manifest payloads). */\nexport const FLOW_TEMPLATE_CATALOG: FlowTemplateCatalogEntry[] = [\n {\n id: 'stories',\n title: 'Stories',\n description: 'Full-screen video segments with progress bars and tap-to-advance.',\n icon: 'circle-play',\n category: 'engagement',\n },\n {\n id: 'language_learning',\n title: 'Language learning',\n description:\n 'Duolingo-style onboarding: language pick, daily goal, name, and profile setup with progress bars.',\n icon: 'languages',\n category: 'onboarding',\n },\n {\n id: 'fitness',\n title: 'Fitness & health',\n description:\n 'Fitness & health onboarding: Apple Health connect, strain/recovery/sleep education, and personalization quiz.',\n icon: 'activity',\n category: 'onboarding',\n },\n {\n id: 'win_back',\n title: 'Win-back',\n description:\n 'Churn flow: retention, cancel survey, discount offer, and confirmation (5 screens).',\n icon: 'gift',\n category: 'engagement',\n },\n {\n id: 'feedback',\n title: 'Feedback',\n description:\n 'In-app survey: satisfaction scale, topic picker, open feedback, and NPS — inspired by Craft and TextNow.',\n icon: 'message-square',\n category: 'engagement',\n },\n {\n id: 'word_learning',\n title: 'Word learning',\n description:\n 'Word-learning onboarding: personalization quiz, notifications, themes, goals, and topics (15 screens).',\n icon: 'book-open',\n category: 'onboarding',\n },\n {\n id: 'journal_onboarding',\n title: 'Journal onboarding',\n description:\n 'Journaly onboarding: self-discovery, name quiz, goals, privacy, journey cards, and attribution (8 screens).',\n icon: 'notebook-pen',\n category: 'onboarding',\n },\n];\n"]}
@@ -0,0 +1,35 @@
1
+ import { z } from 'zod';
2
+
3
+ declare const SdkIdentitySchema: z.ZodObject<{
4
+ appUserId: z.ZodString;
5
+ customUserId: z.ZodOptional<z.ZodString>;
6
+ sessionId: z.ZodOptional<z.ZodString>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ appUserId: string;
9
+ customUserId?: string | undefined;
10
+ sessionId?: string | undefined;
11
+ }, {
12
+ appUserId: string;
13
+ customUserId?: string | undefined;
14
+ sessionId?: string | undefined;
15
+ }>;
16
+ type SdkIdentity = z.infer<typeof SdkIdentitySchema>;
17
+ declare const SdkContextSchema: z.ZodObject<{
18
+ platform: z.ZodOptional<z.ZodEnum<["ios", "android", "web"]>>;
19
+ appVersion: z.ZodOptional<z.ZodString>;
20
+ locale: z.ZodOptional<z.ZodString>;
21
+ customProperties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>>>;
22
+ }, "strip", z.ZodTypeAny, {
23
+ locale?: string | undefined;
24
+ platform?: "ios" | "android" | "web" | undefined;
25
+ appVersion?: string | undefined;
26
+ customProperties?: Record<string, string | number | boolean> | undefined;
27
+ }, {
28
+ locale?: string | undefined;
29
+ platform?: "ios" | "android" | "web" | undefined;
30
+ appVersion?: string | undefined;
31
+ customProperties?: Record<string, string | number | boolean> | undefined;
32
+ }>;
33
+ type SdkContext = z.infer<typeof SdkContextSchema>;
34
+
35
+ export { type SdkContext, SdkContextSchema, type SdkIdentity, SdkIdentitySchema };
@@ -0,0 +1,18 @@
1
+ import { z } from 'zod';
2
+
3
+ // src/identity.ts
4
+ var SdkIdentitySchema = z.object({
5
+ appUserId: z.string().min(1),
6
+ customUserId: z.string().min(1).optional(),
7
+ sessionId: z.string().min(1).optional()
8
+ });
9
+ var SdkContextSchema = z.object({
10
+ platform: z.enum(["ios", "android", "web"]).optional(),
11
+ appVersion: z.string().optional(),
12
+ locale: z.string().optional(),
13
+ customProperties: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional()
14
+ });
15
+
16
+ export { SdkContextSchema, SdkIdentitySchema };
17
+ //# sourceMappingURL=identity.js.map
18
+ //# sourceMappingURL=identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/identity.ts"],"names":[],"mappings":";;;AAEO,IAAM,iBAAA,GAAoB,EAAE,MAAA,CAAO;AAAA,EACxC,SAAA,EAAW,CAAA,CAAE,MAAA,EAAO,CAAE,IAAI,CAAC,CAAA;AAAA,EAC3B,cAAc,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA,EAAS;AAAA,EACzC,WAAW,CAAA,CAAE,MAAA,GAAS,GAAA,CAAI,CAAC,EAAE,QAAA;AAC/B,CAAC;AAGM,IAAM,gBAAA,GAAmB,EAAE,MAAA,CAAO;AAAA,EACvC,QAAA,EAAU,EAAE,IAAA,CAAK,CAAC,OAAO,SAAA,EAAW,KAAK,CAAC,CAAA,CAAE,QAAA,EAAS;AAAA,EACrD,UAAA,EAAY,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAChC,MAAA,EAAQ,CAAA,CAAE,MAAA,EAAO,CAAE,QAAA,EAAS;AAAA,EAC5B,gBAAA,EAAkB,EAAE,MAAA,CAAO,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,MAAM,CAAC,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,QAAO,EAAG,CAAA,CAAE,SAAS,CAAC,CAAC,CAAA,CAAE,QAAA;AACzF,CAAC","file":"identity.js","sourcesContent":["import { z } from 'zod';\n\nexport const SdkIdentitySchema = z.object({\n appUserId: z.string().min(1),\n customUserId: z.string().min(1).optional(),\n sessionId: z.string().min(1).optional(),\n});\nexport type SdkIdentity = z.infer<typeof SdkIdentitySchema>;\n\nexport const SdkContextSchema = z.object({\n platform: z.enum(['ios', 'android', 'web']).optional(),\n appVersion: z.string().optional(),\n locale: z.string().optional(),\n customProperties: z.record(z.string(), z.union([z.string(), z.number(), z.boolean()])).optional(),\n});\nexport type SdkContext = z.infer<typeof SdkContextSchema>;\n"]}
@@ -0,0 +1,11 @@
1
+ import { IMAGE_MIME_TYPES } from './constants/index.js';
2
+
3
+ type ImageMimeType = (typeof IMAGE_MIME_TYPES)[number];
4
+ declare const normalizeImageMimeType: (mime: string) => ImageMimeType | null;
5
+ declare const imageMimeTypeFromFilename: (filename: string) => ImageMimeType | null;
6
+ /** Resolve a dashboard/API image content type from browser File.type and filename. */
7
+ declare const resolveImageUploadContentType: (filename: string, fileType?: string) => ImageMimeType;
8
+ declare const isSvgImageMimeType: (contentType: string) => boolean;
9
+ declare const isSvgMediaUrl: (url: string) => boolean;
10
+
11
+ export { type ImageMimeType, imageMimeTypeFromFilename, isSvgImageMimeType, isSvgMediaUrl, normalizeImageMimeType, resolveImageUploadContentType };
@@ -0,0 +1,54 @@
1
+ // src/constants/index.ts
2
+ var IMAGE_MIME_TYPES = [
3
+ "image/png",
4
+ "image/jpeg",
5
+ "image/webp",
6
+ "image/gif",
7
+ "image/svg+xml"
8
+ ];
9
+
10
+ // src/imageContentType.ts
11
+ var IMAGE_MIME_SET = new Set(IMAGE_MIME_TYPES);
12
+ var EXTENSION_TO_MIME = {
13
+ ".png": "image/png",
14
+ ".jpg": "image/jpeg",
15
+ ".jpeg": "image/jpeg",
16
+ ".webp": "image/webp",
17
+ ".gif": "image/gif",
18
+ ".svg": "image/svg+xml"
19
+ };
20
+ var MIME_ALIASES = {
21
+ "image/jpg": "image/jpeg",
22
+ "image/pjpeg": "image/jpeg",
23
+ "image/x-png": "image/png"
24
+ };
25
+ var normalizeImageMimeType = (mime) => {
26
+ const lower = mime.toLowerCase().trim();
27
+ const aliased = MIME_ALIASES[lower] ?? lower;
28
+ return IMAGE_MIME_SET.has(aliased) ? aliased : null;
29
+ };
30
+ var imageMimeTypeFromFilename = (filename) => {
31
+ const lower = filename.toLowerCase();
32
+ for (const [ext, mime] of Object.entries(EXTENSION_TO_MIME)) {
33
+ if (lower.endsWith(ext)) return mime;
34
+ }
35
+ return null;
36
+ };
37
+ var resolveImageUploadContentType = (filename, fileType) => {
38
+ const fromMime = fileType?.trim() ? normalizeImageMimeType(fileType) : null;
39
+ if (fromMime) return fromMime;
40
+ const fromName = imageMimeTypeFromFilename(filename);
41
+ if (fromName) return fromName;
42
+ throw new Error(
43
+ `Unsupported image file "${filename}". Use PNG, JPEG, WebP, GIF, or SVG.`
44
+ );
45
+ };
46
+ var isSvgImageMimeType = (contentType) => normalizeImageMimeType(contentType) === "image/svg+xml";
47
+ var isSvgMediaUrl = (url) => {
48
+ const path = url.split("?")[0]?.toLowerCase() ?? "";
49
+ return path.endsWith(".svg");
50
+ };
51
+
52
+ export { imageMimeTypeFromFilename, isSvgImageMimeType, isSvgMediaUrl, normalizeImageMimeType, resolveImageUploadContentType };
53
+ //# sourceMappingURL=imageContentType.js.map
54
+ //# sourceMappingURL=imageContentType.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/constants/index.ts","../src/imageContentType.ts"],"names":[],"mappings":";AAsBO,IAAM,gBAAA,GAAmB;AAAA,EAC9B,WAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA,WAAA;AAAA,EACA;AACF,CAAA;;;ACxBA,IAAM,cAAA,GAAiB,IAAI,GAAA,CAAY,gBAAgB,CAAA;AAEvD,IAAM,iBAAA,GAAmD;AAAA,EACvD,MAAA,EAAQ,WAAA;AAAA,EACR,MAAA,EAAQ,YAAA;AAAA,EACR,OAAA,EAAS,YAAA;AAAA,EACT,OAAA,EAAS,YAAA;AAAA,EACT,MAAA,EAAQ,WAAA;AAAA,EACR,MAAA,EAAQ;AACV,CAAA;AAEA,IAAM,YAAA,GAA8C;AAAA,EAClD,WAAA,EAAa,YAAA;AAAA,EACb,aAAA,EAAe,YAAA;AAAA,EACf,aAAA,EAAe;AACjB,CAAA;AAEO,IAAM,sBAAA,GAAyB,CAAC,IAAA,KAAuC;AAC5E,EAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,WAAA,EAAY,CAAE,IAAA,EAAK;AACtC,EAAA,MAAM,OAAA,GAAU,YAAA,CAAa,KAAK,CAAA,IAAK,KAAA;AACvC,EAAA,OAAO,cAAA,CAAe,GAAA,CAAI,OAAO,CAAA,GAAK,OAAA,GAA4B,IAAA;AACpE;AAEO,IAAM,yBAAA,GAA4B,CAAC,QAAA,KAA2C;AACnF,EAAA,MAAM,KAAA,GAAQ,SAAS,WAAA,EAAY;AACnC,EAAA,KAAA,MAAW,CAAC,GAAA,EAAK,IAAI,KAAK,MAAA,CAAO,OAAA,CAAQ,iBAAiB,CAAA,EAAG;AAC3D,IAAA,IAAI,KAAA,CAAM,QAAA,CAAS,GAAG,CAAA,EAAG,OAAO,IAAA;AAAA,EAClC;AACA,EAAA,OAAO,IAAA;AACT;AAGO,IAAM,6BAAA,GAAgC,CAC3C,QAAA,EACA,QAAA,KACkB;AAClB,EAAA,MAAM,WAAW,QAAA,EAAU,IAAA,EAAK,GAAI,sBAAA,CAAuB,QAAQ,CAAA,GAAI,IAAA;AACvE,EAAA,IAAI,UAAU,OAAO,QAAA;AACrB,EAAA,MAAM,QAAA,GAAW,0BAA0B,QAAQ,CAAA;AACnD,EAAA,IAAI,UAAU,OAAO,QAAA;AACrB,EAAA,MAAM,IAAI,KAAA;AAAA,IACR,2BAA2B,QAAQ,CAAA,oCAAA;AAAA,GACrC;AACF;AAEO,IAAM,kBAAA,GAAqB,CAAC,WAAA,KACjC,sBAAA,CAAuB,WAAW,CAAA,KAAM;AAEnC,IAAM,aAAA,GAAgB,CAAC,GAAA,KAAyB;AACrD,EAAA,MAAM,IAAA,GAAO,IAAI,KAAA,CAAM,GAAG,EAAE,CAAC,CAAA,EAAG,aAAY,IAAK,EAAA;AACjD,EAAA,OAAO,IAAA,CAAK,SAAS,MAAM,CAAA;AAC7B","file":"imageContentType.js","sourcesContent":["export const ENVIRONMENTS = ['test', 'live'] as const;\nexport type Environment = (typeof ENVIRONMENTS)[number];\n\nexport const ROLES = ['owner', 'editor'] as const;\nexport type Role = (typeof ROLES)[number];\n\nexport const STEP_TYPES = [\n 'carousel',\n 'single_choice',\n 'multiple_choice',\n 'text_input',\n 'scale_input',\n 'cta',\n] as const;\nexport type StepType = (typeof STEP_TYPES)[number];\n\nexport const FIELD_CLASSIFICATIONS = ['safe', 'sensitive'] as const;\nexport type FieldClassification = (typeof FIELD_CLASSIFICATIONS)[number];\n\nexport const MEDIA_TYPES = ['image', 'font', 'lottie', 'video'] as const;\nexport type MediaType = (typeof MEDIA_TYPES)[number];\n\nexport const IMAGE_MIME_TYPES = [\n 'image/png',\n 'image/jpeg',\n 'image/webp',\n 'image/gif',\n 'image/svg+xml',\n] as const;\nexport const MAX_IMAGE_BYTES = 5 * 1024 * 1024;\n\n/** Lottie sources are JSON on the same CDN as images. */\nexport const LOTTIE_MIME_TYPES = ['application/json', 'text/json'] as const;\nexport const MAX_LOTTIE_BYTES = 10 * 1024 * 1024;\n\n/** Video files on the same CDN as images (mp4, webm, mov). */\nexport const VIDEO_MIME_TYPES = ['video/mp4', 'video/webm', 'video/quicktime'] as const;\nexport const MAX_VIDEO_BYTES = 50 * 1024 * 1024;\n\nexport const FONT_MIME_TYPES = [\n 'font/ttf',\n 'font/otf',\n 'font/woff',\n 'font/woff2',\n 'application/font-woff',\n 'application/font-woff2',\n 'application/x-font-ttf',\n 'application/x-font-otf',\n 'application/octet-stream',\n] as const;\nexport const FONT_FILE_EXTENSIONS = ['.ttf', '.otf', '.woff', '.woff2'] as const;\nexport const MAX_FONT_BYTES = 10 * 1024 * 1024;\n\nexport const EVENT_NAMES = [\n 'flow_started',\n 'step_viewed',\n 'step_completed',\n 'step_skipped',\n 'choice_selected',\n 'text_submitted',\n 'flow_completed',\n 'flow_abandoned',\n 'decision_evaluated',\n 'external_link_opened',\n 'surface_presented',\n 'surface_outcome',\n 'app_review_prompt_shown',\n 'app_review_prompt_dismissed',\n /** Emitted once per provider id when merged SDK attributes first expose that attribution source (used for integration health checks). */\n 'attribution_context_observed',\n /** Successful in-app purchase from an external surface (e.g. RevenueCat paywall); commerce fields live in `properties`. */\n 'iap_purchase',\n] as const;\nexport type EventName = (typeof EVENT_NAMES)[number];\n\nexport const PUBLISHABLE_KEY_PREFIX = 'ob_pk_';\nexport const API_VERSION = 'v1';\n\nexport const DEFAULT_LOCALE = 'en';\n\nexport const AUTOSAVE_DEBOUNCE_MS = 800;\nexport const SDK_EVENT_FLUSH_MS = 5000;\n","import { IMAGE_MIME_TYPES } from './constants/index';\n\nexport type ImageMimeType = (typeof IMAGE_MIME_TYPES)[number];\n\nconst IMAGE_MIME_SET = new Set<string>(IMAGE_MIME_TYPES);\n\nconst EXTENSION_TO_MIME: Record<string, ImageMimeType> = {\n '.png': 'image/png',\n '.jpg': 'image/jpeg',\n '.jpeg': 'image/jpeg',\n '.webp': 'image/webp',\n '.gif': 'image/gif',\n '.svg': 'image/svg+xml',\n};\n\nconst MIME_ALIASES: Record<string, ImageMimeType> = {\n 'image/jpg': 'image/jpeg',\n 'image/pjpeg': 'image/jpeg',\n 'image/x-png': 'image/png',\n};\n\nexport const normalizeImageMimeType = (mime: string): ImageMimeType | null => {\n const lower = mime.toLowerCase().trim();\n const aliased = MIME_ALIASES[lower] ?? lower;\n return IMAGE_MIME_SET.has(aliased) ? (aliased as ImageMimeType) : null;\n};\n\nexport const imageMimeTypeFromFilename = (filename: string): ImageMimeType | null => {\n const lower = filename.toLowerCase();\n for (const [ext, mime] of Object.entries(EXTENSION_TO_MIME)) {\n if (lower.endsWith(ext)) return mime;\n }\n return null;\n};\n\n/** Resolve a dashboard/API image content type from browser File.type and filename. */\nexport const resolveImageUploadContentType = (\n filename: string,\n fileType?: string,\n): ImageMimeType => {\n const fromMime = fileType?.trim() ? normalizeImageMimeType(fileType) : null;\n if (fromMime) return fromMime;\n const fromName = imageMimeTypeFromFilename(filename);\n if (fromName) return fromName;\n throw new Error(\n `Unsupported image file \"${filename}\". Use PNG, JPEG, WebP, GIF, or SVG.`,\n );\n};\n\nexport const isSvgImageMimeType = (contentType: string): boolean =>\n normalizeImageMimeType(contentType) === 'image/svg+xml';\n\nexport const isSvgMediaUrl = (url: string): boolean => {\n const path = url.split('?')[0]?.toLowerCase() ?? '';\n return path.endsWith('.svg');\n};\n"]}
@@ -0,0 +1,224 @@
1
+ export { LocaleCode, LocalizedText, LocalizedTextSchema, resolveLocalizedText } from './localized.js';
2
+ export { MediaAsset, MediaAssetSchema, MediaReference, MediaReferenceSchema, MediaTypeSchema, mediaExtensionFromContentType, mergeMediaFileNameStem, splitMediaFileName } from './media.js';
3
+ export { FIELD_KEY_RE, FieldClassificationSchema, FieldKey, FieldKeySchema } from './fields.js';
4
+ export { BackButtonLayerSchema, ButtonLayerSchema, CarouselIndicatorsStyleSchema, CarouselLayerSchema, CarouselPageControlSchema, CheckboxLayerSchema, CommonLayoutHeight, CommonLayoutHeightSchema, CounterLayerSchema, EmailPasswordAuthLayerSchema, EmailPasswordAuthModeSchema, EmailPasswordFieldLayerSchema, EmailPasswordSubmitLayerSchema, HEIGHT_PRESETS, HeightPreset, HyperlinkLayerSchema, INPUT_LAYER_KINDS, IconLayerSchema, ImageLayerSchema, InputLayerKind, LAYER_KINDS, LayerKind, LayerSchema, LoaderLayerSchema, LoaderOnCompleteSchema, LottieLayerSchema, MultipleChoiceLayerSchema, OAuthLoginCustomProviderSchema, OAuthLoginLayerSchema, OAuthLoginPresetProviderSchema, OAuthLoginProviderSchema, OAuthLoginProvidersArraySchema, OAuthProviderCustomLayerSchema, OAuthProviderLayerSchema, OAuthProviderPresetLayerSchema, ProgressLayerSchema, ScaleInputLabelStyleSchema, ScaleInputLayerSchema, SingleChoiceLayerSchema, StackLayerSchema, TextInputLayerSchema, TextLayerSchema, VideoLayerSchema, WIDTH_PRESETS, WidthPreset, WidthValue, WidthValueSchema, baseLayerShape, commonStyleHasAbsolutePosition, layerHasAbsolutePositionAuthored, layerSchemaStore, layerSubtreeContainsAbsolutePosition, manifestScreenLayerKinds, minimalLayerExamples, oauthLoginManifestProviderFromLayer, validateChoiceChildrenAndBindings } from './layers.js';
5
+ export { A as APP_REVIEW_CAPTURE_FIELD_KEY_PREFIX, p as APP_REVIEW_OUTCOMES, q as AppReviewOutcome, r as AppReviewOutcomeSchema, s as BUTTON_LAYER_VARIANTS, B as BackButtonLayerRaw, t as Border, u as BorderSchema, v as BranchCondition, w as BranchConditionSchema, x as ButtonAction, y as ButtonActionSchema, a as ButtonLayerRaw, z as ButtonLayerVariant, D as ButtonLayerVariantSchema, F as ButtonLayoutBreakpoints, G as ButtonLayoutBreakpointsSchema, J as ButtonStyle, K as ButtonStyleBreakpoints, N as ButtonStyleBreakpointsSchema, Q as ButtonStyleSchema, R as COUNTER_DISPLAY_KINDS, U as COUNTER_TIME_FORMATS, W as CarouselIndicatorsStyle, C as CarouselLayerRaw, X as CarouselPageControl, Y as CheckboxGlyphStyle, Z as CheckboxGlyphStyleSchema, b as CheckboxLayerRaw, _ as ChoiceBranching, $ as ChoiceBranchingSchema, a0 as ChoiceOptionBinding, a1 as ChoiceOptionBindingSchema, a2 as CommonStyle, a3 as CommonStyleBreakpoints, a4 as CommonStyleBreakpointsSchema, a5 as CommonStyleSchema, a6 as CounterDisplayKind, c as CounterLayerRaw, a7 as CounterTimeFormat, a8 as DEFAULT_OAUTH_PRESET_BUTTON_LABEL, a9 as DEFAULT_THEMED_FOREGROUND, aa as DropShadow, ab as DropShadowSchema, ac as EMAIL_PASSWORD_AUTH_MODES, ad as EMAIL_PASSWORD_SLOTS, E as EmailPasswordAuthLayerRaw, ae as EmailPasswordAuthMode, d as EmailPasswordFieldLayerRaw, af as EmailPasswordSlot, e as EmailPasswordSubmitLayerRaw, H as HyperlinkLayerRaw, ag as ICON_FAMILIES, ah as IconFamily, I as IconLayerRaw, ai as IconStyle, aj as IconStyleBreakpoints, ak as IconStyleBreakpointsSchema, al as IconStyleSchema, f as ImageLayerRaw, am as ImageStyle, an as ImageStyleBreakpoints, ao as ImageStyleBreakpointsSchema, ap as ImageStyleSchema, aq as LayerId, ar as LayerIdSchema, L as LayerRaw, h as LoaderLayerRaw, i as LoaderOnCompleteRaw, j as LottieLayerRaw, M as MultipleChoiceLayerRaw, as as NonNegativePxSchema, at as OAUTH_LOGIN_PRESETS, au as OAUTH_LOGIN_PRESET_DISPLAY, O as OAuthLoginLayerRaw, av as OAuthLoginPreset, aw as OAuthLoginProvider, ax as OAuthPresetButtonChrome, ay as OAuthPresetButtonChromeBreakpoints, az as OAuthPresetButtonChromeBreakpointsSchema, aA as OAuthPresetButtonChromeSchema, k as OAuthProviderCustomLayerRaw, l as OAuthProviderLayerRaw, m as OAuthProviderPresetLayerRaw, aB as OS_PERMISSION_KEYS, aC as OS_PERMISSION_OUTCOME_CONTINUE, aD as OS_PERMISSION_OUTCOME_END, aE as OsPermissionBranchOutcomes, aF as OsPermissionKey, aG as OsPermissionKeySchema, aH as OsPermissionOutcomeBranchTarget, aI as OsPermissionOutcomeBranchTargetSchema, aJ as PERMISSION_CAPTURE_FIELD_KEY_PREFIX, aK as PERMISSION_OUTCOME_VALUES, aL as PRIMARY_FILLED_LABEL, aM as Padding, aN as PaddingSchema, aO as PermissionOutcome, aP as PermissionOutcomeSchema, P as ProgressLayerRaw, aQ as RESTING_MOTION_PRESETS, aR as RESTING_MOTION_ROTATE_DIRECTIONS, aS as RESTING_MOTION_SCALE_DIRECTIONS, aT as RestingMotion, aU as RestingMotionEntry, aV as RestingMotionEntrySchema, aW as RestingMotionPreset, aX as RestingMotionPresetSchema, aY as RestingMotionRotateDirection, aZ as RestingMotionRotateDirectionSchema, a_ as RestingMotionScaleDirection, a$ as RestingMotionScaleDirectionSchema, b0 as RestingMotionSchema, b1 as ScaleInputLabelStyle, g as ScaleInputLayerRaw, b2 as ScreenId, b3 as ScreenIdSchema, S as SingleChoiceLayerRaw, n as StackLayerRaw, b4 as StackLayoutBreakpoints, b5 as StackLayoutBreakpointsSchema, b6 as TEXT_INPUT_TYPES, T as TextInputLayerRaw, b7 as TextInputType, b8 as TextInputTypeSchema, o as TextLayerRaw, b9 as TextStyle, ba as TextStyleBreakpoints, bb as TextStyleBreakpointsSchema, bc as TextStyleSchema, bd as ThemedColor, be as ThemedColorModesSchema, bf as ThemedColorSchema, V as VideoLayerRaw, bg as appReviewCaptureFieldKey, bh as defaultOAuthPresetButtonLabel, bi as emailPasswordAuthResponseKey, bj as oauthLoginResponseKey, bk as oauthPresetEffectiveLabel, bl as permissionCaptureFieldKey } from './layout-D0LpaKG-.js';
6
+ export { B as BackButtonLayer, a as ButtonLayer, C as CarouselLayer, b as CheckboxLayer, c as CounterLayer, E as EmailPasswordAuthLayer, d as EmailPasswordFieldLayer, e as EmailPasswordSubmitLayer, H as HyperlinkLayer, I as IconLayer, f as ImageLayer, g as InputLayer, L as Layer, h as LoaderLayer, i as LoaderOnComplete, j as LottieLayer, M as MultipleChoiceLayer, O as OAuthLoginLayer, k as OAuthProviderCustomLayer, l as OAuthProviderLayer, m as OAuthProviderPresetLayer, P as ProgressLayer, n as ScaleInputLayer, o as SingleChoiceLayer, S as StackLayer, T as TextInputLayer, p as TextLayer, V as VideoLayer, q as isInputLayer, r as isParentLayer } from './layerUnion-BzXoAJLY.js';
7
+ export { ANIMATABLE_PROPERTIES, ANIMATION_TRIGGERS, AnimatableProperty, AnimatablePropertySchema, AnimationClip, AnimationClipSchema, AnimationTrigger, AnimationTriggerSchema, DEFAULT_ANIMATION_CLIP_DURATION_MS, EASING_TOKENS, EasingToken, EasingTokenSchema, Keyframe, KeyframeSchema, KeyframeTrack, KeyframeTrackSchema, ScreenStagger, ScreenStaggerSchema } from './animations.js';
8
+ export { LayerLayoutWalkCtx, SCREEN_BACKGROUND_PLAYBACK_PREFIX, Screen, ScreenBackgroundColorFill, ScreenBackgroundColorFillSchema, ScreenBackgroundFill, ScreenBackgroundFillPatch, ScreenBackgroundFillPatchSchema, ScreenBackgroundFillSchema, ScreenBackgroundFit, ScreenBackgroundFitSchema, ScreenBackgroundImageFill, ScreenBackgroundImageFillSchema, ScreenBackgroundScrim, ScreenBackgroundScrimSchema, ScreenBackgroundVideoFill, ScreenBackgroundVideoFillSchema, ScreenContainerStyle, ScreenContainerStyleBreakpoints, ScreenContainerStyleBreakpointsSchema, ScreenContainerStyleSchema, ScreenNext, ScreenNextSchema, ScreenRegions, ScreenRegionsSchema, ScreenSchema, collectAnswerCaptureFieldKeysFromScreen, defaultScreenBackgroundColorFill, defaultScreenBackgroundImageFill, defaultScreenBackgroundVideoFill, isScreenBackgroundPlaybackId, screenBackgroundPlaybackId, walkScreenLayers, walkScreenLayersWithLayoutContext } from './screens.js';
9
+ export { DECISION_ELSE_SOURCE_HANDLE, DecisionBooleanPredicateSchema, DecisionBuiltinName, DecisionBuiltinNameSchema, DecisionCase, DecisionCaseSchema, DecisionChoicePredicateSchema, DecisionExpr, DecisionExprSchema, DecisionMultiPredicateSchema, DecisionNode, DecisionNodeId, DecisionNodeIdSchema, DecisionNodeSchema, DecisionNumberPredicateSchema, DecisionPredicatePayload, DecisionPredicatePayloadSchema, DecisionStringPredicateSchema, DecisionVariableRef, DecisionVariableRefSchema, EXTERNAL_SURFACE_NO_NEXT, FlowJumpTarget, FlowJumpTargetSchema, collectDecisionFieldKeys, collectDecisionFieldKeysFromNode, collectDecisionSdkKeys, collectDecisionSdkKeysFromNode, migrateLegacyDecisionNodeInPlace } from './decisions.js';
10
+ export { ExternalSurfaceConfig, ExternalSurfaceConfigSchema, ExternalSurfaceNode, ExternalSurfaceNodeId, ExternalSurfaceNodeIdSchema, ExternalSurfaceNodeSchema, ExternalSurfaceOutcomesMap, ExternalSurfaceOutcomesMapSchema, NORMALIZED_SURFACE_OUTCOMES, NormalizedSurfaceOutcome, NormalizedSurfaceOutcomeSchema, RevenueCatSurfaceConfig, RevenueCatSurfaceConfigSchema, RevenueCatSurfacePresentation, RevenueCatSurfacePresentationSchema, SurfaceProvider, SurfaceProviderSchema, UnspecifiedExternalSurfaceConfig, UnspecifiedExternalSurfaceConfigSchema, resolveExternalSurfaceTarget } from './externalSurfaces.js';
11
+ export { RESERVED_RC_SDK_KEYS, ReservedRcSdkKey, isReservedSdkKey } from './sdkAttributes.js';
12
+ export { BuilderMeta, BuilderMetaSchema, FlowManifestObjectBase, FlowManifestObjectBaseSchema, MANIFEST_SCHEMA_VERSION, Theme, ThemeSchema, migrateLegacyManifest } from './manifest.js';
13
+ export { F as FlowManifest, a as FlowManifestObjectSchema, b as FlowManifestSchema } from './flowManifestSchema-CtqygXCK.js';
14
+ export { SdkContext, SdkContextSchema, SdkIdentity, SdkIdentitySchema } from './identity.js';
15
+ export { FlowTerminalCorrelation, FlowTerminalCorrelationSchema, FlowTerminalDevice, FlowTerminalDeviceSchema, FlowTerminalSnapshot, FlowTerminalSnapshotSchema, RHEO_DEFAULT_SDK_API_BASE_URL, SdkCompletionPayload, SdkCompletionPayloadSchema, SdkResolveAllResponse, SdkResolveAllResponseSchema, SdkResolveAssignment, SdkResolveAssignmentSchema, SdkResolveRequest, SdkResolveRequestSchema, SdkResolveResponse, SdkResolveResponseSchema } from './sdk.js';
16
+ export { EventNameSchema, SdkEvent, SdkEventBatch, SdkEventBatchSchema, SdkEventSchema } from './events.js';
17
+ import { z } from 'zod';
18
+ export { AddFlowCommentMessageRequest, AddFlowCommentMessageRequestSchema, AddFlowCommentMessageResponse, AddFlowCommentMessageResponseSchema, AddRolloutComment, AddRolloutCommentResponse, AddRolloutCommentResponseSchema, AddRolloutCommentSchema, AiFlowPromptSchema, AnalyticsRange, AnalyticsRangeSchema, App, AppIcon, AppIconSchema, AppSchema, ApproveRolloutRequest, ApproveRolloutRequestSchema, ArchiveChannelRequest, ArchiveChannelRequestSchema, ArchiveFlowCommentThreadResponse, ArchiveFlowCommentThreadResponseSchema, AssignmentClearedPayloadSchema, AutosaveDraftRequest, AutosaveDraftRequestSchema, AutosaveDraftResponse, AutosaveDraftResponseSchema, BrandColor, BrandColorSchema, BrandGradient, BrandGradientSchema, BrandGradientStop, BrandGradientStopSchema, Branding, BrandingSchema, CREATE_FLOW_AI_PROMPT_MAX, Channel, ChannelArchivedPayloadSchema, ChannelAssignmentKind, ChannelAssignmentKindSchema, ChannelAssignmentRequest, ChannelAssignmentRequestSchema, ChannelCreatedPayloadSchema, ChannelDirectAssignmentSchema, ChannelEvent, ChannelEventPayload, ChannelEventPayloadSchema, ChannelEventSchema, ChannelEventType, ChannelEventTypeSchema, ChannelExperimentAssignmentSchema, ChannelHistoryExperimentSnapshot, ChannelHistoryExperimentSnapshotSchema, ChannelHistoryFlowVersionSnapshot, ChannelHistoryFlowVersionSnapshotSchema, ChannelHistoryPreviousAssignment, ChannelHistoryPreviousAssignmentSchema, ChannelRenamedPayloadSchema, ChannelSchema, ChannelUnarchivedPayloadSchema, ConfirmUploadRequest, ConfirmUploadRequestSchema, CreateAppRequest, CreateAppRequestSchema, CreateAppResponse, CreateAppResponseSchema, CreateChannelRequest, CreateChannelRequestSchema, CreateFlowCommentThreadRequest, CreateFlowCommentThreadRequestSchema, CreateFlowCommentThreadResponse, CreateFlowCommentThreadResponseSchema, CreateFlowRequestSchema, CreateFlowResponse, CreateFlowResponseSchema, CreateRolloutRequestsBody, CreateRolloutRequestsBodySchema, CreateRolloutRequestsResponse, CreateRolloutRequestsResponseSchema, DASHBOARD_MAX_TAGS, DASHBOARD_MAX_TAG_LEN, DeleteAppRequest, DeleteAppRequestSchema, DeleteAppResponse, DeleteAppResponseSchema, DeleteMediaAssetResponseSchema, DirectPinnedPayloadSchema, DuplicateFlowRequest, DuplicateFlowRequestSchema, EMPTY_BRANDING, ExperimentAbandonStepRowSchema, ExperimentArmStats, ExperimentArmStatsSchema, ExperimentAssignedPayloadSchema, ExperimentCohortRule, ExperimentCohortRuleSchema, ExperimentCvrTimeseriesResponse, ExperimentCvrTimeseriesResponseSchema, ExperimentEndedPayload, ExperimentEndedPayloadSchema, ExperimentFunnelStepSchema, ExperimentResultsOverview, ExperimentResultsOverviewSchema, ExperimentSampleAccumulation, ExperimentSampleAccumulationSchema, ExperimentSrmSchema, ExperimentStatsResponse, ExperimentStatsResponseSchema, ExperimentStoppedRepinnedPayloadSchema, ExperimentVariantFunnelSchema, ExperimentWinnerPromotedPayloadSchema, FlowAiGenerationRunStatus, FlowAiGenerationRunStatusResponse, FlowAiGenerationRunStatusResponseSchema, FlowAiGenerationRunStatusSchema, FlowCommentFilter, FlowCommentFilterSchema, FlowCommentMentionPayload, FlowCommentMentionPayloadSchema, FlowCommentMessage, FlowCommentMessageSchema, FlowCommentNewPayload, FlowCommentNewPayloadSchema, FlowCommentNotificationBasePayload, FlowCommentNotificationBasePayloadSchema, FlowCommentReplyPayload, FlowCommentReplyPayloadSchema, FlowCommentThreadSummary, FlowCommentThreadSummarySchema, FlowDraft, FlowDraftSchema, FlowPreview, FlowPreviewSchema, FlowStatus, FlowStatusSchema, FlowSummary, FlowSummarySchema, FlowVersionSchema, FlowVersionSummary, FlowVersionWithManifest, FlowVersionWithManifestSchema, FontFamily, FontFamilySchema, FontStyle, FontStyleSchema, FunnelResponse, FunnelResponseSchema, GetFlowCommentThreadResponse, GetFlowCommentThreadResponseSchema, ListChannelHistoryResponse, ListChannelHistoryResponseSchema, ListChannelsResponse, ListChannelsResponseSchema, ListFlowCommentThreadsResponse, ListFlowCommentThreadsResponseSchema, ListMediaResponseSchema, ListNotificationsResponse, ListNotificationsResponseSchema, ListRolloutRequestsResponse, ListRolloutRequestsResponseSchema, ListVersionsResponse, ListVersionsResponseSchema, ListWorkspaceMembersResponse, ListWorkspaceMembersResponseSchema, MediaAssetUsageReference, MediaAssetUsageReferenceSchema, MediaAssetUsageResponse, MediaAssetUsageResponseSchema, Membership, MembershipSchema, Notification, NotificationKind, NotificationKindSchema, NotificationSchema, ONBOARDING_TASK_IDS, OnboardingChecklistDismissResponse, OnboardingChecklistDismissResponseSchema, OnboardingChecklistFocusApp, OnboardingChecklistFocusAppSchema, OnboardingChecklistResponse, OnboardingChecklistResponseSchema, OnboardingTask, OnboardingTaskAction, OnboardingTaskActionSchema, OnboardingTaskCompleteResponse, OnboardingTaskCompleteResponseSchema, OnboardingTaskCompletionSource, OnboardingTaskCompletionSourceSchema, OnboardingTaskId, OnboardingTaskIdSchema, OnboardingTaskSchema, OnboardingTaskStatus, OnboardingTaskStatusSchema, OnboardingTaskVerifyResponse, OnboardingTaskVerifyResponseSchema, PatchRolloutPolicy, PatchRolloutPolicySchema, Publication, PublicationSchema, PublishRequest, PublishRequestSchema, PublishResponse, PublishResponseSchema, PublishValidationError, PublishValidationErrorSchema, PublishableKey, PublishableKeySchema, RHEO_AGENT_IMAGE_MIME_TYPES, RHEO_AGENT_MAX_IMAGE_ATTACHMENTS, RejectRolloutRequest, RejectRolloutRequestSchema, RenameChannelRequest, RenameChannelRequestSchema, ResponseBreakdown, ResponseBreakdownSchema, RheoAgentApplyingManifestEvent, RheoAgentApplyingManifestEventSchema, RheoAgentAttemptEvent, RheoAgentAttemptEventSchema, RheoAgentChatRequest, RheoAgentChatRequestSchema, RheoAgentDoneEvent, RheoAgentDoneEventSchema, RheoAgentErrorEvent, RheoAgentErrorEventSchema, RheoAgentImageAttachment, RheoAgentImageAttachmentSchema, RheoAgentImageMimeType, RheoAgentManifestEvent, RheoAgentManifestEventSchema, RheoAgentMessage, RheoAgentMessageSchema, RheoAgentSelection, RheoAgentSelectionSchema, RheoAgentStreamEvent, RheoAgentStreamEventSchema, RheoAgentTextDeltaEvent, RheoAgentTextDeltaEventSchema, RoleSchema, RolloutCommentKind, RolloutCommentKindSchema, RolloutCommentMentionPayload, RolloutCommentMentionPayloadSchema, RolloutCommentMentionUser, RolloutCommentMentionUserSchema, RolloutFlowPayloadSchema, RolloutPolicyResponse, RolloutPolicyResponseSchema, RolloutRequestComment, RolloutRequestCommentSchema, RolloutRequestDetail, RolloutRequestDetailSchema, RolloutRequestStatus, RolloutRequestStatusSchema, RolloutRequestSummary, RolloutRequestSummarySchema, SignUploadRequest, SignUploadRequestSchema, SignUploadResponse, SignUploadResponseSchema, StartAiFlowGenerationRequest, StartAiFlowGenerationRequestSchema, StoreListingInput, StoreListingInputSchema, StoreListingLookupResponse, StoreListingLookupResponseSchema, TagsSchema, TagsSchemaOptional, UnarchiveChannelResponse, UnarchiveChannelResponseSchema, UpdateAppBrandingRequest, UpdateAppBrandingRequestSchema, UpdateAppRequest, UpdateAppRequestSchema, UpdateFlowRequestSchema, UpdateMediaAssetRequest, UpdateMediaAssetRequestSchema, UpdateMediaAssetResponseSchema, WorkspaceMemberRow, WorkspaceMemberRowSchema, normalizeDashboardTags } from './dashboard.js';
19
+ export { C as CreateExperimentRequest, a as CreateExperimentRequestSchema, b as CreateVariantRequest, c as CreateVariantRequestSchema, d as EXPERIMENT_STATS_DESIGN_DEFAULTS, e as Experiment, f as ExperimentEndedReason, g as ExperimentEndedReasonSchema, h as ExperimentSchema, i as ExperimentStatsDesignInput, j as ExperimentStatsDesignInputSchema, E as ExperimentStatus, k as ExperimentStatusSchema, l as ExtendExperimentRequest, m as ExtendExperimentRequestSchema, L as ListExperimentsResponseSchema, R as ReorderExperimentVariantsRequest, n as ReorderExperimentVariantsRequestSchema, S as StopExperimentRequest, o as StopExperimentRequestSchema, U as UpdateExperimentRequest, p as UpdateExperimentRequestSchema, q as UpdateExperimentStatusRequest, r as UpdateExperimentStatusRequestSchema, V as Variant, s as VariantSchema } from './experiments-DN8pQa_D.js';
20
+ export { CANVAS_EDITOR_GATE_KEYS, CanvasEditorGateKey, CanvasEditorGatesPatch, CanvasEditorGatesPatchSchema, CanvasEditorGatesResolved, CanvasEditorGatesResolvedSchema, ResolvedCanvasEditorGates, collectCanvasGateViolations, describeCanvasGatesForAi, manifestPassesCanvasGates, parseCanvasEditorGates } from './canvasEditorGates.js';
21
+ export { APP_INTEGRATIONS_DEFAULTS, AppIntegrationsSchema, AppsFlyerIntegration, AppsFlyerIntegrationSchema, AttributionProviderSignalQuerySchema, AttributionProviderSignalResponse, AttributionProviderSignalResponseSchema, DASHBOARD_ATTRIBUTION_INTEGRATION_PROVIDER_IDS, DashboardAttributionIntegrationProviderId, DashboardAttributionIntegrationProviderIdSchema, ResolvedAppIntegrations, ResolvedAppIntegrationsSchema, RevenueCatIntegration, RevenueCatIntegrationSchema, parseAppIntegrations } from './appIntegrations.js';
22
+ export { CreateExternalSurfaceConfigOptions, ExternalSurfaceIntegrationProvider, createExternalSurfaceConfig, externalSurfaceProviderLabel, externalSurfaceProviderMenuDescription, listEnabledExternalSurfaceProviders } from './externalSurfaceIntegrations.js';
23
+ export { API_VERSION, AUTOSAVE_DEBOUNCE_MS, DEFAULT_LOCALE, ENVIRONMENTS, EVENT_NAMES, Environment, EventName, FIELD_CLASSIFICATIONS, FONT_FILE_EXTENSIONS, FONT_MIME_TYPES, FieldClassification, IMAGE_MIME_TYPES, LOTTIE_MIME_TYPES, MAX_FONT_BYTES, MAX_IMAGE_BYTES, MAX_LOTTIE_BYTES, MAX_VIDEO_BYTES, MEDIA_TYPES, MediaType, PUBLISHABLE_KEY_PREFIX, ROLES, Role, SDK_EVENT_FLUSH_MS, STEP_TYPES, StepType, VIDEO_MIME_TYPES } from './constants/index.js';
24
+ export { FLOW_TEMPLATE_CATALOG, FLOW_TEMPLATE_CATEGORIES, FLOW_TEMPLATE_CATEGORY_LABELS, FLOW_TEMPLATE_IDS, FlowTemplateCatalogEntry, FlowTemplateCatalogIcon, FlowTemplateCategory, FlowTemplateId, FlowTemplateIdSchema } from './flowTemplates.js';
25
+ export { FlowCommentThreadSource, FlowCommentThreadSourceSchema, FlowTemplateDefaultComment, FlowTemplateDefaultCommentSchema, TEMPLATE_COMMENT_AUTHOR_LABEL } from './flowTemplateComments.js';
26
+ export { CLERK_ORG_ADMIN, CLERK_ORG_MEMBER, WORKSPACE_CAPABILITIES, WORKSPACE_ROLES, WorkspaceCapability, WorkspaceRole, assertWorkspaceRole, hasAnyCapability, hasCapability, parseWorkspaceRole, resolveCapabilities } from './workspaceCapabilities.js';
27
+ export { BILLING_PLAN_KEYS, BillingPlanKey, CONCURRENT_EXPERIMENT_STATUSES, ConcurrentExperimentStatus, LIVE_MAU_OVERAGE_USD_PER_UNIT, PLAN_ENTITLEMENTS, PlanNumericLimit, WorkspacePlanEntitlements, countsTowardConcurrentExperimentLimit, filterCapabilitiesForPlan, formatLiveMauOverageRate, getPlanEntitlements, isPlanLimitUnlimited, isPricingTableMauIncludedLimit, isWithinConcurrentExperimentLimit, isWithinPlanNumericLimit, liveMauOverageUnits, mergeCanvasEditorGatesForPlan, parseBillingPlanKey, pricingTableMauOverageFootnote } from './planEntitlements.js';
28
+ export { MAU_USAGE_ALERT_LEVELS, MAU_USAGE_ALERT_THRESHOLD_50, MAU_USAGE_ALERT_THRESHOLD_80, MauUsageAlertLevel, MauUsageThreshold, UtcCalendarMonthPeriod, getUtcCalendarMonthPeriod, mauUsageBannerLevel, mauUsageEmailAlertLevel, mauUsageThreshold } from './billingPeriod.js';
29
+
30
+ /**
31
+ * External URLs for {@link HyperlinkLayer}: `https` and `mailto` only.
32
+ * Used by Zod refinements and SDK analytics helpers.
33
+ */
34
+ type ParsedHyperlinkHref = {
35
+ ok: true;
36
+ scheme: 'https';
37
+ host: string;
38
+ } | {
39
+ ok: true;
40
+ scheme: 'mailto';
41
+ } | {
42
+ ok: false;
43
+ };
44
+ declare const parseHyperlinkHref: (raw: string) => ParsedHyperlinkHref;
45
+
46
+ /**
47
+ * Period type observed on the purchased package (when the store SDK exposes it).
48
+ * Mirrors RevenueCat's `PeriodType` semantics without binding to provider-specific strings.
49
+ */
50
+ declare const IapPurchasePeriodTypeSchema: z.ZodEnum<["normal", "intro", "trial"]>;
51
+ type IapPurchasePeriodType = z.infer<typeof IapPurchasePeriodTypeSchema>;
52
+ /**
53
+ * Properties carried on the `iap_purchase` SDK event. Emitted by the SDK only
54
+ * on a successful purchase from an external surface (e.g. RevenueCat paywall).
55
+ *
56
+ * `price` and `currency` are the localized gross store price observed at purchase
57
+ * time. `price_usd` is computed server-side at ingest from a daily FX table and
58
+ * MUST NOT be sent by the SDK.
59
+ */
60
+ declare const IapPurchaseEventPropertiesSchema: z.ZodEffects<z.ZodObject<{
61
+ /** External surface provider that produced the purchase. */
62
+ provider: z.ZodLiteral<"revenuecat">;
63
+ /** Manifest node id of the surface (e.g. `surf_paywall_welcome`). */
64
+ surface_node_id: z.ZodString;
65
+ /** Store product identifier (e.g. `pro_annual`). */
66
+ product_id: z.ZodString;
67
+ /** Optional RevenueCat offering id (manifest config or RC metadata). */
68
+ offering_id: z.ZodOptional<z.ZodString>;
69
+ /** Optional RevenueCat package identifier within the offering (e.g. `$rc_annual`). */
70
+ package_id: z.ZodOptional<z.ZodString>;
71
+ /** Localized gross store price at purchase time (non-negative). */
72
+ price: z.ZodOptional<z.ZodNumber>;
73
+ /** ISO 4217 currency code (e.g. `USD`, `EUR`). Stored uppercase. */
74
+ currency: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
75
+ /** Period type when known. */
76
+ period_type: z.ZodOptional<z.ZodEnum<["normal", "intro", "trial"]>>;
77
+ }, "strip", z.ZodTypeAny, {
78
+ provider: "revenuecat";
79
+ surface_node_id: string;
80
+ product_id: string;
81
+ offering_id?: string | undefined;
82
+ package_id?: string | undefined;
83
+ price?: number | undefined;
84
+ currency?: string | undefined;
85
+ period_type?: "normal" | "intro" | "trial" | undefined;
86
+ }, {
87
+ provider: "revenuecat";
88
+ surface_node_id: string;
89
+ product_id: string;
90
+ offering_id?: string | undefined;
91
+ package_id?: string | undefined;
92
+ price?: number | undefined;
93
+ currency?: string | undefined;
94
+ period_type?: "normal" | "intro" | "trial" | undefined;
95
+ }>, {
96
+ provider: "revenuecat";
97
+ surface_node_id: string;
98
+ product_id: string;
99
+ offering_id?: string | undefined;
100
+ package_id?: string | undefined;
101
+ price?: number | undefined;
102
+ currency?: string | undefined;
103
+ period_type?: "normal" | "intro" | "trial" | undefined;
104
+ }, {
105
+ provider: "revenuecat";
106
+ surface_node_id: string;
107
+ product_id: string;
108
+ offering_id?: string | undefined;
109
+ package_id?: string | undefined;
110
+ price?: number | undefined;
111
+ currency?: string | undefined;
112
+ period_type?: "normal" | "intro" | "trial" | undefined;
113
+ }>;
114
+ type IapPurchaseEventProperties = z.infer<typeof IapPurchaseEventPropertiesSchema>;
115
+ /**
116
+ * Server-enriched properties stored on the ClickHouse row. Adds `price_usd`
117
+ * (and an `fx_unavailable` flag when FX lookup failed). The SDK never sets
118
+ * these — ingest strips/overrides them.
119
+ */
120
+ declare const IapPurchaseStoredPropertiesSchema: z.ZodObject<{
121
+ /** External surface provider that produced the purchase. */
122
+ provider: z.ZodLiteral<"revenuecat">;
123
+ /** Manifest node id of the surface (e.g. `surf_paywall_welcome`). */
124
+ surface_node_id: z.ZodString;
125
+ /** Store product identifier (e.g. `pro_annual`). */
126
+ product_id: z.ZodString;
127
+ /** Optional RevenueCat offering id (manifest config or RC metadata). */
128
+ offering_id: z.ZodOptional<z.ZodString>;
129
+ /** Optional RevenueCat package identifier within the offering (e.g. `$rc_annual`). */
130
+ package_id: z.ZodOptional<z.ZodString>;
131
+ /** Localized gross store price at purchase time (non-negative). */
132
+ price: z.ZodOptional<z.ZodNumber>;
133
+ /** ISO 4217 currency code (e.g. `USD`, `EUR`). Stored uppercase. */
134
+ currency: z.ZodOptional<z.ZodEffects<z.ZodString, string, string>>;
135
+ /** Period type when known. */
136
+ period_type: z.ZodOptional<z.ZodEnum<["normal", "intro", "trial"]>>;
137
+ } & {
138
+ /** USD-normalized price computed server-side from daily FX rates. Null when FX missing. */
139
+ price_usd: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
140
+ /** True when client provided price + currency but FX conversion was unavailable. */
141
+ fx_unavailable: z.ZodOptional<z.ZodBoolean>;
142
+ }, "strip", z.ZodTypeAny, {
143
+ provider: "revenuecat";
144
+ surface_node_id: string;
145
+ product_id: string;
146
+ offering_id?: string | undefined;
147
+ package_id?: string | undefined;
148
+ price?: number | undefined;
149
+ currency?: string | undefined;
150
+ period_type?: "normal" | "intro" | "trial" | undefined;
151
+ price_usd?: number | null | undefined;
152
+ fx_unavailable?: boolean | undefined;
153
+ }, {
154
+ provider: "revenuecat";
155
+ surface_node_id: string;
156
+ product_id: string;
157
+ offering_id?: string | undefined;
158
+ package_id?: string | undefined;
159
+ price?: number | undefined;
160
+ currency?: string | undefined;
161
+ period_type?: "normal" | "intro" | "trial" | undefined;
162
+ price_usd?: number | null | undefined;
163
+ fx_unavailable?: boolean | undefined;
164
+ }>;
165
+ type IapPurchaseStoredProperties = z.infer<typeof IapPurchaseStoredPropertiesSchema>;
166
+
167
+ /**
168
+ * Two-sample equal-n sample size for comparing two proportions (two-sided),
169
+ * using the pooled-variance form from the product spec:
170
+ * n = 2 (z_{α/2} + z_β)² p̄(1−p̄) / (p₁−p₀)²
171
+ * Bonferroni: α_per_comparison = α_family / (# treatment arms vs control).
172
+ */
173
+ /** Inverse Φ(p) for standard normal (p ∈ (0,1)) via bisection on Abramowitz–Stegun erf. */
174
+ declare const quantileNormal: (p: number) => number;
175
+ declare const normalCdf: (x: number) => number;
176
+ type SampleDesignResolved = {
177
+ baselineCvr: number;
178
+ mdePp: number;
179
+ familyAlpha: number;
180
+ power: number;
181
+ comparisons: number;
182
+ alphaPerComparison: number;
183
+ p0: number;
184
+ p1: number;
185
+ requiredPerArm: number;
186
+ };
187
+ /** @deprecated Use EXPERIMENT_STATS_DESIGN_DEFAULTS from @getrheo/contracts */
188
+ declare const DEFAULT_STATS_BASELINE_CVR: 0.342;
189
+ /** @deprecated Use EXPERIMENT_STATS_DESIGN_DEFAULTS from @getrheo/contracts */
190
+ declare const DEFAULT_STATS_MDE_PP: 3;
191
+ /** @deprecated Use EXPERIMENT_STATS_DESIGN_DEFAULTS from @getrheo/contracts */
192
+ declare const DEFAULT_STATS_FAMILY_ALPHA: 0.05;
193
+ /** @deprecated Use EXPERIMENT_STATS_DESIGN_DEFAULTS from @getrheo/contracts */
194
+ declare const DEFAULT_STATS_POWER: 0.8;
195
+ declare const resolveExperimentSampleDesign: (row: {
196
+ statsDesignBaselineCvr: number | null;
197
+ statsDesignMdePp: number | null;
198
+ statsDesignAlpha: number | null;
199
+ statsDesignPower: number | null;
200
+ variantCount: number;
201
+ }) => SampleDesignResolved;
202
+ declare const requiredSamplePerArm: (opts: {
203
+ p0: number;
204
+ p1: number;
205
+ alphaTwoSidedPerComparison: number;
206
+ power: number;
207
+ }) => number;
208
+
209
+ /** Version slice of label for pinned arms: human label when set, else v{n}. */
210
+ declare const experimentVariantVersionDescriptor: (versionLabel: string | null | undefined, versionNumber: number | null | undefined) => string;
211
+ type ExperimentVariantDerivedNameInput = {
212
+ flowName: string | null | undefined;
213
+ versionLabel: string | null | undefined;
214
+ versionNumber: number | null | undefined;
215
+ /**
216
+ * When multiple arms share the same pinned (flowId, versionId), order by
217
+ * sortOrder; first is 0 (no suffix), second is 1 → " (2)", etc.
218
+ */
219
+ duplicateOrdinal?: number;
220
+ };
221
+ /** Server and UI: arm display name from flow + version only (no user-provided names). */
222
+ declare const formatExperimentVariantDerivedName: (p: ExperimentVariantDerivedNameInput) => string;
223
+
224
+ export { DEFAULT_STATS_BASELINE_CVR, DEFAULT_STATS_FAMILY_ALPHA, DEFAULT_STATS_MDE_PP, DEFAULT_STATS_POWER, type ExperimentVariantDerivedNameInput, type IapPurchaseEventProperties, IapPurchaseEventPropertiesSchema, type IapPurchasePeriodType, IapPurchasePeriodTypeSchema, type IapPurchaseStoredProperties, IapPurchaseStoredPropertiesSchema, type ParsedHyperlinkHref, type SampleDesignResolved, experimentVariantVersionDescriptor, formatExperimentVariantDerivedName, normalCdf, parseHyperlinkHref, quantileNormal, requiredSamplePerArm, resolveExperimentSampleDesign };