@cravery/core 0.0.19 → 0.0.21

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 (67) hide show
  1. package/dist/types/ai/recipe.d.ts +19 -1
  2. package/dist/types/ai/recipe.d.ts.map +1 -1
  3. package/dist/types/ai/recipe.js.map +1 -1
  4. package/dist/types/ai/translation.d.ts +9 -1
  5. package/dist/types/ai/translation.d.ts.map +1 -1
  6. package/dist/types/ai/translation.js.map +1 -1
  7. package/dist/types/core/asset.d.ts +7 -1
  8. package/dist/types/core/asset.d.ts.map +1 -1
  9. package/dist/types/core/asset.js.map +1 -1
  10. package/dist/types/core/settings.d.ts +24 -2
  11. package/dist/types/core/settings.d.ts.map +1 -1
  12. package/dist/types/core/settings.js.map +1 -1
  13. package/dist/types/iam/profile.d.ts +21 -2
  14. package/dist/types/iam/profile.d.ts.map +1 -1
  15. package/dist/types/iam/profile.js.map +1 -1
  16. package/dist/types/iam/subscription.d.ts +17 -2
  17. package/dist/types/iam/subscription.d.ts.map +1 -1
  18. package/dist/types/iam/subscription.js.map +1 -1
  19. package/dist/types/iam/user.d.ts +18 -1
  20. package/dist/types/iam/user.d.ts.map +1 -1
  21. package/dist/types/iam/user.js +1 -0
  22. package/dist/types/iam/user.js.map +1 -1
  23. package/dist/types/moderation/moderation.d.ts +36 -4
  24. package/dist/types/moderation/moderation.d.ts.map +1 -1
  25. package/dist/types/moderation/moderation.js.map +1 -1
  26. package/dist/types/recipe/equipment.d.ts +11 -3
  27. package/dist/types/recipe/equipment.d.ts.map +1 -1
  28. package/dist/types/recipe/equipment.js.map +1 -1
  29. package/dist/types/recipe/filters.d.ts +11 -1
  30. package/dist/types/recipe/filters.d.ts.map +1 -1
  31. package/dist/types/recipe/filters.js.map +1 -1
  32. package/dist/types/recipe/ingredient.d.ts +28 -6
  33. package/dist/types/recipe/ingredient.d.ts.map +1 -1
  34. package/dist/types/recipe/ingredient.js.map +1 -1
  35. package/dist/types/recipe/instruction.d.ts +12 -3
  36. package/dist/types/recipe/instruction.d.ts.map +1 -1
  37. package/dist/types/recipe/instruction.js.map +1 -1
  38. package/dist/types/recipe/nutrition.d.ts +11 -1
  39. package/dist/types/recipe/nutrition.d.ts.map +1 -1
  40. package/dist/types/recipe/nutrition.js +0 -4
  41. package/dist/types/recipe/nutrition.js.map +1 -1
  42. package/dist/types/recipe/recipe.d.ts +79 -4
  43. package/dist/types/recipe/recipe.d.ts.map +1 -1
  44. package/dist/types/recipe/recipe.js.map +1 -1
  45. package/dist/types/recipe/temperature.d.ts +5 -1
  46. package/dist/types/recipe/temperature.d.ts.map +1 -1
  47. package/dist/types/recipe/temperature.js.map +1 -1
  48. package/dist/types/report/report.d.ts +28 -2
  49. package/dist/types/report/report.d.ts.map +1 -1
  50. package/dist/types/report/report.js.map +1 -1
  51. package/package.json +1 -1
  52. package/src/types/ai/recipe.ts +30 -3
  53. package/src/types/ai/translation.ts +13 -2
  54. package/src/types/core/asset.ts +7 -1
  55. package/src/types/core/settings.ts +30 -4
  56. package/src/types/iam/profile.ts +23 -4
  57. package/src/types/iam/subscription.ts +20 -2
  58. package/src/types/iam/user.ts +16 -2
  59. package/src/types/moderation/moderation.ts +45 -8
  60. package/src/types/recipe/equipment.ts +16 -6
  61. package/src/types/recipe/filters.ts +17 -2
  62. package/src/types/recipe/ingredient.ts +39 -15
  63. package/src/types/recipe/instruction.ts +17 -7
  64. package/src/types/recipe/nutrition.ts +13 -2
  65. package/src/types/recipe/recipe.ts +97 -8
  66. package/src/types/recipe/temperature.ts +7 -3
  67. package/src/types/report/report.ts +33 -3
@@ -1,20 +1,46 @@
1
1
  import { z } from "genkit";
2
2
  import type { Timestamp } from "firebase-admin/firestore";
3
- import { LocaleSchema } from "../core";
3
+ import { LocaleSchema, type Locale } from "../core";
4
4
  import {
5
5
  ModerationStatusSchema,
6
6
  PrioritySchema,
7
7
  SeveritySchema,
8
8
  SuggestionCategorySchema,
9
+ type ModerationStatus,
10
+ type Priority,
11
+ type Severity,
12
+ type SuggestionCategory,
9
13
  } from "./enums";
10
14
 
15
+ export interface ModerationSuggestion {
16
+ category: SuggestionCategory;
17
+ field: string;
18
+ severity: Severity;
19
+ suggestion: string;
20
+ }
21
+
11
22
  export const ModerationSuggestionSchema = z.object({
12
23
  category: SuggestionCategorySchema,
13
24
  field: z.string(),
14
25
  severity: SeveritySchema,
15
26
  suggestion: z.string(),
16
- });
17
- export type ModerationSuggestion = z.infer<typeof ModerationSuggestionSchema>;
27
+ }) satisfies z.ZodType<ModerationSuggestion>;
28
+
29
+ export interface Moderation {
30
+ assessedAt?: Timestamp;
31
+ createdAt: Timestamp;
32
+ id: string;
33
+ originalLocale: Locale;
34
+ priority: Priority;
35
+ qualityScore?: number;
36
+ recipeId: string;
37
+ rejectionReason?: string;
38
+ reviewedAt?: Timestamp;
39
+ reviewedBy?: string;
40
+ status: ModerationStatus;
41
+ suggestions?: ModerationSuggestion[];
42
+ userId: string;
43
+ }
18
44
 
19
45
  export const ModerationSchema = z.object({
20
46
  assessedAt: z.custom<Timestamp>().optional(),
@@ -31,14 +57,26 @@ export const ModerationSchema = z.object({
31
57
  suggestions: z.array(ModerationSuggestionSchema).optional(),
32
58
  userId: z.string(),
33
59
  });
34
- export type Moderation = z.infer<typeof ModerationSchema>;
60
+
61
+ export interface ModerateRecipeInput {
62
+ moderationId: string;
63
+ recipeId: string;
64
+ userId: string;
65
+ }
35
66
 
36
67
  export const ModerateRecipeInputSchema = z.object({
37
68
  moderationId: z.string(),
38
69
  recipeId: z.string(),
39
70
  userId: z.string(),
40
- });
41
- export type ModerateRecipeInput = z.infer<typeof ModerateRecipeInputSchema>;
71
+ }) satisfies z.ZodType<ModerateRecipeInput>;
72
+
73
+ export interface ModerateRecipeOutput {
74
+ autoApproved: boolean;
75
+ autoRejected: boolean;
76
+ qualityScore: number;
77
+ rejectionReason?: string;
78
+ suggestions: ModerationSuggestion[];
79
+ }
42
80
 
43
81
  export const ModerateRecipeOutputSchema = z.object({
44
82
  autoApproved: z.boolean(),
@@ -46,5 +84,4 @@ export const ModerateRecipeOutputSchema = z.object({
46
84
  qualityScore: z.number().min(0).max(1),
47
85
  rejectionReason: z.string().optional(),
48
86
  suggestions: z.array(ModerationSuggestionSchema),
49
- });
50
- export type ModerateRecipeOutput = z.infer<typeof ModerateRecipeOutputSchema>;
87
+ }) satisfies z.ZodType<ModerateRecipeOutput>;
@@ -1,21 +1,31 @@
1
1
  import { z } from "genkit";
2
2
  import { SLUG_REGEX } from "../../config";
3
3
 
4
+ export interface EquipmentMeta {
5
+ required?: boolean;
6
+ slug: string;
7
+ }
8
+
4
9
  export const EquipmentMetaSchema = z.object({
5
10
  required: z.boolean().optional(),
6
11
  slug: z.string().regex(SLUG_REGEX),
7
- });
8
- export type EquipmentMeta = z.infer<typeof EquipmentMetaSchema>;
12
+ }) satisfies z.ZodType<EquipmentMeta>;
13
+
14
+ export interface EquipmentContent {
15
+ name: string;
16
+ notes?: string;
17
+ slug: string;
18
+ }
9
19
 
10
20
  export const EquipmentContentSchema = z.object({
11
21
  name: z.string().min(1).max(100),
12
22
  notes: z.string().max(200).optional(),
13
23
  slug: z.string().regex(SLUG_REGEX),
14
- });
15
- export type EquipmentContent = z.infer<typeof EquipmentContentSchema>;
24
+ }) satisfies z.ZodType<EquipmentContent>;
25
+
26
+ export interface Equipment extends EquipmentMeta, EquipmentContent {}
16
27
 
17
28
  export const EquipmentSchema = z.object({
18
29
  ...EquipmentMetaSchema.shape,
19
30
  ...EquipmentContentSchema.shape,
20
- });
21
- export type Equipment = z.infer<typeof EquipmentSchema>;
31
+ }) satisfies z.ZodType<Equipment>;
@@ -5,8 +5,24 @@ import {
5
5
  DifficultySchema,
6
6
  MealTypeSchema,
7
7
  SpicinessSchema,
8
+ type Cuisine,
9
+ type DietaryTag,
10
+ type Difficulty,
11
+ type MealType,
12
+ type Spiciness,
8
13
  } from "./enums";
9
14
 
15
+ export interface RecipeFilters {
16
+ cuisines?: Cuisine[];
17
+ dietaryTags?: DietaryTag[];
18
+ difficulty?: Difficulty;
19
+ excludeIngredients?: string[];
20
+ includeIngredients?: string[];
21
+ mealTypes?: MealType[];
22
+ spiciness?: Spiciness;
23
+ timeLimit?: number;
24
+ }
25
+
10
26
  export const RecipeFiltersSchema = z.object({
11
27
  cuisines: z.array(CuisineSchema).optional(),
12
28
  dietaryTags: z.array(DietaryTagSchema).optional(),
@@ -16,5 +32,4 @@ export const RecipeFiltersSchema = z.object({
16
32
  mealTypes: z.array(MealTypeSchema).optional(),
17
33
  spiciness: SpicinessSchema.optional(),
18
34
  timeLimit: z.number().int().min(5).max(300).optional(),
19
- });
20
- export type RecipeFilters = z.infer<typeof RecipeFiltersSchema>;
35
+ }) satisfies z.ZodType<RecipeFilters>;
@@ -1,46 +1,70 @@
1
1
  import { z } from "genkit";
2
2
  import { SLUG_REGEX } from "../../config";
3
- import { UnitSchema } from "./enums";
3
+ import { UnitSchema, type Unit } from "./enums";
4
+
5
+ export interface IngredientMeta {
6
+ quantity?: number;
7
+ required?: boolean;
8
+ slug: string;
9
+ unit?: Unit;
10
+ }
4
11
 
5
12
  export const IngredientMetaSchema = z.object({
6
13
  quantity: z.number().positive().optional(),
7
14
  required: z.boolean().optional(),
8
15
  slug: z.string().regex(SLUG_REGEX),
9
16
  unit: UnitSchema.optional(),
10
- });
11
- export type IngredientMeta = z.infer<typeof IngredientMetaSchema>;
17
+ }) satisfies z.ZodType<IngredientMeta>;
18
+
19
+ export interface IngredientContent {
20
+ name: string;
21
+ notes?: string;
22
+ slug: string;
23
+ }
12
24
 
13
25
  export const IngredientContentSchema = z.object({
14
26
  name: z.string().min(1).max(100),
15
27
  notes: z.string().max(200).optional(),
16
28
  slug: z.string().regex(SLUG_REGEX),
17
- });
18
- export type IngredientContent = z.infer<typeof IngredientContentSchema>;
29
+ }) satisfies z.ZodType<IngredientContent>;
30
+
31
+ export interface Ingredient extends IngredientMeta, IngredientContent {}
19
32
 
20
33
  export const IngredientSchema = z.object({
21
34
  ...IngredientMetaSchema.shape,
22
35
  ...IngredientContentSchema.shape,
23
- });
24
- export type Ingredient = z.infer<typeof IngredientSchema>;
36
+ }) satisfies z.ZodType<Ingredient>;
37
+
38
+ export interface IngredientSectionMeta {
39
+ ingredients: IngredientMeta[];
40
+ slug: string;
41
+ }
25
42
 
26
43
  export const IngredientSectionMetaSchema = z.object({
27
44
  ingredients: z.array(IngredientMetaSchema).min(1),
28
45
  slug: z.string().regex(SLUG_REGEX),
29
- });
30
- export type IngredientSectionMeta = z.infer<typeof IngredientSectionMetaSchema>;
46
+ }) satisfies z.ZodType<IngredientSectionMeta>;
47
+
48
+ export interface IngredientSectionContent {
49
+ ingredients: IngredientContent[];
50
+ slug: string;
51
+ title?: string;
52
+ }
31
53
 
32
54
  export const IngredientSectionContentSchema = z.object({
33
55
  ingredients: z.array(IngredientContentSchema).min(1),
34
56
  slug: z.string().regex(SLUG_REGEX),
35
57
  title: z.string().max(100).optional(),
36
- });
37
- export type IngredientSectionContent = z.infer<
38
- typeof IngredientSectionContentSchema
39
- >;
58
+ }) satisfies z.ZodType<IngredientSectionContent>;
59
+
60
+ export interface IngredientSection {
61
+ ingredients: Ingredient[];
62
+ slug: string;
63
+ title?: string;
64
+ }
40
65
 
41
66
  export const IngredientSectionSchema = z.object({
42
67
  ingredients: z.array(IngredientSchema).min(1),
43
68
  slug: z.string().regex(SLUG_REGEX),
44
69
  title: z.string().max(100).optional(),
45
- });
46
- export type IngredientSection = z.infer<typeof IngredientSectionSchema>;
70
+ }) satisfies z.ZodType<IngredientSection>;
@@ -1,21 +1,31 @@
1
1
  import { z } from "genkit";
2
- import { TemperatureSchema } from "./temperature";
2
+ import { TemperatureSchema, type Temperature } from "./temperature";
3
+
4
+ export interface InstructionMeta {
5
+ duration?: number;
6
+ step: number;
7
+ temperature?: Temperature;
8
+ }
3
9
 
4
10
  export const InstructionMetaSchema = z.object({
5
11
  duration: z.number().int().positive().optional(),
6
12
  step: z.number().int().positive(),
7
13
  temperature: TemperatureSchema.optional(),
8
- });
9
- export type InstructionMeta = z.infer<typeof InstructionMetaSchema>;
14
+ }) satisfies z.ZodType<InstructionMeta>;
15
+
16
+ export interface InstructionContent {
17
+ step: number;
18
+ text: string;
19
+ }
10
20
 
11
21
  export const InstructionContentSchema = z.object({
12
22
  step: z.number().int().positive(),
13
23
  text: z.string().min(1).max(1000),
14
- });
15
- export type InstructionContent = z.infer<typeof InstructionContentSchema>;
24
+ }) satisfies z.ZodType<InstructionContent>;
25
+
26
+ export interface Instruction extends InstructionMeta, InstructionContent {}
16
27
 
17
28
  export const InstructionSchema = z.object({
18
29
  ...InstructionMetaSchema.shape,
19
30
  ...InstructionContentSchema.shape,
20
- });
21
- export type Instruction = z.infer<typeof InstructionSchema>;
31
+ }) satisfies z.ZodType<Instruction>;
@@ -4,6 +4,18 @@ import { z } from "genkit";
4
4
  * Nutrition data per serving.
5
5
  * Units: calories (kcal), fat/carbs/protein/fiber/sugar (g), cholesterol/sodium (mg)
6
6
  */
7
+ export interface Nutrition {
8
+ calories: number;
9
+ carbs?: number;
10
+ cholesterol?: number;
11
+ fat?: number;
12
+ fiber?: number;
13
+ protein?: number;
14
+ saturatedFat?: number;
15
+ sodium?: number;
16
+ sugar?: number;
17
+ }
18
+
7
19
  export const NutritionSchema = z.object({
8
20
  calories: z.number().nonnegative(),
9
21
  carbs: z.number().nonnegative().optional(),
@@ -14,5 +26,4 @@ export const NutritionSchema = z.object({
14
26
  saturatedFat: z.number().nonnegative().optional(),
15
27
  sodium: z.number().nonnegative().optional(),
16
28
  sugar: z.number().nonnegative().optional(),
17
- });
18
- export type Nutrition = z.infer<typeof NutritionSchema>;
29
+ }) satisfies z.ZodType<Nutrition>;
@@ -1,6 +1,6 @@
1
1
  import { z } from "genkit";
2
2
  import type { Timestamp } from "firebase-admin/firestore";
3
- import { LocaleSchema } from "../core";
3
+ import { LocaleSchema, type Locale } from "../core";
4
4
  import {
5
5
  AllergenSchema,
6
6
  CuisineSchema,
@@ -10,23 +10,66 @@ import {
10
10
  RecipeSourceSchema,
11
11
  RecipeStatusSchema,
12
12
  SpicinessSchema,
13
+ type Allergen,
14
+ type Cuisine,
15
+ type DietaryTag,
16
+ type Difficulty,
17
+ type MealType,
18
+ type RecipeSource,
19
+ type RecipeStatus,
20
+ type Spiciness,
13
21
  } from "./enums";
14
22
  import {
15
23
  EquipmentContentSchema,
16
24
  EquipmentMetaSchema,
17
25
  EquipmentSchema,
26
+ type Equipment,
27
+ type EquipmentContent,
28
+ type EquipmentMeta,
18
29
  } from "./equipment";
19
30
  import {
20
31
  IngredientSectionContentSchema,
21
32
  IngredientSectionMetaSchema,
22
33
  IngredientSectionSchema,
34
+ type IngredientSection,
35
+ type IngredientSectionContent,
36
+ type IngredientSectionMeta,
23
37
  } from "./ingredient";
24
38
  import {
25
39
  InstructionContentSchema,
26
40
  InstructionMetaSchema,
27
41
  InstructionSchema,
42
+ type Instruction,
43
+ type InstructionContent,
44
+ type InstructionMeta,
28
45
  } from "./instruction";
29
- import { NutritionSchema } from "./nutrition";
46
+ import { NutritionSchema, type Nutrition } from "./nutrition";
47
+
48
+ export interface RecipeMeta {
49
+ allergens: Allergen[];
50
+ confidence: number;
51
+ createdAt: Timestamp;
52
+ createdBy: string;
53
+ cuisine: Cuisine;
54
+ deletedAt?: Timestamp;
55
+ dietaryTags: DietaryTag[];
56
+ difficulty: Difficulty;
57
+ equipment?: EquipmentMeta[];
58
+ id: string;
59
+ imageUrl?: string;
60
+ ingredientSections: IngredientSectionMeta[];
61
+ instructions: InstructionMeta[];
62
+ mealTypes: MealType[];
63
+ nutrition?: Nutrition;
64
+ originalLocale: Locale;
65
+ servings: number;
66
+ source: RecipeSource;
67
+ sourceUrl?: string;
68
+ spiciness: Spiciness;
69
+ status: RecipeStatus;
70
+ time: number;
71
+ updatedAt: Timestamp;
72
+ }
30
73
 
31
74
  export const RecipeMetaSchema = z.object({
32
75
  allergens: z.array(AllergenSchema),
@@ -53,7 +96,16 @@ export const RecipeMetaSchema = z.object({
53
96
  time: z.number().int().min(1).max(1440),
54
97
  updatedAt: z.custom<Timestamp>(),
55
98
  });
56
- export type RecipeMeta = z.infer<typeof RecipeMetaSchema>;
99
+
100
+ export interface RecipeContent {
101
+ description: string;
102
+ equipment?: EquipmentContent[];
103
+ ingredientSections: IngredientSectionContent[];
104
+ instructions: InstructionContent[];
105
+ locale: Locale;
106
+ tips?: string[];
107
+ title: string;
108
+ }
57
109
 
58
110
  export const RecipeContentSchema = z.object({
59
111
  description: z.string().min(10).max(2000),
@@ -63,8 +115,37 @@ export const RecipeContentSchema = z.object({
63
115
  locale: LocaleSchema,
64
116
  tips: z.array(z.string().max(500)).max(20).optional(),
65
117
  title: z.string().min(3).max(200),
66
- });
67
- export type RecipeContent = z.infer<typeof RecipeContentSchema>;
118
+ }) satisfies z.ZodType<RecipeContent>;
119
+
120
+ export interface Recipe {
121
+ allergens: Allergen[];
122
+ confidence: number;
123
+ createdAt: Timestamp;
124
+ createdBy: string;
125
+ cuisine: Cuisine;
126
+ deletedAt?: Timestamp;
127
+ description: string;
128
+ dietaryTags: DietaryTag[];
129
+ difficulty: Difficulty;
130
+ equipment?: Equipment[];
131
+ id: string;
132
+ imageUrl?: string;
133
+ ingredientSections: IngredientSection[];
134
+ instructions: Instruction[];
135
+ locale: Locale;
136
+ mealTypes: MealType[];
137
+ nutrition?: Nutrition;
138
+ originalLocale: Locale;
139
+ servings: number;
140
+ source: RecipeSource;
141
+ sourceUrl?: string;
142
+ spiciness: Spiciness;
143
+ status: RecipeStatus;
144
+ time: number;
145
+ tips?: string[];
146
+ title: string;
147
+ updatedAt: Timestamp;
148
+ }
68
149
 
69
150
  export const RecipeSchema = z.object({
70
151
  allergens: z.array(AllergenSchema),
@@ -95,7 +176,16 @@ export const RecipeSchema = z.object({
95
176
  title: z.string().min(3).max(200),
96
177
  updatedAt: z.custom<Timestamp>(),
97
178
  });
98
- export type Recipe = z.infer<typeof RecipeSchema>;
179
+
180
+ export interface RecipeStats {
181
+ comments: number;
182
+ likes: number;
183
+ rating: number;
184
+ ratingCount: number;
185
+ saves: number;
186
+ updatedAt: number;
187
+ views: number;
188
+ }
99
189
 
100
190
  export const RecipeStatsSchema = z.object({
101
191
  comments: z.number().int().nonnegative(),
@@ -105,5 +195,4 @@ export const RecipeStatsSchema = z.object({
105
195
  saves: z.number().int().nonnegative(),
106
196
  updatedAt: z.number().int(),
107
197
  views: z.number().int().nonnegative(),
108
- });
109
- export type RecipeStats = z.infer<typeof RecipeStatsSchema>;
198
+ }) satisfies z.ZodType<RecipeStats>;
@@ -1,8 +1,12 @@
1
1
  import { z } from "genkit";
2
- import { TemperatureUnitSchema } from "./enums";
2
+ import { TemperatureUnitSchema, type TemperatureUnit } from "./enums";
3
+
4
+ export interface Temperature {
5
+ unit: TemperatureUnit;
6
+ value: number;
7
+ }
3
8
 
4
9
  export const TemperatureSchema = z.object({
5
10
  unit: TemperatureUnitSchema,
6
11
  value: z.number().min(-50).max(1000),
7
- });
8
- export type Temperature = z.infer<typeof TemperatureSchema>;
12
+ }) satisfies z.ZodType<Temperature>;
@@ -5,15 +5,46 @@ import {
5
5
  ReportStatusSchema,
6
6
  ReportTargetTypeSchema,
7
7
  ReportTypeSchema,
8
+ type ReportPriority,
9
+ type ReportStatus,
10
+ type ReportTargetType,
11
+ type ReportType,
8
12
  } from "./enums";
9
13
 
14
+ export interface ReportEvidence {
15
+ aiScore?: number;
16
+ aiSuggestions?: Record<string, unknown>[];
17
+ contentSnapshot?: string;
18
+ imageHashes?: string[];
19
+ }
20
+
10
21
  export const ReportEvidenceSchema = z.object({
11
22
  aiScore: z.number().min(0).max(1).optional(),
12
23
  aiSuggestions: z.array(z.record(z.string(), z.unknown())).optional(),
13
24
  contentSnapshot: z.string().optional(),
14
25
  imageHashes: z.array(z.string()).optional(),
15
- });
16
- export type ReportEvidence = z.infer<typeof ReportEvidenceSchema>;
26
+ }) satisfies z.ZodType<ReportEvidence>;
27
+
28
+ export interface Report {
29
+ categories: string[];
30
+ createdAt: Timestamp;
31
+ description: string;
32
+ evidence?: ReportEvidence;
33
+ id: string;
34
+ notes?: string;
35
+ priority: ReportPriority;
36
+ reason: string;
37
+ reportedBy?: string;
38
+ resolution?: string;
39
+ reviewedAt?: Timestamp;
40
+ reviewedBy?: string;
41
+ status: ReportStatus;
42
+ targetId: string;
43
+ targetType: ReportTargetType;
44
+ type: ReportType;
45
+ updatedAt: Timestamp;
46
+ userId: string;
47
+ }
17
48
 
18
49
  export const ReportSchema = z.object({
19
50
  categories: z.array(z.string()),
@@ -35,4 +66,3 @@ export const ReportSchema = z.object({
35
66
  updatedAt: z.custom<Timestamp>(),
36
67
  userId: z.string(),
37
68
  });
38
- export type Report = z.infer<typeof ReportSchema>;