@pantry-pilot/pantry-pilot-api 1.0.3 → 1.4.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/dist/index.d.ts CHANGED
@@ -1,8 +1,71 @@
1
1
  import type { QueryKey, UseMutationOptions, UseMutationResult, UseQueryOptions, UseQueryResult } from '@tanstack/react-query';
2
2
  import type { AxiosError, AxiosRequestConfig, AxiosResponse } from 'axios';
3
+ export type ActivePlanSlotRecipeId = number | null;
4
+ export type ActivePlanSlotCatalogRecipeId = number | null;
5
+ export type ActivePlanSlotTitle = string | null;
6
+ export type ActivePlanSlotServingsOverride = number | null;
7
+ export type ActivePlanSlotNotes = string | null;
8
+ /**
9
+ * One of today's slots in the dashboard's active-plan widget (§5.3).
10
+ */
11
+ export interface ActivePlanSlot {
12
+ id: number;
13
+ day_index: number;
14
+ meal_type: MealTypeEnum;
15
+ recipe_id?: ActivePlanSlotRecipeId;
16
+ catalog_recipe_id?: ActivePlanSlotCatalogRecipeId;
17
+ title?: ActivePlanSlotTitle;
18
+ servings_override?: ActivePlanSlotServingsOverride;
19
+ notes?: ActivePlanSlotNotes;
20
+ position?: number;
21
+ skip?: boolean;
22
+ }
23
+ export type ActivePlanSummaryWeekStart = string | null;
24
+ export type ActivePlanSummaryDurationWeeks = number | null;
25
+ export type ActivePlanSummaryDayIndex = number | null;
26
+ /**
27
+ * The household's active plan + today's slots. ``day_index`` is today's
28
+ index within the plan week (null when the plan is not dated / today is
29
+ outside it, in which case ``slots`` is empty).
30
+ */
31
+ export interface ActivePlanSummary {
32
+ plan_id: number;
33
+ name: string;
34
+ kind: MealPlanKindEnum;
35
+ status: MealPlanStatusEnum;
36
+ week_start?: ActivePlanSummaryWeekStart;
37
+ duration_weeks?: ActivePlanSummaryDurationWeeks;
38
+ day_index?: ActivePlanSummaryDayIndex;
39
+ slots?: ActivePlanSlot[];
40
+ }
41
+ export type AddMissingRequestShoppingListId = number | null;
42
+ export interface AddMissingRequest {
43
+ shopping_list_id?: AddMissingRequestShoppingListId;
44
+ }
45
+ export interface AddMissingResponse {
46
+ shopping_list_id: number;
47
+ added?: ShoppingListItemResponse[];
48
+ skipped?: string[];
49
+ }
50
+ export interface BarcodeRequest {
51
+ /**
52
+ * UPC/EAN barcode (8-14 digits)
53
+ * @pattern ^\d{8,14}$
54
+ */
55
+ barcode: string;
56
+ }
57
+ export type BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPostStepIndex = number | null;
58
+ export type BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPostCaption = string | null;
59
+ export interface BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPost {
60
+ file: string;
61
+ step_index?: BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPostStepIndex;
62
+ caption?: BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPostCaption;
63
+ }
3
64
  export type BodyCreatePantryItemPantryItemsPostExpirationDate = string | null;
4
65
  export type BodyCreatePantryItemPantryItemsPostLocation = LocationEnum | null;
66
+ export type BodyCreatePantryItemPantryItemsPostLocationId = number | null;
5
67
  export type BodyCreatePantryItemPantryItemsPostNotes = string | null;
68
+ export type BodyCreatePantryItemPantryItemsPostIngredientId = number | null;
6
69
  export type BodyCreatePantryItemPantryItemsPostImage = string | null;
7
70
  export interface BodyCreatePantryItemPantryItemsPost {
8
71
  name: string;
@@ -11,7 +74,9 @@ export interface BodyCreatePantryItemPantryItemsPost {
11
74
  quantity_unit: QuantityUnitEnum;
12
75
  expiration_date?: BodyCreatePantryItemPantryItemsPostExpirationDate;
13
76
  location?: BodyCreatePantryItemPantryItemsPostLocation;
77
+ location_id?: BodyCreatePantryItemPantryItemsPostLocationId;
14
78
  notes?: BodyCreatePantryItemPantryItemsPostNotes;
79
+ ingredient_id?: BodyCreatePantryItemPantryItemsPostIngredientId;
15
80
  image?: BodyCreatePantryItemPantryItemsPostImage;
16
81
  }
17
82
  export interface BodyCreateRecipeRecipesPost {
@@ -24,12 +89,19 @@ export interface BodyCreateRecipeRecipesPost {
24
89
  servings?: number;
25
90
  image?: string;
26
91
  }
92
+ export interface BodyRecognizeItemsAiRecognizeItemsPost {
93
+ image: string;
94
+ }
95
+ export interface BodyRecognizeReceiptAiRecognizeReceiptPost {
96
+ image: string;
97
+ }
27
98
  export type BodyUpdatePantryItemPantryItemsItemIdPutName = string | null;
28
99
  export type BodyUpdatePantryItemPantryItemsItemIdPutItemType = ItemTypeEnum | null;
29
100
  export type BodyUpdatePantryItemPantryItemsItemIdPutQuantity = number | null;
30
101
  export type BodyUpdatePantryItemPantryItemsItemIdPutQuantityUnit = QuantityUnitEnum | null;
31
102
  export type BodyUpdatePantryItemPantryItemsItemIdPutExpirationDate = string | null;
32
103
  export type BodyUpdatePantryItemPantryItemsItemIdPutLocation = LocationEnum | null;
104
+ export type BodyUpdatePantryItemPantryItemsItemIdPutLocationId = number | null;
33
105
  export type BodyUpdatePantryItemPantryItemsItemIdPutNotes = string | null;
34
106
  export type BodyUpdatePantryItemPantryItemsItemIdPutImage = string | null;
35
107
  export type BodyUpdatePantryItemPantryItemsItemIdPutClearImage = string | null;
@@ -40,6 +112,7 @@ export interface BodyUpdatePantryItemPantryItemsItemIdPut {
40
112
  quantity_unit?: BodyUpdatePantryItemPantryItemsItemIdPutQuantityUnit;
41
113
  expiration_date?: BodyUpdatePantryItemPantryItemsItemIdPutExpirationDate;
42
114
  location?: BodyUpdatePantryItemPantryItemsItemIdPutLocation;
115
+ location_id?: BodyUpdatePantryItemPantryItemsItemIdPutLocationId;
43
116
  notes?: BodyUpdatePantryItemPantryItemsItemIdPutNotes;
44
117
  image?: BodyUpdatePantryItemPantryItemsItemIdPutImage;
45
118
  clear_image?: BodyUpdatePantryItemPantryItemsItemIdPutClearImage;
@@ -57,6 +130,144 @@ export interface BodyUpdateRecipeRecipesRecipeIdPut {
57
130
  image?: string;
58
131
  clear_image?: BodyUpdateRecipeRecipesRecipeIdPutClearImage;
59
132
  }
133
+ export interface BulkItemError {
134
+ code: string;
135
+ detail: string;
136
+ }
137
+ export type BulkItemFailureClientRef = string | null;
138
+ export interface BulkItemFailure {
139
+ index: number;
140
+ client_ref?: BulkItemFailureClientRef;
141
+ error: BulkItemError;
142
+ }
143
+ export type BulkItemSuccessClientRef = string | null;
144
+ export interface BulkItemSuccess {
145
+ index: number;
146
+ id: number;
147
+ client_ref?: BulkItemSuccessClientRef;
148
+ status: string;
149
+ }
150
+ export type BulkMode = typeof BulkMode[keyof typeof BulkMode];
151
+ export declare const BulkMode: {
152
+ readonly best_effort: "best_effort";
153
+ readonly atomic: "atomic";
154
+ };
155
+ export interface BulkResponse {
156
+ succeeded?: BulkItemSuccess[];
157
+ failed?: BulkItemFailure[];
158
+ }
159
+ export type CatalogIngredientDetailDefaultUnit = QuantityUnitEnum | null;
160
+ export type CatalogIngredientDetailShelfLifeDays = number | null;
161
+ export type CatalogIngredientDetailFdcId = number | null;
162
+ export interface CatalogIngredientDetail {
163
+ id: number;
164
+ name: string;
165
+ normalized_name: string;
166
+ category: ItemTypeEnum;
167
+ default_unit?: CatalogIngredientDetailDefaultUnit;
168
+ shelf_life_days?: CatalogIngredientDetailShelfLifeDays;
169
+ fdc_id?: CatalogIngredientDetailFdcId;
170
+ aliases?: string[];
171
+ substitutions?: CatalogSubstitutionOut[];
172
+ }
173
+ export type CatalogIngredientSummaryDefaultUnit = QuantityUnitEnum | null;
174
+ export type CatalogIngredientSummaryShelfLifeDays = number | null;
175
+ export type CatalogIngredientSummaryFdcId = number | null;
176
+ export interface CatalogIngredientSummary {
177
+ id: number;
178
+ name: string;
179
+ normalized_name: string;
180
+ category: ItemTypeEnum;
181
+ default_unit?: CatalogIngredientSummaryDefaultUnit;
182
+ shelf_life_days?: CatalogIngredientSummaryShelfLifeDays;
183
+ fdc_id?: CatalogIngredientSummaryFdcId;
184
+ }
185
+ export type CatalogRecipeDetailSourceId = string | null;
186
+ export type CatalogRecipeDetailDescription = string | null;
187
+ export type CatalogRecipeDetailServings = number | null;
188
+ export type CatalogRecipeDetailPrepTime = number | null;
189
+ export type CatalogRecipeDetailCookTime = number | null;
190
+ export type CatalogRecipeDetailImageUrl = string | null;
191
+ export type CatalogRecipeDetailQualityScore = number | null;
192
+ export interface CatalogRecipeDetail {
193
+ id: number;
194
+ source: CatalogSourceEnum;
195
+ source_id?: CatalogRecipeDetailSourceId;
196
+ title: string;
197
+ description?: CatalogRecipeDetailDescription;
198
+ servings?: CatalogRecipeDetailServings;
199
+ prep_time?: CatalogRecipeDetailPrepTime;
200
+ cook_time?: CatalogRecipeDetailCookTime;
201
+ image_url?: CatalogRecipeDetailImageUrl;
202
+ quality_score?: CatalogRecipeDetailQualityScore;
203
+ tags?: string[];
204
+ instructions?: string[];
205
+ ingredients?: CatalogRecipeIngredientOut[];
206
+ }
207
+ export type CatalogRecipeIngredientOutIngredientId = number | null;
208
+ export type CatalogRecipeIngredientOutIngredientName = string | null;
209
+ export type CatalogRecipeIngredientOutQuantity = number | null;
210
+ export type CatalogRecipeIngredientOutUnit = string | null;
211
+ export interface CatalogRecipeIngredientOut {
212
+ ingredient_id?: CatalogRecipeIngredientOutIngredientId;
213
+ ingredient_name?: CatalogRecipeIngredientOutIngredientName;
214
+ raw_text: string;
215
+ quantity?: CatalogRecipeIngredientOutQuantity;
216
+ unit?: CatalogRecipeIngredientOutUnit;
217
+ optional?: boolean;
218
+ position?: number;
219
+ }
220
+ export type CatalogRecipeSummarySourceId = string | null;
221
+ export type CatalogRecipeSummaryDescription = string | null;
222
+ export type CatalogRecipeSummaryServings = number | null;
223
+ export type CatalogRecipeSummaryPrepTime = number | null;
224
+ export type CatalogRecipeSummaryCookTime = number | null;
225
+ export type CatalogRecipeSummaryImageUrl = string | null;
226
+ export type CatalogRecipeSummaryQualityScore = number | null;
227
+ export interface CatalogRecipeSummary {
228
+ id: number;
229
+ source: CatalogSourceEnum;
230
+ source_id?: CatalogRecipeSummarySourceId;
231
+ title: string;
232
+ description?: CatalogRecipeSummaryDescription;
233
+ servings?: CatalogRecipeSummaryServings;
234
+ prep_time?: CatalogRecipeSummaryPrepTime;
235
+ cook_time?: CatalogRecipeSummaryCookTime;
236
+ image_url?: CatalogRecipeSummaryImageUrl;
237
+ quality_score?: CatalogRecipeSummaryQualityScore;
238
+ tags?: string[];
239
+ }
240
+ export type CatalogSourceEnum = typeof CatalogSourceEnum[keyof typeof CatalogSourceEnum];
241
+ export declare const CatalogSourceEnum: {
242
+ readonly curated: "curated";
243
+ readonly themealdb: "themealdb";
244
+ readonly recipenlg: "recipenlg";
245
+ readonly user: "user";
246
+ readonly generated: "generated";
247
+ };
248
+ export type CatalogSubstitutionOutRatio = number | null;
249
+ export type CatalogSubstitutionOutNote = string | null;
250
+ export interface CatalogSubstitutionOut {
251
+ ingredient_id: number;
252
+ name: string;
253
+ ratio?: CatalogSubstitutionOutRatio;
254
+ note?: CatalogSubstitutionOutNote;
255
+ context?: string;
256
+ }
257
+ export interface CatalogTagOut {
258
+ id: number;
259
+ kind: TagKindEnum;
260
+ name: string;
261
+ }
262
+ export interface ConsumeRequest {
263
+ /** */
264
+ quantity: number;
265
+ }
266
+ export type ConsumeResponseItem = PantryItemResponse | null;
267
+ export interface ConsumeResponse {
268
+ deleted: boolean;
269
+ item?: ConsumeResponseItem;
270
+ }
60
271
  export type CuisineTypeEnum = typeof CuisineTypeEnum[keyof typeof CuisineTypeEnum];
61
272
  export declare const CuisineTypeEnum: {
62
273
  readonly italian: "italian";
@@ -70,9 +281,237 @@ export declare const CuisineTypeEnum: {
70
281
  readonly american: "american";
71
282
  readonly other: "other";
72
283
  };
284
+ export type DashboardSummaryResponseLowStockNote = string | null;
285
+ export type DashboardSummaryResponseActivePlan = ActivePlanSummary | null;
286
+ /**
287
+ * One aggregate call for the app home screen, household-scoped.
288
+
289
+ The shape is frozen: P2 filled ``suggested_recipes`` with the top-3
290
+ coverage suggestions; P3 fills ``active_plan`` with the household's
291
+ active meal plan.
292
+ */
293
+ export interface DashboardSummaryResponse {
294
+ expired_count: number;
295
+ expiring_soon: PantryItemResponse[];
296
+ low_stock: PantryItemResponse[];
297
+ low_stock_note?: DashboardSummaryResponseLowStockNote;
298
+ recent_events: InventoryEventResponse[];
299
+ active_plan?: DashboardSummaryResponseActivePlan;
300
+ suggested_recipes?: RecipeSuggestion[];
301
+ }
302
+ export type DiscoverySortEnum = typeof DiscoverySortEnum[keyof typeof DiscoverySortEnum];
303
+ export declare const DiscoverySortEnum: {
304
+ readonly recent: "recent";
305
+ readonly top_rated: "top_rated";
306
+ readonly most_favorited: "most_favorited";
307
+ };
308
+ export type ExpiringIngredientIngredientId = number | null;
309
+ export type ExpiringIngredientPantryItemId = number | null;
310
+ export type ExpiringIngredientExpirationDate = string | null;
311
+ export interface ExpiringIngredient {
312
+ name: string;
313
+ ingredient_id?: ExpiringIngredientIngredientId;
314
+ pantry_item_id?: ExpiringIngredientPantryItemId;
315
+ expiration_date?: ExpiringIngredientExpirationDate;
316
+ }
317
+ export type FavoriteResponseRecipeId = number | null;
318
+ export type FavoriteResponseMealPlanId = number | null;
319
+ export interface FavoriteResponse {
320
+ id: number;
321
+ user_id: number;
322
+ target_type: SocialTargetEnum;
323
+ recipe_id?: FavoriteResponseRecipeId;
324
+ meal_plan_id?: FavoriteResponseMealPlanId;
325
+ created_at: string;
326
+ }
327
+ export type GenerateRecipeRequestCuisine = string | null;
328
+ export interface GenerateRecipeRequest {
329
+ /** @maxLength 500 */
330
+ preferences?: string;
331
+ cuisine?: GenerateRecipeRequestCuisine;
332
+ /**
333
+ * @minimum 1
334
+ * @maximum 30
335
+ */
336
+ expiry_days_threshold?: number;
337
+ }
338
+ export interface GoogleLogin {
339
+ /** @minLength 1 */
340
+ id_token: string;
341
+ }
342
+ export type GroundedScaledIngredientQuantity = number | null;
343
+ export type GroundedScaledIngredientUnit = string | null;
344
+ export interface GroundedScaledIngredient {
345
+ /**
346
+ * @minLength 1
347
+ * @maxLength 200
348
+ */
349
+ name: string;
350
+ quantity?: GroundedScaledIngredientQuantity;
351
+ unit?: GroundedScaledIngredientUnit;
352
+ is_in_pantry?: boolean;
353
+ }
354
+ /**
355
+ * Numeric id of a candidate catalog recipe, or null for a novel generated recipe
356
+ */
357
+ export type GroundedSuggestionCatalogRecipeId = number | null;
358
+ /**
359
+ * One LLM adaptation: either a catalog candidate (by id) or — only when
360
+ every candidate's coverage is below 50% — one novel recipe (id null).
361
+ */
362
+ export interface GroundedSuggestion {
363
+ /** Numeric id of a candidate catalog recipe, or null for a novel generated recipe */
364
+ catalog_recipe_id?: GroundedSuggestionCatalogRecipeId;
365
+ /**
366
+ * @minLength 1
367
+ * @maxLength 300
368
+ */
369
+ title: string;
370
+ /**
371
+ * @maximum 50
372
+ */
373
+ servings: number;
374
+ scaled_ingredients?: GroundedScaledIngredient[];
375
+ missing?: string[];
376
+ substitutions_applied?: string[];
377
+ uses_expiring?: string[];
378
+ /**
379
+ * @minLength 1
380
+ * @maxLength 500
381
+ */
382
+ rationale: string;
383
+ }
73
384
  export interface HTTPValidationError {
74
385
  detail?: ValidationError[];
75
386
  }
387
+ export interface HouseholdMemberOut {
388
+ user_id: number;
389
+ username: string;
390
+ role: HouseholdRoleEnum;
391
+ }
392
+ export type HouseholdResponseSettings = {
393
+ [key: string]: unknown;
394
+ };
395
+ /**
396
+ * The caller's household. ``settings`` is the raw stored JSONB document
397
+ (pass-through dict): reads must stay robust for legacy payloads (e.g.
398
+ the M1/M2 default ``week_start_day: "monday"`` string), while writes are
399
+ strictly validated through HouseholdSettings on PATCH.
400
+ */
401
+ export interface HouseholdResponse {
402
+ id: number;
403
+ name: string;
404
+ settings: HouseholdResponseSettings;
405
+ members: HouseholdMemberOut[];
406
+ created_at: string;
407
+ }
408
+ export type HouseholdRoleEnum = typeof HouseholdRoleEnum[keyof typeof HouseholdRoleEnum];
409
+ export declare const HouseholdRoleEnum: {
410
+ readonly owner: "owner";
411
+ readonly member: "member";
412
+ };
413
+ export type HouseholdSettingsDefaultServings = number | null;
414
+ export type HouseholdSettingsDietaryPrefs = string[] | null;
415
+ export type HouseholdSettingsExpiryAlertDays = number | null;
416
+ export type HouseholdSettingsWeekStartDay = number | null;
417
+ export type HouseholdSettingsLowStockThresholdsAnyOf = {
418
+ [key: string]: unknown;
419
+ };
420
+ export type HouseholdSettingsLowStockThresholds = HouseholdSettingsLowStockThresholdsAnyOf | null;
421
+ /**
422
+ * Validated settings payload for PATCH /household/.
423
+
424
+ Every field is optional so partial patches merge into the stored JSONB
425
+ settings document; unset fields are left untouched. Unknown keys are
426
+ REJECTED (extra="forbid") so client typos fail loudly with a 422
427
+ instead of silently no-oping.
428
+ */
429
+ export interface HouseholdSettings {
430
+ default_servings?: HouseholdSettingsDefaultServings;
431
+ dietary_prefs?: HouseholdSettingsDietaryPrefs;
432
+ expiry_alert_days?: HouseholdSettingsExpiryAlertDays;
433
+ week_start_day?: HouseholdSettingsWeekStartDay;
434
+ low_stock_thresholds?: HouseholdSettingsLowStockThresholds;
435
+ }
436
+ export type HouseholdUpdateName = string | null;
437
+ export type HouseholdUpdateSettings = HouseholdSettings | null;
438
+ /**
439
+ * PATCH body for /household/ — both fields optional (partial update).
440
+ */
441
+ export interface HouseholdUpdate {
442
+ name?: HouseholdUpdateName;
443
+ settings?: HouseholdUpdateSettings;
444
+ }
445
+ export type IngredientAutocompleteItemIngredientId = number | null;
446
+ export type IngredientAutocompleteItemCategory = ItemTypeEnum | null;
447
+ export type IngredientAutocompleteItemMatch = typeof IngredientAutocompleteItemMatch[keyof typeof IngredientAutocompleteItemMatch];
448
+ export declare const IngredientAutocompleteItemMatch: {
449
+ readonly prefix: "prefix";
450
+ readonly alias: "alias";
451
+ readonly fuzzy: "fuzzy";
452
+ readonly history: "history";
453
+ };
454
+ export type IngredientAutocompleteItemSource = typeof IngredientAutocompleteItemSource[keyof typeof IngredientAutocompleteItemSource];
455
+ export declare const IngredientAutocompleteItemSource: {
456
+ readonly catalog: "catalog";
457
+ readonly history: "history";
458
+ readonly popular: "popular";
459
+ };
460
+ export type IngredientAutocompleteItemUsageCount = number | null;
461
+ /**
462
+ * One ranked autocomplete suggestion (GET /ingredients/autocomplete).
463
+
464
+ ``ingredient_id`` is the canonical catalog link: always set for catalog
465
+ rows (that's how the client links a pantry item / recipe ingredient to the
466
+ canonical ingredient); NULL for household-history names with no catalog
467
+ link (the client can offer "create new"). ``source`` is the provenance:
468
+ your own past (history), other users' past (popular), or the day-one
469
+ bootstrap seed (catalog).
470
+ */
471
+ export interface IngredientAutocompleteItem {
472
+ ingredient_id?: IngredientAutocompleteItemIngredientId;
473
+ name: string;
474
+ category?: IngredientAutocompleteItemCategory;
475
+ match: IngredientAutocompleteItemMatch;
476
+ source: IngredientAutocompleteItemSource;
477
+ usage_count?: IngredientAutocompleteItemUsageCount;
478
+ }
479
+ export type InventoryEventKindEnum = typeof InventoryEventKindEnum[keyof typeof InventoryEventKindEnum];
480
+ export declare const InventoryEventKindEnum: {
481
+ readonly added: "added";
482
+ readonly consumed: "consumed";
483
+ readonly adjusted: "adjusted";
484
+ readonly discarded: "discarded";
485
+ readonly expired: "expired";
486
+ readonly restocked: "restocked";
487
+ };
488
+ export type InventoryEventResponsePantryItemId = number | null;
489
+ export type InventoryEventResponseUserId = number | null;
490
+ export type InventoryEventResponseQuantityDelta = number | null;
491
+ export type InventoryEventResponseMetadataAnyOf = {
492
+ [key: string]: unknown;
493
+ };
494
+ export type InventoryEventResponseMetadata = InventoryEventResponseMetadataAnyOf | null;
495
+ export interface InventoryEventResponse {
496
+ id: number;
497
+ household_id: number;
498
+ pantry_item_id?: InventoryEventResponsePantryItemId;
499
+ user_id?: InventoryEventResponseUserId;
500
+ kind: InventoryEventKindEnum;
501
+ quantity_delta?: InventoryEventResponseQuantityDelta;
502
+ source: InventoryEventSourceEnum;
503
+ metadata?: InventoryEventResponseMetadata;
504
+ created_at: string;
505
+ }
506
+ export type InventoryEventSourceEnum = typeof InventoryEventSourceEnum[keyof typeof InventoryEventSourceEnum];
507
+ export declare const InventoryEventSourceEnum: {
508
+ readonly manual: "manual";
509
+ readonly vision: "vision";
510
+ readonly barcode: "barcode";
511
+ readonly receipt: "receipt";
512
+ readonly plan: "plan";
513
+ readonly system: "system";
514
+ };
76
515
  export type ItemTypeEnum = typeof ItemTypeEnum[keyof typeof ItemTypeEnum];
77
516
  export declare const ItemTypeEnum: {
78
517
  readonly spices: "spices";
@@ -94,6 +533,174 @@ export declare const LocationEnum: {
94
533
  readonly pantry: "pantry";
95
534
  readonly other: "other";
96
535
  };
536
+ export type MealPlanCreateWeekStart = string | null;
537
+ export type MealPlanCreateDurationWeeks = number | null;
538
+ export type MealPlanCreateTemplateId = number | null;
539
+ /**
540
+ * Create an empty plan, or copy one from a template/preset (§5.5).
541
+ */
542
+ export interface MealPlanCreate {
543
+ /**
544
+ * @minLength 1
545
+ * @maxLength 200
546
+ */
547
+ name: string;
548
+ kind?: MealPlanKindEnum;
549
+ week_start?: MealPlanCreateWeekStart;
550
+ duration_weeks?: MealPlanCreateDurationWeeks;
551
+ is_template?: boolean;
552
+ visibility?: VisibilityEnum;
553
+ template_id?: MealPlanCreateTemplateId;
554
+ }
555
+ export type MealPlanDetailResponseHouseholdId = number | null;
556
+ export type MealPlanDetailResponseCreatedByUserId = number | null;
557
+ export type MealPlanDetailResponseWeekStart = string | null;
558
+ export type MealPlanDetailResponseDurationWeeks = number | null;
559
+ export type MealPlanDetailResponseForkedFromPlanId = number | null;
560
+ export interface MealPlanDetailResponse {
561
+ id: number;
562
+ household_id?: MealPlanDetailResponseHouseholdId;
563
+ created_by_user_id?: MealPlanDetailResponseCreatedByUserId;
564
+ name: string;
565
+ kind: MealPlanKindEnum;
566
+ status: MealPlanStatusEnum;
567
+ is_template?: boolean;
568
+ is_preset?: boolean;
569
+ week_start?: MealPlanDetailResponseWeekStart;
570
+ duration_weeks?: MealPlanDetailResponseDurationWeeks;
571
+ visibility: VisibilityEnum;
572
+ source: MealPlanSourceEnum;
573
+ forked_from_plan_id?: MealPlanDetailResponseForkedFromPlanId;
574
+ slot_count?: number;
575
+ created_at: string;
576
+ updated_at: string;
577
+ slots?: MealPlanSlotResponse[];
578
+ }
579
+ export type MealPlanGenerateResponseHouseholdId = number | null;
580
+ export type MealPlanGenerateResponseCreatedByUserId = number | null;
581
+ export type MealPlanGenerateResponseWeekStart = string | null;
582
+ export type MealPlanGenerateResponseDurationWeeks = number | null;
583
+ export type MealPlanGenerateResponseForkedFromPlanId = number | null;
584
+ export interface MealPlanGenerateResponse {
585
+ id: number;
586
+ household_id?: MealPlanGenerateResponseHouseholdId;
587
+ created_by_user_id?: MealPlanGenerateResponseCreatedByUserId;
588
+ name: string;
589
+ kind: MealPlanKindEnum;
590
+ status: MealPlanStatusEnum;
591
+ is_template?: boolean;
592
+ is_preset?: boolean;
593
+ week_start?: MealPlanGenerateResponseWeekStart;
594
+ duration_weeks?: MealPlanGenerateResponseDurationWeeks;
595
+ visibility: VisibilityEnum;
596
+ source: MealPlanSourceEnum;
597
+ forked_from_plan_id?: MealPlanGenerateResponseForkedFromPlanId;
598
+ slot_count?: number;
599
+ created_at: string;
600
+ updated_at: string;
601
+ slots?: MealPlanSlotResponse[];
602
+ metadata: PlanGenerateMetadata;
603
+ }
604
+ export type MealPlanKindEnum = typeof MealPlanKindEnum[keyof typeof MealPlanKindEnum];
605
+ export declare const MealPlanKindEnum: {
606
+ readonly weekly: "weekly";
607
+ readonly diet: "diet";
608
+ };
609
+ export interface MealPlanRequest {
610
+ /**
611
+ * @minimum 1
612
+ * @maximum 7
613
+ */
614
+ days?: number;
615
+ /** @maxLength 500 */
616
+ preferences?: string;
617
+ }
618
+ export type MealPlanResponseHouseholdId = number | null;
619
+ export type MealPlanResponseCreatedByUserId = number | null;
620
+ export type MealPlanResponseWeekStart = string | null;
621
+ export type MealPlanResponseDurationWeeks = number | null;
622
+ export type MealPlanResponseForkedFromPlanId = number | null;
623
+ export interface MealPlanResponse {
624
+ id: number;
625
+ household_id?: MealPlanResponseHouseholdId;
626
+ created_by_user_id?: MealPlanResponseCreatedByUserId;
627
+ name: string;
628
+ kind: MealPlanKindEnum;
629
+ status: MealPlanStatusEnum;
630
+ is_template?: boolean;
631
+ is_preset?: boolean;
632
+ week_start?: MealPlanResponseWeekStart;
633
+ duration_weeks?: MealPlanResponseDurationWeeks;
634
+ visibility: VisibilityEnum;
635
+ source: MealPlanSourceEnum;
636
+ forked_from_plan_id?: MealPlanResponseForkedFromPlanId;
637
+ slot_count?: number;
638
+ created_at: string;
639
+ updated_at: string;
640
+ }
641
+ export type MealPlanSlotResponseRecipeId = number | null;
642
+ export type MealPlanSlotResponseCatalogRecipeId = number | null;
643
+ export type MealPlanSlotResponseTitle = string | null;
644
+ export type MealPlanSlotResponseServingsOverride = number | null;
645
+ export type MealPlanSlotResponseNotes = string | null;
646
+ export interface MealPlanSlotResponse {
647
+ id: number;
648
+ plan_id: number;
649
+ day_index: number;
650
+ meal_type: MealTypeEnum;
651
+ recipe_id?: MealPlanSlotResponseRecipeId;
652
+ catalog_recipe_id?: MealPlanSlotResponseCatalogRecipeId;
653
+ title?: MealPlanSlotResponseTitle;
654
+ servings_override?: MealPlanSlotResponseServingsOverride;
655
+ notes?: MealPlanSlotResponseNotes;
656
+ position?: number;
657
+ skip?: boolean;
658
+ created_at: string;
659
+ }
660
+ export type MealPlanSourceEnum = typeof MealPlanSourceEnum[keyof typeof MealPlanSourceEnum];
661
+ export declare const MealPlanSourceEnum: {
662
+ readonly manual: "manual";
663
+ readonly generated: "generated";
664
+ readonly preset: "preset";
665
+ readonly forked: "forked";
666
+ };
667
+ export type MealPlanStatusEnum = typeof MealPlanStatusEnum[keyof typeof MealPlanStatusEnum];
668
+ export declare const MealPlanStatusEnum: {
669
+ readonly draft: "draft";
670
+ readonly active: "active";
671
+ readonly archived: "archived";
672
+ };
673
+ export type MealPlanUpdateName = string | null;
674
+ export type MealPlanUpdateStatus = MealPlanStatusEnum | null;
675
+ export type MealPlanUpdateWeekStart = string | null;
676
+ export type MealPlanUpdateDurationWeeks = number | null;
677
+ export type MealPlanUpdateVisibility = VisibilityEnum | null;
678
+ export interface MealPlanUpdate {
679
+ name?: MealPlanUpdateName;
680
+ status?: MealPlanUpdateStatus;
681
+ week_start?: MealPlanUpdateWeekStart;
682
+ duration_weeks?: MealPlanUpdateDurationWeeks;
683
+ visibility?: MealPlanUpdateVisibility;
684
+ }
685
+ export type MealTypeEnum = typeof MealTypeEnum[keyof typeof MealTypeEnum];
686
+ export declare const MealTypeEnum: {
687
+ readonly breakfast: "breakfast";
688
+ readonly lunch: "lunch";
689
+ readonly dinner: "dinner";
690
+ readonly snack: "snack";
691
+ };
692
+ export interface MessageResponse {
693
+ message: string;
694
+ }
695
+ export type MissingIngredientIngredientId = number | null;
696
+ export type MissingIngredientQuantity = number | null;
697
+ export type MissingIngredientUnit = string | null;
698
+ export interface MissingIngredient {
699
+ name: string;
700
+ ingredient_id?: MissingIngredientIngredientId;
701
+ quantity?: MissingIngredientQuantity;
702
+ unit?: MissingIngredientUnit;
703
+ }
97
704
  export type OrderByEnum = typeof OrderByEnum[keyof typeof OrderByEnum];
98
705
  export declare const OrderByEnum: {
99
706
  readonly name: "name";
@@ -105,10 +712,80 @@ export declare const OrderEnum: {
105
712
  readonly asc: "asc";
106
713
  readonly desc: "desc";
107
714
  };
715
+ export type PantryItemBulkCreateItemClientRef = string | null;
716
+ export type PantryItemBulkCreateItemExpirationDate = string | null;
717
+ export type PantryItemBulkCreateItemLocationId = number | null;
718
+ export type PantryItemBulkCreateItemNotes = string | null;
719
+ export type PantryItemBulkCreateItemSource = InventoryEventSourceEnum | null;
720
+ export type PantryItemBulkCreateItemIngredientId = number | null;
721
+ /**
722
+ * One bulk-create row. Only type-level validation here — per-item business
723
+ validation happens in the service so best_effort can collect failures.
724
+ */
725
+ export interface PantryItemBulkCreateItem {
726
+ client_ref?: PantryItemBulkCreateItemClientRef;
727
+ name: string;
728
+ item_type: ItemTypeEnum;
729
+ quantity: number;
730
+ quantity_unit: QuantityUnitEnum;
731
+ expiration_date?: PantryItemBulkCreateItemExpirationDate;
732
+ location_id?: PantryItemBulkCreateItemLocationId;
733
+ notes?: PantryItemBulkCreateItemNotes;
734
+ source?: PantryItemBulkCreateItemSource;
735
+ ingredient_id?: PantryItemBulkCreateItemIngredientId;
736
+ }
737
+ export interface PantryItemBulkCreateRequest {
738
+ mode?: BulkMode;
739
+ /**
740
+ * @minItems 1
741
+ * @maxItems 100
742
+ */
743
+ items: PantryItemBulkCreateItem[];
744
+ }
745
+ export interface PantryItemBulkDeleteRequest {
746
+ mode?: BulkMode;
747
+ /**
748
+ * @minItems 1
749
+ * @maxItems 100
750
+ */
751
+ ids: number[];
752
+ }
753
+ export type PantryItemBulkUpdateItemClientRef = string | null;
754
+ export type PantryItemBulkUpdateItemName = string | null;
755
+ export type PantryItemBulkUpdateItemItemType = ItemTypeEnum | null;
756
+ export type PantryItemBulkUpdateItemQuantity = number | null;
757
+ export type PantryItemBulkUpdateItemQuantityUnit = QuantityUnitEnum | null;
758
+ export type PantryItemBulkUpdateItemExpirationDate = string | null;
759
+ export type PantryItemBulkUpdateItemLocationId = number | null;
760
+ export type PantryItemBulkUpdateItemNotes = string | null;
761
+ export interface PantryItemBulkUpdateItem {
762
+ id: number;
763
+ client_ref?: PantryItemBulkUpdateItemClientRef;
764
+ name?: PantryItemBulkUpdateItemName;
765
+ item_type?: PantryItemBulkUpdateItemItemType;
766
+ quantity?: PantryItemBulkUpdateItemQuantity;
767
+ quantity_unit?: PantryItemBulkUpdateItemQuantityUnit;
768
+ expiration_date?: PantryItemBulkUpdateItemExpirationDate;
769
+ location_id?: PantryItemBulkUpdateItemLocationId;
770
+ notes?: PantryItemBulkUpdateItemNotes;
771
+ }
772
+ export interface PantryItemBulkUpdateRequest {
773
+ mode?: BulkMode;
774
+ /**
775
+ * @minItems 1
776
+ * @maxItems 100
777
+ */
778
+ items: PantryItemBulkUpdateItem[];
779
+ }
108
780
  export type PantryItemResponseImage = string | null;
109
781
  export type PantryItemResponseExpirationDate = string | null;
110
782
  export type PantryItemResponseLocation = string | null;
111
783
  export type PantryItemResponseNotes = string | null;
784
+ export type PantryItemResponseHouseholdId = number | null;
785
+ export type PantryItemResponseLocationId = number | null;
786
+ export type PantryItemResponseClientRef = string | null;
787
+ export type PantryItemResponseStorageLocation = StorageLocationResponse | null;
788
+ export type PantryItemResponseIngredientId = number | null;
112
789
  export interface PantryItemResponse {
113
790
  id: number;
114
791
  name: string;
@@ -122,6 +799,11 @@ export interface PantryItemResponse {
122
799
  user_id: number;
123
800
  created_at: string;
124
801
  updated_at: string;
802
+ household_id?: PantryItemResponseHouseholdId;
803
+ location_id?: PantryItemResponseLocationId;
804
+ client_ref?: PantryItemResponseClientRef;
805
+ storage_location?: PantryItemResponseStorageLocation;
806
+ ingredient_id?: PantryItemResponseIngredientId;
125
807
  }
126
808
  export interface PasswordChange {
127
809
  current_password: string;
@@ -131,6 +813,157 @@ export interface PasswordChange {
131
813
  */
132
814
  new_password: string;
133
815
  }
816
+ export interface PlanGenerateMetadata {
817
+ provider: string;
818
+ model: string;
819
+ prompt_version: string;
820
+ candidates_considered: number;
821
+ }
822
+ export type PlanGenerateRequestServings = number | null;
823
+ export type PlanGenerateRequestWeekStart = string | null;
824
+ export type PlanGenerateRequestName = string | null;
825
+ /**
826
+ * Agentic grounded plan generation (§9.2). The unit is one week;
827
+ ``days`` < 7 generates a partial week.
828
+ */
829
+ export interface PlanGenerateRequest {
830
+ /**
831
+ * @minimum 1
832
+ * @maximum 7
833
+ */
834
+ days?: number;
835
+ /**
836
+ * @minItems 1
837
+ * @maxItems 4
838
+ */
839
+ meal_types?: MealTypeEnum[];
840
+ /** @maxLength 500 */
841
+ preferences?: string;
842
+ use_expiring?: boolean;
843
+ servings?: PlanGenerateRequestServings;
844
+ week_start?: PlanGenerateRequestWeekStart;
845
+ name?: PlanGenerateRequestName;
846
+ /**
847
+ * @minimum 1
848
+ * @maximum 30
849
+ */
850
+ expiry_days_threshold?: number;
851
+ }
852
+ export type PlanGroceryListRequestShoppingListId = number | null;
853
+ export interface PlanGroceryListRequest {
854
+ shopping_list_id?: PlanGroceryListRequestShoppingListId;
855
+ }
856
+ export type PlanGroceryListResponseCreatedByUserId = number | null;
857
+ export type PlanGroceryListResponseMealPlanId = number | null;
858
+ /**
859
+ * The list after plan-gap derivation (§10), plus derivation stats.
860
+ */
861
+ export interface PlanGroceryListResponse {
862
+ id: number;
863
+ household_id: number;
864
+ name: string;
865
+ status: ShoppingListStatusEnum;
866
+ source: ShoppingListSourceEnum;
867
+ created_by_user_id?: PlanGroceryListResponseCreatedByUserId;
868
+ meal_plan_id?: PlanGroceryListResponseMealPlanId;
869
+ item_count?: number;
870
+ unchecked_count?: number;
871
+ created_at: string;
872
+ items?: ShoppingListItemResponse[];
873
+ added_count?: number;
874
+ skipped?: string[];
875
+ have_some?: string[];
876
+ }
877
+ export type PlanSlotBulkItemId = number | null;
878
+ export type PlanSlotBulkItemRecipeId = number | null;
879
+ export type PlanSlotBulkItemCatalogRecipeId = number | null;
880
+ export type PlanSlotBulkItemServingsOverride = number | null;
881
+ export type PlanSlotBulkItemNotes = string | null;
882
+ export type PlanSlotBulkItemPosition = number | null;
883
+ /**
884
+ * One plan-editor cell operation (§5.5). No id -> create; id -> update
885
+ (or delete with ``_delete=true``).
886
+ */
887
+ export interface PlanSlotBulkItem {
888
+ id?: PlanSlotBulkItemId;
889
+ /**
890
+ * @minimum 0
891
+ * @maximum 6
892
+ */
893
+ day_index: number;
894
+ meal_type: MealTypeEnum;
895
+ recipe_id?: PlanSlotBulkItemRecipeId;
896
+ catalog_recipe_id?: PlanSlotBulkItemCatalogRecipeId;
897
+ servings_override?: PlanSlotBulkItemServingsOverride;
898
+ notes?: PlanSlotBulkItemNotes;
899
+ position?: PlanSlotBulkItemPosition;
900
+ skip?: boolean;
901
+ _delete?: boolean;
902
+ }
903
+ export interface PlanSlotBulkRequest {
904
+ mode?: BulkMode;
905
+ /**
906
+ * @minItems 1
907
+ * @maxItems 100
908
+ */
909
+ items: PlanSlotBulkItem[];
910
+ }
911
+ export type PresetAdoptResponseStarterList = PlanGroceryListResponse | null;
912
+ export interface PresetAdoptResponse {
913
+ plan: MealPlanDetailResponse;
914
+ starter_list?: PresetAdoptResponseStarterList;
915
+ }
916
+ export type PublicPlanSummaryWeekStart = string | null;
917
+ export type PublicPlanSummaryDurationWeeks = number | null;
918
+ export type PublicPlanSummaryAuthor = string | null;
919
+ export type PublicPlanSummaryForkedFromPlanId = number | null;
920
+ export type PublicPlanSummaryRatingAvg = number | null;
921
+ /**
922
+ * Discovery card for GET /plans/public.
923
+ */
924
+ export interface PublicPlanSummary {
925
+ id: number;
926
+ name: string;
927
+ kind: MealPlanKindEnum;
928
+ status: MealPlanStatusEnum;
929
+ week_start?: PublicPlanSummaryWeekStart;
930
+ duration_weeks?: PublicPlanSummaryDurationWeeks;
931
+ slot_count?: number;
932
+ author?: PublicPlanSummaryAuthor;
933
+ forked_from_plan_id?: PublicPlanSummaryForkedFromPlanId;
934
+ rating_avg?: PublicPlanSummaryRatingAvg;
935
+ rating_count?: number;
936
+ favorite_count?: number;
937
+ created_at: string;
938
+ updated_at: string;
939
+ }
940
+ export type PublicRecipeSummaryImage = string | null;
941
+ export type PublicRecipeSummaryPrepTime = number | null;
942
+ export type PublicRecipeSummaryCookTime = number | null;
943
+ export type PublicRecipeSummaryServings = number | null;
944
+ export type PublicRecipeSummaryAuthor = string | null;
945
+ export type PublicRecipeSummaryForkedFromRecipeId = number | null;
946
+ export type PublicRecipeSummaryRatingAvg = number | null;
947
+ /**
948
+ * Discovery card for GET /recipes/public (§5.7). Only ever built from
949
+ visibility='public' rows — nothing private leaks through this shape.
950
+ */
951
+ export interface PublicRecipeSummary {
952
+ id: number;
953
+ name: string;
954
+ cuisine: CuisineTypeEnum;
955
+ image?: PublicRecipeSummaryImage;
956
+ prep_time?: PublicRecipeSummaryPrepTime;
957
+ cook_time?: PublicRecipeSummaryCookTime;
958
+ servings?: PublicRecipeSummaryServings;
959
+ author?: PublicRecipeSummaryAuthor;
960
+ forked_from_recipe_id?: PublicRecipeSummaryForkedFromRecipeId;
961
+ rating_avg?: PublicRecipeSummaryRatingAvg;
962
+ rating_count?: number;
963
+ favorite_count?: number;
964
+ created_at: string;
965
+ updated_at: string;
966
+ }
134
967
  export type QuantityUnitEnum = typeof QuantityUnitEnum[keyof typeof QuantityUnitEnum];
135
968
  export declare const QuantityUnitEnum: {
136
969
  readonly lbs: "lbs";
@@ -143,18 +976,57 @@ export declare const QuantityUnitEnum: {
143
976
  readonly ml: "ml";
144
977
  readonly liters: "liters";
145
978
  };
979
+ export type RatingAggregateResponseAverage = number | null;
980
+ export type RatingAggregateResponseMyRating = ReviewOut | null;
981
+ /**
982
+ * GET /ratings/{target_type}/{id}: the aggregate plus recent reviews.
983
+ */
984
+ export interface RatingAggregateResponse {
985
+ target_type: SocialTargetEnum;
986
+ target_id: number;
987
+ average?: RatingAggregateResponseAverage;
988
+ count?: number;
989
+ my_rating?: RatingAggregateResponseMyRating;
990
+ reviews?: ReviewOut[];
991
+ }
992
+ export type RatingPhotoResponseStepIndex = number | null;
993
+ export type RatingPhotoResponseCaption = string | null;
994
+ export interface RatingPhotoResponse {
995
+ id: number;
996
+ rating_id: number;
997
+ image: string;
998
+ step_index?: RatingPhotoResponseStepIndex;
999
+ caption?: RatingPhotoResponseCaption;
1000
+ created_at: string;
1001
+ }
1002
+ export type RatingUpsertReview = string | null;
1003
+ export interface RatingUpsert {
1004
+ /**
1005
+ * @minimum 1
1006
+ * @maximum 5
1007
+ */
1008
+ stars: number;
1009
+ review?: RatingUpsertReview;
1010
+ }
146
1011
  export type RecipeIngredientResponseUnit = string | null;
147
1012
  export type RecipeIngredientResponsePantryItemId = number | null;
1013
+ export type RecipeIngredientResponseIngredientId = number | null;
148
1014
  export interface RecipeIngredientResponse {
149
1015
  name: string;
150
1016
  quantity: number;
151
1017
  unit?: RecipeIngredientResponseUnit;
152
1018
  pantry_item_id?: RecipeIngredientResponsePantryItemId;
1019
+ ingredient_id?: RecipeIngredientResponseIngredientId;
153
1020
  }
154
1021
  export type RecipeResponseImage = string | null;
155
1022
  export type RecipeResponsePrepTime = number | null;
156
1023
  export type RecipeResponseCookTime = number | null;
157
1024
  export type RecipeResponseServings = number | null;
1025
+ export type RecipeResponseHouseholdId = number | null;
1026
+ export type RecipeResponseVisibility = VisibilityEnum | null;
1027
+ export type RecipeResponseSource = RecipeSourceEnum | null;
1028
+ export type RecipeResponseSourceCatalogRecipeId = number | null;
1029
+ export type RecipeResponseForkedFromRecipeId = number | null;
158
1030
  export interface RecipeResponse {
159
1031
  id: number;
160
1032
  name: string;
@@ -168,46 +1040,368 @@ export interface RecipeResponse {
168
1040
  prep_time?: RecipeResponsePrepTime;
169
1041
  cook_time?: RecipeResponseCookTime;
170
1042
  servings?: RecipeResponseServings;
1043
+ household_id?: RecipeResponseHouseholdId;
1044
+ visibility?: RecipeResponseVisibility;
1045
+ source?: RecipeResponseSource;
1046
+ source_catalog_recipe_id?: RecipeResponseSourceCatalogRecipeId;
1047
+ forked_from_recipe_id?: RecipeResponseForkedFromRecipeId;
171
1048
  }
172
- export interface Token {
173
- access_token: string;
174
- token_type: string;
175
- }
176
- export interface UserCreate {
1049
+ export type RecipeSourceEnum = typeof RecipeSourceEnum[keyof typeof RecipeSourceEnum];
1050
+ export declare const RecipeSourceEnum: {
1051
+ readonly manual: "manual";
1052
+ readonly generated: "generated";
1053
+ readonly forked: "forked";
1054
+ readonly catalog_copy: "catalog_copy";
1055
+ };
1056
+ export type RecipeSuggestionDescription = string | null;
1057
+ export type RecipeSuggestionCuisine = string | null;
1058
+ export type RecipeSuggestionImageUrl = string | null;
1059
+ export type RecipeSuggestionServings = number | null;
1060
+ export type RecipeSuggestionPrepTime = number | null;
1061
+ export type RecipeSuggestionCookTime = number | null;
1062
+ export interface RecipeSuggestion {
1063
+ recipe_kind: string;
1064
+ recipe_id: number;
1065
+ title: string;
1066
+ description?: RecipeSuggestionDescription;
1067
+ cuisine?: RecipeSuggestionCuisine;
1068
+ image_url?: RecipeSuggestionImageUrl;
1069
+ servings?: RecipeSuggestionServings;
1070
+ prep_time?: RecipeSuggestionPrepTime;
1071
+ cook_time?: RecipeSuggestionCookTime;
177
1072
  /**
178
- * @minLength 3
179
- * @maxLength 150
180
- * @pattern ^[a-zA-Z0-9_-]+$
1073
+ * @minimum 0
1074
+ * @maximum 100
181
1075
  */
182
- username: string;
1076
+ coverage_pct: number;
1077
+ matched?: SuggestionIngredient[];
1078
+ missing?: MissingIngredient[];
1079
+ uses_expiring?: ExpiringIngredient[];
1080
+ tags?: string[];
1081
+ }
1082
+ export interface ResendVerificationRequest {
183
1083
  email: string;
1084
+ }
1085
+ export type ReviewOutUsername = string | null;
1086
+ export type ReviewOutReview = string | null;
1087
+ /**
1088
+ * One rating as shown in the review list (D3: Google-reviews-style,
1089
+ but for recipes): stars + optional detailed comment + optional cook-along
1090
+ per-step photos.
1091
+ */
1092
+ export interface ReviewOut {
1093
+ id: number;
1094
+ user_id: number;
1095
+ username?: ReviewOutUsername;
1096
+ stars: number;
1097
+ review?: ReviewOutReview;
1098
+ photos?: RatingPhotoResponse[];
1099
+ created_at: string;
1100
+ updated_at: string;
1101
+ }
1102
+ export interface SearchRequest {
184
1103
  /**
185
1104
  * @minLength 1
186
- * @maxLength 100
1105
+ * @maxLength 500
187
1106
  */
188
- first_name: string;
1107
+ query: string;
1108
+ }
1109
+ export interface ShoppingListCreate {
189
1110
  /**
190
1111
  * @minLength 1
191
- * @maxLength 100
192
- */
193
- last_name: string;
194
- /**
195
- * @minLength 8
196
- * @maxLength 128
1112
+ * @maxLength 200
197
1113
  */
198
- password: string;
199
- }
200
- export interface UserLogin {
201
- email: string;
202
- password: string;
1114
+ name: string;
203
1115
  }
204
- export interface UserResponse {
1116
+ export type ShoppingListDetailResponseCreatedByUserId = number | null;
1117
+ export type ShoppingListDetailResponseMealPlanId = number | null;
1118
+ export interface ShoppingListDetailResponse {
205
1119
  id: number;
206
- username: string;
207
- email: string;
1120
+ household_id: number;
1121
+ name: string;
1122
+ status: ShoppingListStatusEnum;
1123
+ source: ShoppingListSourceEnum;
1124
+ created_by_user_id?: ShoppingListDetailResponseCreatedByUserId;
1125
+ meal_plan_id?: ShoppingListDetailResponseMealPlanId;
1126
+ item_count?: number;
1127
+ unchecked_count?: number;
1128
+ created_at: string;
1129
+ items?: ShoppingListItemResponse[];
1130
+ }
1131
+ export type ShoppingListExportFormat = typeof ShoppingListExportFormat[keyof typeof ShoppingListExportFormat];
1132
+ export declare const ShoppingListExportFormat: {
1133
+ readonly text: "text";
1134
+ readonly csv: "csv";
1135
+ readonly deeplink: "deeplink";
1136
+ };
1137
+ export type ShoppingListExportRequestProvider = string | null;
1138
+ /**
1139
+ * Export the unchecked items of a list. ``provider`` defaults to
1140
+ ``manual`` for text/csv and to the configured deeplink provider for
1141
+ ``deeplink``.
1142
+ */
1143
+ export interface ShoppingListExportRequest {
1144
+ format: ShoppingListExportFormat;
1145
+ provider?: ShoppingListExportRequestProvider;
1146
+ }
1147
+ export interface ShoppingListExportResponse {
1148
+ format: ShoppingListExportFormat;
1149
+ payload: string;
1150
+ provider: string;
1151
+ }
1152
+ export type ShoppingListItemBulkCreateItemClientRef = string | null;
1153
+ export type ShoppingListItemBulkCreateItemQuantity = number | null;
1154
+ export type ShoppingListItemBulkCreateItemUnit = string | null;
1155
+ export type ShoppingListItemBulkCreateItemIngredientId = number | null;
1156
+ export interface ShoppingListItemBulkCreateItem {
1157
+ client_ref?: ShoppingListItemBulkCreateItemClientRef;
1158
+ /**
1159
+ * @minLength 1
1160
+ * @maxLength 200
1161
+ */
1162
+ name: string;
1163
+ quantity?: ShoppingListItemBulkCreateItemQuantity;
1164
+ unit?: ShoppingListItemBulkCreateItemUnit;
1165
+ ingredient_id?: ShoppingListItemBulkCreateItemIngredientId;
1166
+ reason?: ShoppingListItemReasonEnum;
1167
+ }
1168
+ export interface ShoppingListItemBulkCreateRequest {
1169
+ mode?: BulkMode;
1170
+ /**
1171
+ * @minItems 1
1172
+ * @maxItems 100
1173
+ */
1174
+ items: ShoppingListItemBulkCreateItem[];
1175
+ }
1176
+ export interface ShoppingListItemBulkDeleteRequest {
1177
+ mode?: BulkMode;
1178
+ /**
1179
+ * @minItems 1
1180
+ * @maxItems 100
1181
+ */
1182
+ ids: number[];
1183
+ }
1184
+ export type ShoppingListItemBulkUpdateItemChecked = boolean | null;
1185
+ export type ShoppingListItemBulkUpdateItemName = string | null;
1186
+ export type ShoppingListItemBulkUpdateItemQuantity = number | null;
1187
+ export type ShoppingListItemBulkUpdateItemUnit = string | null;
1188
+ export interface ShoppingListItemBulkUpdateItem {
1189
+ id: number;
1190
+ checked?: ShoppingListItemBulkUpdateItemChecked;
1191
+ name?: ShoppingListItemBulkUpdateItemName;
1192
+ quantity?: ShoppingListItemBulkUpdateItemQuantity;
1193
+ unit?: ShoppingListItemBulkUpdateItemUnit;
1194
+ }
1195
+ /**
1196
+ * Bulk update/check. ``check_all=true`` is the one-tap "check everything"
1197
+ action (§5.6) and requires an empty ``items`` list.
1198
+ */
1199
+ export interface ShoppingListItemBulkUpdateRequest {
1200
+ mode?: BulkMode;
1201
+ check_all?: boolean;
1202
+ items?: ShoppingListItemBulkUpdateItem[];
1203
+ }
1204
+ export type ShoppingListItemCreateQuantity = number | null;
1205
+ export type ShoppingListItemCreateUnit = string | null;
1206
+ export type ShoppingListItemCreateIngredientId = number | null;
1207
+ export interface ShoppingListItemCreate {
1208
+ /**
1209
+ * @minLength 1
1210
+ * @maxLength 200
1211
+ */
1212
+ name: string;
1213
+ quantity?: ShoppingListItemCreateQuantity;
1214
+ unit?: ShoppingListItemCreateUnit;
1215
+ ingredient_id?: ShoppingListItemCreateIngredientId;
1216
+ }
1217
+ export type ShoppingListItemReasonEnum = typeof ShoppingListItemReasonEnum[keyof typeof ShoppingListItemReasonEnum];
1218
+ export declare const ShoppingListItemReasonEnum: {
1219
+ readonly manual: "manual";
1220
+ readonly missing_for_plan: "missing_for_plan";
1221
+ readonly expiring_soon: "expiring_soon";
1222
+ readonly low_stock: "low_stock";
1223
+ };
1224
+ export type ShoppingListItemResponseIngredientId = number | null;
1225
+ export type ShoppingListItemResponseQuantity = number | null;
1226
+ export type ShoppingListItemResponseUnit = string | null;
1227
+ export type ShoppingListItemResponseCheckedAt = string | null;
1228
+ export type ShoppingListItemResponseCheckedByUserId = number | null;
1229
+ export type ShoppingListItemResponseClientRef = string | null;
1230
+ export type ShoppingListItemResponseNote = string | null;
1231
+ export interface ShoppingListItemResponse {
1232
+ id: number;
1233
+ list_id: number;
1234
+ ingredient_id?: ShoppingListItemResponseIngredientId;
1235
+ name: string;
1236
+ quantity?: ShoppingListItemResponseQuantity;
1237
+ unit?: ShoppingListItemResponseUnit;
1238
+ checked: boolean;
1239
+ checked_at?: ShoppingListItemResponseCheckedAt;
1240
+ checked_by_user_id?: ShoppingListItemResponseCheckedByUserId;
1241
+ reason: ShoppingListItemReasonEnum;
1242
+ client_ref?: ShoppingListItemResponseClientRef;
1243
+ note?: ShoppingListItemResponseNote;
1244
+ created_at: string;
1245
+ }
1246
+ export type ShoppingListItemUpdateChecked = boolean | null;
1247
+ export type ShoppingListItemUpdateName = string | null;
1248
+ export type ShoppingListItemUpdateQuantity = number | null;
1249
+ export type ShoppingListItemUpdateUnit = string | null;
1250
+ export interface ShoppingListItemUpdate {
1251
+ checked?: ShoppingListItemUpdateChecked;
1252
+ name?: ShoppingListItemUpdateName;
1253
+ quantity?: ShoppingListItemUpdateQuantity;
1254
+ unit?: ShoppingListItemUpdateUnit;
1255
+ }
1256
+ export type ShoppingListResponseCreatedByUserId = number | null;
1257
+ export type ShoppingListResponseMealPlanId = number | null;
1258
+ export interface ShoppingListResponse {
1259
+ id: number;
1260
+ household_id: number;
1261
+ name: string;
1262
+ status: ShoppingListStatusEnum;
1263
+ source: ShoppingListSourceEnum;
1264
+ created_by_user_id?: ShoppingListResponseCreatedByUserId;
1265
+ meal_plan_id?: ShoppingListResponseMealPlanId;
1266
+ item_count?: number;
1267
+ unchecked_count?: number;
1268
+ created_at: string;
1269
+ }
1270
+ export type ShoppingListSourceEnum = typeof ShoppingListSourceEnum[keyof typeof ShoppingListSourceEnum];
1271
+ export declare const ShoppingListSourceEnum: {
1272
+ readonly manual: "manual";
1273
+ readonly plan: "plan";
1274
+ readonly auto: "auto";
1275
+ };
1276
+ export type ShoppingListStatusEnum = typeof ShoppingListStatusEnum[keyof typeof ShoppingListStatusEnum];
1277
+ export declare const ShoppingListStatusEnum: {
1278
+ readonly active: "active";
1279
+ readonly archived: "archived";
1280
+ };
1281
+ export type ShoppingListUpdateName = string | null;
1282
+ export type ShoppingListUpdateStatus = ShoppingListStatusEnum | null;
1283
+ export interface ShoppingListUpdate {
1284
+ name?: ShoppingListUpdateName;
1285
+ status?: ShoppingListUpdateStatus;
1286
+ }
1287
+ export type SocialTargetEnum = typeof SocialTargetEnum[keyof typeof SocialTargetEnum];
1288
+ export declare const SocialTargetEnum: {
1289
+ readonly recipe: "recipe";
1290
+ readonly meal_plan: "meal_plan";
1291
+ };
1292
+ export type StorageLocationCreateIcon = string | null;
1293
+ export type StorageLocationCreateSortOrder = number | null;
1294
+ export interface StorageLocationCreate {
1295
+ /**
1296
+ * @minLength 1
1297
+ * @maxLength 100
1298
+ */
1299
+ name: string;
1300
+ icon?: StorageLocationCreateIcon;
1301
+ sort_order?: StorageLocationCreateSortOrder;
1302
+ is_default?: boolean;
1303
+ }
1304
+ export type StorageLocationResponseIcon = string | null;
1305
+ export interface StorageLocationResponse {
1306
+ id: number;
1307
+ household_id: number;
1308
+ name: string;
1309
+ icon?: StorageLocationResponseIcon;
1310
+ sort_order: number;
1311
+ is_default: boolean;
1312
+ is_seed: boolean;
1313
+ }
1314
+ export type StorageLocationUpdateName = string | null;
1315
+ export type StorageLocationUpdateIcon = string | null;
1316
+ export type StorageLocationUpdateSortOrder = number | null;
1317
+ export type StorageLocationUpdateIsDefault = boolean | null;
1318
+ export interface StorageLocationUpdate {
1319
+ name?: StorageLocationUpdateName;
1320
+ icon?: StorageLocationUpdateIcon;
1321
+ sort_order?: StorageLocationUpdateSortOrder;
1322
+ is_default?: StorageLocationUpdateIsDefault;
1323
+ }
1324
+ export interface SuggestRecipesMetadata {
1325
+ provider: string;
1326
+ model: string;
1327
+ prompt_version: string;
1328
+ candidates_considered: number;
1329
+ }
1330
+ export type SuggestRecipesRequestCuisine = string | null;
1331
+ export type SuggestRecipesRequestServings = number | null;
1332
+ export interface SuggestRecipesRequest {
1333
+ /** @maxLength 500 */
1334
+ preferences?: string;
1335
+ cuisine?: SuggestRecipesRequestCuisine;
1336
+ servings?: SuggestRecipesRequestServings;
1337
+ /**
1338
+ * @minimum 1
1339
+ * @maximum 30
1340
+ */
1341
+ expiry_days_threshold?: number;
1342
+ /**
1343
+ * @minimum 1
1344
+ * @maximum 10
1345
+ */
1346
+ max_results?: number;
1347
+ }
1348
+ export interface SuggestRecipesResponse {
1349
+ suggestions: GroundedSuggestion[];
1350
+ metadata: SuggestRecipesMetadata;
1351
+ }
1352
+ export type SuggestionIngredientIngredientId = number | null;
1353
+ export interface SuggestionIngredient {
1354
+ name: string;
1355
+ ingredient_id?: SuggestionIngredientIngredientId;
1356
+ }
1357
+ export type TagKindEnum = typeof TagKindEnum[keyof typeof TagKindEnum];
1358
+ export declare const TagKindEnum: {
1359
+ readonly cuisine: "cuisine";
1360
+ readonly diet: "diet";
1361
+ readonly course: "course";
1362
+ readonly meal_type: "meal_type";
1363
+ };
1364
+ export interface Token {
1365
+ access_token: string;
1366
+ token_type: string;
1367
+ email_verified: boolean;
1368
+ }
1369
+ export interface UserCreate {
1370
+ /**
1371
+ * @minLength 3
1372
+ * @maxLength 150
1373
+ * @pattern ^[a-zA-Z0-9_-]+$
1374
+ */
1375
+ username: string;
1376
+ email: string;
1377
+ /**
1378
+ * @minLength 1
1379
+ * @maxLength 100
1380
+ */
1381
+ first_name: string;
1382
+ /**
1383
+ * @minLength 1
1384
+ * @maxLength 100
1385
+ */
1386
+ last_name: string;
1387
+ /**
1388
+ * @minLength 8
1389
+ * @maxLength 128
1390
+ */
1391
+ password: string;
1392
+ }
1393
+ export interface UserLogin {
1394
+ email: string;
1395
+ password: string;
1396
+ }
1397
+ export interface UserResponse {
1398
+ id: number;
1399
+ username: string;
1400
+ email: string;
208
1401
  first_name: string;
209
1402
  last_name: string;
210
1403
  is_active: boolean;
1404
+ email_verified: boolean;
211
1405
  }
212
1406
  export type UserUpdateFirstName = string | null;
213
1407
  export type UserUpdateLastName = string | null;
@@ -228,6 +1422,24 @@ export interface ValidationError {
228
1422
  input?: unknown;
229
1423
  ctx?: ValidationErrorCtx;
230
1424
  }
1425
+ export interface VerifyEmailRequest {
1426
+ /** @minLength 1 */
1427
+ token: string;
1428
+ }
1429
+ export type VisibilityEnum = typeof VisibilityEnum[keyof typeof VisibilityEnum];
1430
+ export declare const VisibilityEnum: {
1431
+ readonly private: "private";
1432
+ readonly public: "public";
1433
+ };
1434
+ export interface VisibilityUpdate {
1435
+ visibility: VisibilityEnum;
1436
+ }
1437
+ export type VerifyEmailAuthVerifyEmailPost200 = {
1438
+ [key: string]: string;
1439
+ };
1440
+ export type ResendVerificationAuthResendVerificationPost200 = {
1441
+ [key: string]: string;
1442
+ };
231
1443
  export type UpdateProfileAuthMePatch200 = {
232
1444
  [key: string]: unknown;
233
1445
  };
@@ -246,12 +1458,72 @@ export type GetPantryItemsPantryItemsGetParams = {
246
1458
  limit?: number;
247
1459
  item_type?: ItemTypeEnum | null;
248
1460
  expired?: boolean | null;
1461
+ expiring_within_days?: number | null;
1462
+ location_id?: number | null;
1463
+ q?: string | null;
249
1464
  order_by?: OrderByEnum;
250
1465
  order?: OrderEnum;
251
1466
  };
1467
+ export type GetInventoryEventsPantryItemsEventsGetParams = {
1468
+ /**
1469
+ * @minimum 0
1470
+ */
1471
+ skip?: number;
1472
+ /**
1473
+ * @minimum 1
1474
+ * @maximum 100
1475
+ */
1476
+ limit?: number;
1477
+ kind?: InventoryEventKindEnum | null;
1478
+ pantry_item_id?: number | null;
1479
+ since?: string | null;
1480
+ order?: OrderEnum;
1481
+ };
252
1482
  export type DeletePantryItemPantryItemsItemIdDelete200 = {
253
1483
  [key: string]: string;
254
1484
  };
1485
+ export type ConsumePantryItemPantryItemsItemIdConsumePostParams = {
1486
+ delete_when_empty?: boolean;
1487
+ };
1488
+ export type DeleteStorageLocationLocationsLocationIdDeleteParams = {
1489
+ reassign_to?: number | null;
1490
+ };
1491
+ export type ListPublicRecipesRecipesPublicGetParams = {
1492
+ q?: string | null;
1493
+ cuisine?: CuisineTypeEnum | null;
1494
+ /**
1495
+ * Comma-separated; matches recipes containing any of these ingredient names
1496
+ */
1497
+ tags?: string | null;
1498
+ min_rating?: number | null;
1499
+ sort?: DiscoverySortEnum;
1500
+ /**
1501
+ * @minimum 0
1502
+ */
1503
+ skip?: number;
1504
+ /**
1505
+ * @minimum 1
1506
+ * @maximum 100
1507
+ */
1508
+ limit?: number;
1509
+ };
1510
+ export type ListPublicPlansPlansPublicGetParams = {
1511
+ q?: string | null;
1512
+ min_rating?: number | null;
1513
+ sort?: DiscoverySortEnum;
1514
+ /**
1515
+ * @minimum 0
1516
+ */
1517
+ skip?: number;
1518
+ /**
1519
+ * @minimum 1
1520
+ * @maximum 100
1521
+ */
1522
+ limit?: number;
1523
+ };
1524
+ export type ListFavoritesFavoritesGetParams = {
1525
+ target_type?: SocialTargetEnum | null;
1526
+ };
255
1527
  export type SearchPantryItemsRecipesPantrySearchGetParams = {
256
1528
  /**
257
1529
  * Search text
@@ -283,9 +1555,114 @@ export type GetRecipesRecipesGetParams = {
283
1555
  limit?: number;
284
1556
  cuisine?: CuisineTypeEnum | null;
285
1557
  };
1558
+ export type GetRecipeSuggestionsRecipesSuggestionsGetParams = {
1559
+ max_missing?: number | null;
1560
+ use_expiring?: boolean;
1561
+ /**
1562
+ * @minimum 1
1563
+ * @maximum 30
1564
+ */
1565
+ expiry_days_threshold?: number;
1566
+ cuisine?: string | null;
1567
+ /**
1568
+ * @minimum 1
1569
+ * @maximum 100
1570
+ */
1571
+ limit?: number;
1572
+ };
286
1573
  export type DeleteRecipeRecipesRecipeIdDelete200 = {
287
1574
  [key: string]: string;
288
1575
  };
1576
+ export type ListIngredientsCatalogIngredientsGetParams = {
1577
+ q?: string | null;
1578
+ category?: ItemTypeEnum | null;
1579
+ /**
1580
+ * @minimum 0
1581
+ */
1582
+ skip?: number;
1583
+ /**
1584
+ * @minimum 1
1585
+ * @maximum 100
1586
+ */
1587
+ limit?: number;
1588
+ };
1589
+ export type ListTagsCatalogTagsGetParams = {
1590
+ kind?: TagKindEnum | null;
1591
+ };
1592
+ export type ListCatalogRecipesCatalogRecipesGetParams = {
1593
+ q?: string | null;
1594
+ /**
1595
+ * Comma-separated ingredient ids (match ANY, best first)
1596
+ */
1597
+ ingredient_ids?: string | null;
1598
+ /**
1599
+ * Comma-separated tag names (recipe must have ALL)
1600
+ */
1601
+ tags?: string | null;
1602
+ cuisine?: string | null;
1603
+ cookable_with_pantry?: boolean;
1604
+ /**
1605
+ * @minimum 0
1606
+ */
1607
+ skip?: number;
1608
+ /**
1609
+ * @minimum 1
1610
+ * @maximum 100
1611
+ */
1612
+ limit?: number;
1613
+ };
1614
+ export type AutocompleteIngredientsIngredientsAutocompleteGetParams = {
1615
+ /**
1616
+ * @minLength 1
1617
+ * @maxLength 100
1618
+ */
1619
+ q: string;
1620
+ /**
1621
+ * @minimum 1
1622
+ * @maximum 20
1623
+ */
1624
+ limit?: number;
1625
+ };
1626
+ export type ListPlansPlansGetParams = {
1627
+ kind?: MealPlanKindEnum | null;
1628
+ status?: MealPlanStatusEnum | null;
1629
+ is_template?: boolean | null;
1630
+ visibility?: VisibilityEnum | null;
1631
+ is_preset?: boolean | null;
1632
+ };
1633
+ export type AdoptPresetPlansPresetsPresetIdAdoptPostParams = {
1634
+ with_starter_list?: boolean;
1635
+ };
1636
+ export type DeletePlanPlansPlanIdDelete200 = {
1637
+ [key: string]: string;
1638
+ };
1639
+ export type ListShoppingListsShoppingListsGetParams = {
1640
+ status?: ShoppingListStatusEnum | null;
1641
+ };
1642
+ export type DeleteShoppingListShoppingListsListIdDelete200 = {
1643
+ [key: string]: string;
1644
+ };
1645
+ export type DeleteShoppingListItemShoppingListsListIdItemsItemIdDelete200 = {
1646
+ [key: string]: string;
1647
+ };
1648
+ export type GenerateRecipeAiGenerateRecipePost200 = {
1649
+ [key: string]: unknown;
1650
+ };
1651
+ export type GenerateMealPlanAiMealPlanPost200 = {
1652
+ [key: string]: unknown;
1653
+ };
1654
+ export type SemanticSearchAiSearchPost200 = {
1655
+ [key: string]: unknown;
1656
+ };
1657
+ export type RecognizeItemsAiRecognizeItemsPost200 = {
1658
+ [key: string]: unknown;
1659
+ };
1660
+ export type RecognizeReceiptAiRecognizeReceiptPost200 = {
1661
+ [key: string]: unknown;
1662
+ };
1663
+ export type LookupBarcodeAiLookupBarcodePost200 = {
1664
+ [key: string]: unknown;
1665
+ };
289
1666
  export type ReadRootGet200 = {
290
1667
  [key: string]: string;
291
1668
  };
@@ -349,6 +1726,87 @@ export declare const useLoginAuthLoginPost: <TError = AxiosError<HTTPValidationE
349
1726
  }) => UseMutationResult<Awaited<ReturnType<typeof loginAuthLoginPost>>, TError, {
350
1727
  data: UserLogin;
351
1728
  }, TContext>;
1729
+ /**
1730
+ * Sign in with a Google ID token (find-or-create + link).
1731
+ * @summary Google Login
1732
+ */
1733
+ export declare const googleLoginAuthGooglePost: (googleLogin: GoogleLogin, options?: AxiosRequestConfig) => Promise<AxiosResponse<Token>>;
1734
+ export declare const getGoogleLoginAuthGooglePostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
1735
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof googleLoginAuthGooglePost>>, TError, {
1736
+ data: GoogleLogin;
1737
+ }, TContext>;
1738
+ axios?: AxiosRequestConfig;
1739
+ }) => UseMutationOptions<Awaited<ReturnType<typeof googleLoginAuthGooglePost>>, TError, {
1740
+ data: GoogleLogin;
1741
+ }, TContext>;
1742
+ export type GoogleLoginAuthGooglePostMutationResult = NonNullable<Awaited<ReturnType<typeof googleLoginAuthGooglePost>>>;
1743
+ export type GoogleLoginAuthGooglePostMutationBody = GoogleLogin;
1744
+ export type GoogleLoginAuthGooglePostMutationError = AxiosError<HTTPValidationError>;
1745
+ /**
1746
+ * @summary Google Login
1747
+ */
1748
+ export declare const useGoogleLoginAuthGooglePost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
1749
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof googleLoginAuthGooglePost>>, TError, {
1750
+ data: GoogleLogin;
1751
+ }, TContext>;
1752
+ axios?: AxiosRequestConfig;
1753
+ }) => UseMutationResult<Awaited<ReturnType<typeof googleLoginAuthGooglePost>>, TError, {
1754
+ data: GoogleLogin;
1755
+ }, TContext>;
1756
+ /**
1757
+ * Mark an email verified from a verification token (idempotent).
1758
+ * @summary Verify Email
1759
+ */
1760
+ export declare const verifyEmailAuthVerifyEmailPost: (verifyEmailRequest: VerifyEmailRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<VerifyEmailAuthVerifyEmailPost200>>;
1761
+ export declare const getVerifyEmailAuthVerifyEmailPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
1762
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof verifyEmailAuthVerifyEmailPost>>, TError, {
1763
+ data: VerifyEmailRequest;
1764
+ }, TContext>;
1765
+ axios?: AxiosRequestConfig;
1766
+ }) => UseMutationOptions<Awaited<ReturnType<typeof verifyEmailAuthVerifyEmailPost>>, TError, {
1767
+ data: VerifyEmailRequest;
1768
+ }, TContext>;
1769
+ export type VerifyEmailAuthVerifyEmailPostMutationResult = NonNullable<Awaited<ReturnType<typeof verifyEmailAuthVerifyEmailPost>>>;
1770
+ export type VerifyEmailAuthVerifyEmailPostMutationBody = VerifyEmailRequest;
1771
+ export type VerifyEmailAuthVerifyEmailPostMutationError = AxiosError<HTTPValidationError>;
1772
+ /**
1773
+ * @summary Verify Email
1774
+ */
1775
+ export declare const useVerifyEmailAuthVerifyEmailPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
1776
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof verifyEmailAuthVerifyEmailPost>>, TError, {
1777
+ data: VerifyEmailRequest;
1778
+ }, TContext>;
1779
+ axios?: AxiosRequestConfig;
1780
+ }) => UseMutationResult<Awaited<ReturnType<typeof verifyEmailAuthVerifyEmailPost>>, TError, {
1781
+ data: VerifyEmailRequest;
1782
+ }, TContext>;
1783
+ /**
1784
+ * Send a fresh verification link. Always 200 — never reveals whether the account exists.
1785
+ * @summary Resend Verification
1786
+ */
1787
+ export declare const resendVerificationAuthResendVerificationPost: (resendVerificationRequest: ResendVerificationRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<ResendVerificationAuthResendVerificationPost200>>;
1788
+ export declare const getResendVerificationAuthResendVerificationPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
1789
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof resendVerificationAuthResendVerificationPost>>, TError, {
1790
+ data: ResendVerificationRequest;
1791
+ }, TContext>;
1792
+ axios?: AxiosRequestConfig;
1793
+ }) => UseMutationOptions<Awaited<ReturnType<typeof resendVerificationAuthResendVerificationPost>>, TError, {
1794
+ data: ResendVerificationRequest;
1795
+ }, TContext>;
1796
+ export type ResendVerificationAuthResendVerificationPostMutationResult = NonNullable<Awaited<ReturnType<typeof resendVerificationAuthResendVerificationPost>>>;
1797
+ export type ResendVerificationAuthResendVerificationPostMutationBody = ResendVerificationRequest;
1798
+ export type ResendVerificationAuthResendVerificationPostMutationError = AxiosError<HTTPValidationError>;
1799
+ /**
1800
+ * @summary Resend Verification
1801
+ */
1802
+ export declare const useResendVerificationAuthResendVerificationPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
1803
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof resendVerificationAuthResendVerificationPost>>, TError, {
1804
+ data: ResendVerificationRequest;
1805
+ }, TContext>;
1806
+ axios?: AxiosRequestConfig;
1807
+ }) => UseMutationResult<Awaited<ReturnType<typeof resendVerificationAuthResendVerificationPost>>, TError, {
1808
+ data: ResendVerificationRequest;
1809
+ }, TContext>;
352
1810
  /**
353
1811
  * @summary Get Current User Info
354
1812
  */
@@ -494,23 +1952,123 @@ export declare function useGetPantryItemsPantryItemsGet<TData = Awaited<ReturnTy
494
1952
  queryKey: QueryKey;
495
1953
  };
496
1954
  /**
497
- * @summary Get Pantry Item
1955
+ * @summary Bulk Create Pantry Items
498
1956
  */
499
- export declare const getPantryItemPantryItemsItemIdGet: (itemId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<PantryItemResponse>>;
500
- export declare const getGetPantryItemPantryItemsItemIdGetQueryKey: (itemId?: number) => readonly ["/pantry-items/undefined" | `/pantry-items/${number}`];
501
- export declare const getGetPantryItemPantryItemsItemIdGetQueryOptions: <TData = Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>, TError = AxiosError<HTTPValidationError>>(itemId: number, options?: {
502
- query?: UseQueryOptions<Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>, TError, TData>;
1957
+ export declare const bulkCreatePantryItemsPantryItemsBulkPost: (pantryItemBulkCreateRequest: PantryItemBulkCreateRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<BulkResponse>>;
1958
+ export declare const getBulkCreatePantryItemsPantryItemsBulkPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
1959
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkCreatePantryItemsPantryItemsBulkPost>>, TError, {
1960
+ data: PantryItemBulkCreateRequest;
1961
+ }, TContext>;
503
1962
  axios?: AxiosRequestConfig;
504
- }) => UseQueryOptions<Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>, TError, TData> & {
505
- queryKey: QueryKey;
506
- };
507
- export type GetPantryItemPantryItemsItemIdGetQueryResult = NonNullable<Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>>;
508
- export type GetPantryItemPantryItemsItemIdGetQueryError = AxiosError<HTTPValidationError>;
1963
+ }) => UseMutationOptions<Awaited<ReturnType<typeof bulkCreatePantryItemsPantryItemsBulkPost>>, TError, {
1964
+ data: PantryItemBulkCreateRequest;
1965
+ }, TContext>;
1966
+ export type BulkCreatePantryItemsPantryItemsBulkPostMutationResult = NonNullable<Awaited<ReturnType<typeof bulkCreatePantryItemsPantryItemsBulkPost>>>;
1967
+ export type BulkCreatePantryItemsPantryItemsBulkPostMutationBody = PantryItemBulkCreateRequest;
1968
+ export type BulkCreatePantryItemsPantryItemsBulkPostMutationError = AxiosError<HTTPValidationError>;
509
1969
  /**
510
- * @summary Get Pantry Item
511
- */
512
- export declare function useGetPantryItemPantryItemsItemIdGet<TData = Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>, TError = AxiosError<HTTPValidationError>>(itemId: number, options?: {
513
- query?: UseQueryOptions<Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>, TError, TData>;
1970
+ * @summary Bulk Create Pantry Items
1971
+ */
1972
+ export declare const useBulkCreatePantryItemsPantryItemsBulkPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
1973
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkCreatePantryItemsPantryItemsBulkPost>>, TError, {
1974
+ data: PantryItemBulkCreateRequest;
1975
+ }, TContext>;
1976
+ axios?: AxiosRequestConfig;
1977
+ }) => UseMutationResult<Awaited<ReturnType<typeof bulkCreatePantryItemsPantryItemsBulkPost>>, TError, {
1978
+ data: PantryItemBulkCreateRequest;
1979
+ }, TContext>;
1980
+ /**
1981
+ * @summary Bulk Update Pantry Items
1982
+ */
1983
+ export declare const bulkUpdatePantryItemsPantryItemsBulkPatch: (pantryItemBulkUpdateRequest: PantryItemBulkUpdateRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<BulkResponse>>;
1984
+ export declare const getBulkUpdatePantryItemsPantryItemsBulkPatchMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
1985
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkUpdatePantryItemsPantryItemsBulkPatch>>, TError, {
1986
+ data: PantryItemBulkUpdateRequest;
1987
+ }, TContext>;
1988
+ axios?: AxiosRequestConfig;
1989
+ }) => UseMutationOptions<Awaited<ReturnType<typeof bulkUpdatePantryItemsPantryItemsBulkPatch>>, TError, {
1990
+ data: PantryItemBulkUpdateRequest;
1991
+ }, TContext>;
1992
+ export type BulkUpdatePantryItemsPantryItemsBulkPatchMutationResult = NonNullable<Awaited<ReturnType<typeof bulkUpdatePantryItemsPantryItemsBulkPatch>>>;
1993
+ export type BulkUpdatePantryItemsPantryItemsBulkPatchMutationBody = PantryItemBulkUpdateRequest;
1994
+ export type BulkUpdatePantryItemsPantryItemsBulkPatchMutationError = AxiosError<HTTPValidationError>;
1995
+ /**
1996
+ * @summary Bulk Update Pantry Items
1997
+ */
1998
+ export declare const useBulkUpdatePantryItemsPantryItemsBulkPatch: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
1999
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkUpdatePantryItemsPantryItemsBulkPatch>>, TError, {
2000
+ data: PantryItemBulkUpdateRequest;
2001
+ }, TContext>;
2002
+ axios?: AxiosRequestConfig;
2003
+ }) => UseMutationResult<Awaited<ReturnType<typeof bulkUpdatePantryItemsPantryItemsBulkPatch>>, TError, {
2004
+ data: PantryItemBulkUpdateRequest;
2005
+ }, TContext>;
2006
+ /**
2007
+ * @summary Bulk Delete Pantry Items
2008
+ */
2009
+ export declare const bulkDeletePantryItemsPantryItemsBulkDeletePost: (pantryItemBulkDeleteRequest: PantryItemBulkDeleteRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<BulkResponse>>;
2010
+ export declare const getBulkDeletePantryItemsPantryItemsBulkDeletePostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2011
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkDeletePantryItemsPantryItemsBulkDeletePost>>, TError, {
2012
+ data: PantryItemBulkDeleteRequest;
2013
+ }, TContext>;
2014
+ axios?: AxiosRequestConfig;
2015
+ }) => UseMutationOptions<Awaited<ReturnType<typeof bulkDeletePantryItemsPantryItemsBulkDeletePost>>, TError, {
2016
+ data: PantryItemBulkDeleteRequest;
2017
+ }, TContext>;
2018
+ export type BulkDeletePantryItemsPantryItemsBulkDeletePostMutationResult = NonNullable<Awaited<ReturnType<typeof bulkDeletePantryItemsPantryItemsBulkDeletePost>>>;
2019
+ export type BulkDeletePantryItemsPantryItemsBulkDeletePostMutationBody = PantryItemBulkDeleteRequest;
2020
+ export type BulkDeletePantryItemsPantryItemsBulkDeletePostMutationError = AxiosError<HTTPValidationError>;
2021
+ /**
2022
+ * @summary Bulk Delete Pantry Items
2023
+ */
2024
+ export declare const useBulkDeletePantryItemsPantryItemsBulkDeletePost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2025
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkDeletePantryItemsPantryItemsBulkDeletePost>>, TError, {
2026
+ data: PantryItemBulkDeleteRequest;
2027
+ }, TContext>;
2028
+ axios?: AxiosRequestConfig;
2029
+ }) => UseMutationResult<Awaited<ReturnType<typeof bulkDeletePantryItemsPantryItemsBulkDeletePost>>, TError, {
2030
+ data: PantryItemBulkDeleteRequest;
2031
+ }, TContext>;
2032
+ /**
2033
+ * @summary Get Inventory Events
2034
+ */
2035
+ export declare const getInventoryEventsPantryItemsEventsGet: (params?: GetInventoryEventsPantryItemsEventsGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<InventoryEventResponse[]>>;
2036
+ export declare const getGetInventoryEventsPantryItemsEventsGetQueryKey: (params?: GetInventoryEventsPantryItemsEventsGetParams) => readonly ["/pantry-items/events", ...GetInventoryEventsPantryItemsEventsGetParams[]];
2037
+ export declare const getGetInventoryEventsPantryItemsEventsGetQueryOptions: <TData = Awaited<ReturnType<typeof getInventoryEventsPantryItemsEventsGet>>, TError = AxiosError<HTTPValidationError>>(params?: GetInventoryEventsPantryItemsEventsGetParams, options?: {
2038
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getInventoryEventsPantryItemsEventsGet>>, TError, TData>;
2039
+ axios?: AxiosRequestConfig;
2040
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getInventoryEventsPantryItemsEventsGet>>, TError, TData> & {
2041
+ queryKey: QueryKey;
2042
+ };
2043
+ export type GetInventoryEventsPantryItemsEventsGetQueryResult = NonNullable<Awaited<ReturnType<typeof getInventoryEventsPantryItemsEventsGet>>>;
2044
+ export type GetInventoryEventsPantryItemsEventsGetQueryError = AxiosError<HTTPValidationError>;
2045
+ /**
2046
+ * @summary Get Inventory Events
2047
+ */
2048
+ export declare function useGetInventoryEventsPantryItemsEventsGet<TData = Awaited<ReturnType<typeof getInventoryEventsPantryItemsEventsGet>>, TError = AxiosError<HTTPValidationError>>(params?: GetInventoryEventsPantryItemsEventsGetParams, options?: {
2049
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getInventoryEventsPantryItemsEventsGet>>, TError, TData>;
2050
+ axios?: AxiosRequestConfig;
2051
+ }): UseQueryResult<TData, TError> & {
2052
+ queryKey: QueryKey;
2053
+ };
2054
+ /**
2055
+ * @summary Get Pantry Item
2056
+ */
2057
+ export declare const getPantryItemPantryItemsItemIdGet: (itemId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<PantryItemResponse>>;
2058
+ export declare const getGetPantryItemPantryItemsItemIdGetQueryKey: (itemId?: number) => readonly ["/pantry-items/undefined" | `/pantry-items/${number}`];
2059
+ export declare const getGetPantryItemPantryItemsItemIdGetQueryOptions: <TData = Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>, TError = AxiosError<HTTPValidationError>>(itemId: number, options?: {
2060
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>, TError, TData>;
2061
+ axios?: AxiosRequestConfig;
2062
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>, TError, TData> & {
2063
+ queryKey: QueryKey;
2064
+ };
2065
+ export type GetPantryItemPantryItemsItemIdGetQueryResult = NonNullable<Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>>;
2066
+ export type GetPantryItemPantryItemsItemIdGetQueryError = AxiosError<HTTPValidationError>;
2067
+ /**
2068
+ * @summary Get Pantry Item
2069
+ */
2070
+ export declare function useGetPantryItemPantryItemsItemIdGet<TData = Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>, TError = AxiosError<HTTPValidationError>>(itemId: number, options?: {
2071
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getPantryItemPantryItemsItemIdGet>>, TError, TData>;
514
2072
  axios?: AxiosRequestConfig;
515
2073
  }): UseQueryResult<TData, TError> & {
516
2074
  queryKey: QueryKey;
@@ -571,174 +2129,1919 @@ export declare const useDeletePantryItemPantryItemsItemIdDelete: <TError = Axios
571
2129
  itemId: number;
572
2130
  }, TContext>;
573
2131
  /**
574
- * @summary Get Recipe Image
2132
+ * @summary Consume Pantry Item
575
2133
  */
576
- export declare const getRecipeImageRecipesRecipeImageFilenameGet: (filename: string, options?: AxiosRequestConfig) => Promise<AxiosResponse<unknown>>;
577
- export declare const getGetRecipeImageRecipesRecipeImageFilenameGetQueryKey: (filename?: string) => readonly [`/recipes/recipe-image/${string}`];
578
- export declare const getGetRecipeImageRecipesRecipeImageFilenameGetQueryOptions: <TData = Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>, TError = AxiosError<HTTPValidationError>>(filename: string, options?: {
579
- query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>, TError, TData>;
2134
+ export declare const consumePantryItemPantryItemsItemIdConsumePost: (itemId: number, consumeRequest: ConsumeRequest, params?: ConsumePantryItemPantryItemsItemIdConsumePostParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<ConsumeResponse>>;
2135
+ export declare const getConsumePantryItemPantryItemsItemIdConsumePostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2136
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof consumePantryItemPantryItemsItemIdConsumePost>>, TError, {
2137
+ itemId: number;
2138
+ data: ConsumeRequest;
2139
+ params?: ConsumePantryItemPantryItemsItemIdConsumePostParams;
2140
+ }, TContext>;
580
2141
  axios?: AxiosRequestConfig;
581
- }) => UseQueryOptions<Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>, TError, TData> & {
2142
+ }) => UseMutationOptions<Awaited<ReturnType<typeof consumePantryItemPantryItemsItemIdConsumePost>>, TError, {
2143
+ itemId: number;
2144
+ data: ConsumeRequest;
2145
+ params?: ConsumePantryItemPantryItemsItemIdConsumePostParams;
2146
+ }, TContext>;
2147
+ export type ConsumePantryItemPantryItemsItemIdConsumePostMutationResult = NonNullable<Awaited<ReturnType<typeof consumePantryItemPantryItemsItemIdConsumePost>>>;
2148
+ export type ConsumePantryItemPantryItemsItemIdConsumePostMutationBody = ConsumeRequest;
2149
+ export type ConsumePantryItemPantryItemsItemIdConsumePostMutationError = AxiosError<HTTPValidationError>;
2150
+ /**
2151
+ * @summary Consume Pantry Item
2152
+ */
2153
+ export declare const useConsumePantryItemPantryItemsItemIdConsumePost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2154
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof consumePantryItemPantryItemsItemIdConsumePost>>, TError, {
2155
+ itemId: number;
2156
+ data: ConsumeRequest;
2157
+ params?: ConsumePantryItemPantryItemsItemIdConsumePostParams;
2158
+ }, TContext>;
2159
+ axios?: AxiosRequestConfig;
2160
+ }) => UseMutationResult<Awaited<ReturnType<typeof consumePantryItemPantryItemsItemIdConsumePost>>, TError, {
2161
+ itemId: number;
2162
+ data: ConsumeRequest;
2163
+ params?: ConsumePantryItemPantryItemsItemIdConsumePostParams;
2164
+ }, TContext>;
2165
+ /**
2166
+ * @summary List Storage Locations
2167
+ */
2168
+ export declare const listStorageLocationsLocationsGet: (options?: AxiosRequestConfig) => Promise<AxiosResponse<StorageLocationResponse[]>>;
2169
+ export declare const getListStorageLocationsLocationsGetQueryKey: () => readonly ["/locations/"];
2170
+ export declare const getListStorageLocationsLocationsGetQueryOptions: <TData = Awaited<ReturnType<typeof listStorageLocationsLocationsGet>>, TError = AxiosError<unknown>>(options?: {
2171
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listStorageLocationsLocationsGet>>, TError, TData>;
2172
+ axios?: AxiosRequestConfig;
2173
+ }) => UseQueryOptions<Awaited<ReturnType<typeof listStorageLocationsLocationsGet>>, TError, TData> & {
582
2174
  queryKey: QueryKey;
583
2175
  };
584
- export type GetRecipeImageRecipesRecipeImageFilenameGetQueryResult = NonNullable<Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>>;
585
- export type GetRecipeImageRecipesRecipeImageFilenameGetQueryError = AxiosError<HTTPValidationError>;
2176
+ export type ListStorageLocationsLocationsGetQueryResult = NonNullable<Awaited<ReturnType<typeof listStorageLocationsLocationsGet>>>;
2177
+ export type ListStorageLocationsLocationsGetQueryError = AxiosError<unknown>;
586
2178
  /**
587
- * @summary Get Recipe Image
2179
+ * @summary List Storage Locations
588
2180
  */
589
- export declare function useGetRecipeImageRecipesRecipeImageFilenameGet<TData = Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>, TError = AxiosError<HTTPValidationError>>(filename: string, options?: {
590
- query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>, TError, TData>;
2181
+ export declare function useListStorageLocationsLocationsGet<TData = Awaited<ReturnType<typeof listStorageLocationsLocationsGet>>, TError = AxiosError<unknown>>(options?: {
2182
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listStorageLocationsLocationsGet>>, TError, TData>;
591
2183
  axios?: AxiosRequestConfig;
592
2184
  }): UseQueryResult<TData, TError> & {
593
2185
  queryKey: QueryKey;
594
2186
  };
595
2187
  /**
596
- * @summary Search Pantry Items
2188
+ * @summary Create Storage Location
597
2189
  */
598
- export declare const searchPantryItemsRecipesPantrySearchGet: (params: SearchPantryItemsRecipesPantrySearchGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<SearchPantryItemsRecipesPantrySearchGet200>>;
599
- export declare const getSearchPantryItemsRecipesPantrySearchGetQueryKey: (params?: SearchPantryItemsRecipesPantrySearchGetParams) => readonly ["/recipes/pantry/search", ...SearchPantryItemsRecipesPantrySearchGetParams[]];
600
- export declare const getSearchPantryItemsRecipesPantrySearchGetQueryOptions: <TData = Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>, TError = AxiosError<HTTPValidationError>>(params: SearchPantryItemsRecipesPantrySearchGetParams, options?: {
601
- query?: UseQueryOptions<Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>, TError, TData>;
2190
+ export declare const createStorageLocationLocationsPost: (storageLocationCreate: StorageLocationCreate, options?: AxiosRequestConfig) => Promise<AxiosResponse<StorageLocationResponse>>;
2191
+ export declare const getCreateStorageLocationLocationsPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2192
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof createStorageLocationLocationsPost>>, TError, {
2193
+ data: StorageLocationCreate;
2194
+ }, TContext>;
602
2195
  axios?: AxiosRequestConfig;
603
- }) => UseQueryOptions<Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>, TError, TData> & {
2196
+ }) => UseMutationOptions<Awaited<ReturnType<typeof createStorageLocationLocationsPost>>, TError, {
2197
+ data: StorageLocationCreate;
2198
+ }, TContext>;
2199
+ export type CreateStorageLocationLocationsPostMutationResult = NonNullable<Awaited<ReturnType<typeof createStorageLocationLocationsPost>>>;
2200
+ export type CreateStorageLocationLocationsPostMutationBody = StorageLocationCreate;
2201
+ export type CreateStorageLocationLocationsPostMutationError = AxiosError<HTTPValidationError>;
2202
+ /**
2203
+ * @summary Create Storage Location
2204
+ */
2205
+ export declare const useCreateStorageLocationLocationsPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2206
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof createStorageLocationLocationsPost>>, TError, {
2207
+ data: StorageLocationCreate;
2208
+ }, TContext>;
2209
+ axios?: AxiosRequestConfig;
2210
+ }) => UseMutationResult<Awaited<ReturnType<typeof createStorageLocationLocationsPost>>, TError, {
2211
+ data: StorageLocationCreate;
2212
+ }, TContext>;
2213
+ /**
2214
+ * @summary Update Storage Location
2215
+ */
2216
+ export declare const updateStorageLocationLocationsLocationIdPut: (locationId: number, storageLocationUpdate: StorageLocationUpdate, options?: AxiosRequestConfig) => Promise<AxiosResponse<StorageLocationResponse>>;
2217
+ export declare const getUpdateStorageLocationLocationsLocationIdPutMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2218
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateStorageLocationLocationsLocationIdPut>>, TError, {
2219
+ locationId: number;
2220
+ data: StorageLocationUpdate;
2221
+ }, TContext>;
2222
+ axios?: AxiosRequestConfig;
2223
+ }) => UseMutationOptions<Awaited<ReturnType<typeof updateStorageLocationLocationsLocationIdPut>>, TError, {
2224
+ locationId: number;
2225
+ data: StorageLocationUpdate;
2226
+ }, TContext>;
2227
+ export type UpdateStorageLocationLocationsLocationIdPutMutationResult = NonNullable<Awaited<ReturnType<typeof updateStorageLocationLocationsLocationIdPut>>>;
2228
+ export type UpdateStorageLocationLocationsLocationIdPutMutationBody = StorageLocationUpdate;
2229
+ export type UpdateStorageLocationLocationsLocationIdPutMutationError = AxiosError<HTTPValidationError>;
2230
+ /**
2231
+ * @summary Update Storage Location
2232
+ */
2233
+ export declare const useUpdateStorageLocationLocationsLocationIdPut: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2234
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateStorageLocationLocationsLocationIdPut>>, TError, {
2235
+ locationId: number;
2236
+ data: StorageLocationUpdate;
2237
+ }, TContext>;
2238
+ axios?: AxiosRequestConfig;
2239
+ }) => UseMutationResult<Awaited<ReturnType<typeof updateStorageLocationLocationsLocationIdPut>>, TError, {
2240
+ locationId: number;
2241
+ data: StorageLocationUpdate;
2242
+ }, TContext>;
2243
+ /**
2244
+ * @summary Delete Storage Location
2245
+ */
2246
+ export declare const deleteStorageLocationLocationsLocationIdDelete: (locationId: number, params?: DeleteStorageLocationLocationsLocationIdDeleteParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<MessageResponse>>;
2247
+ export declare const getDeleteStorageLocationLocationsLocationIdDeleteMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2248
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteStorageLocationLocationsLocationIdDelete>>, TError, {
2249
+ locationId: number;
2250
+ params?: DeleteStorageLocationLocationsLocationIdDeleteParams;
2251
+ }, TContext>;
2252
+ axios?: AxiosRequestConfig;
2253
+ }) => UseMutationOptions<Awaited<ReturnType<typeof deleteStorageLocationLocationsLocationIdDelete>>, TError, {
2254
+ locationId: number;
2255
+ params?: DeleteStorageLocationLocationsLocationIdDeleteParams;
2256
+ }, TContext>;
2257
+ export type DeleteStorageLocationLocationsLocationIdDeleteMutationResult = NonNullable<Awaited<ReturnType<typeof deleteStorageLocationLocationsLocationIdDelete>>>;
2258
+ export type DeleteStorageLocationLocationsLocationIdDeleteMutationError = AxiosError<HTTPValidationError>;
2259
+ /**
2260
+ * @summary Delete Storage Location
2261
+ */
2262
+ export declare const useDeleteStorageLocationLocationsLocationIdDelete: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2263
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteStorageLocationLocationsLocationIdDelete>>, TError, {
2264
+ locationId: number;
2265
+ params?: DeleteStorageLocationLocationsLocationIdDeleteParams;
2266
+ }, TContext>;
2267
+ axios?: AxiosRequestConfig;
2268
+ }) => UseMutationResult<Awaited<ReturnType<typeof deleteStorageLocationLocationsLocationIdDelete>>, TError, {
2269
+ locationId: number;
2270
+ params?: DeleteStorageLocationLocationsLocationIdDeleteParams;
2271
+ }, TContext>;
2272
+ /**
2273
+ * The caller's household: id, name, settings document, members, created_at.
2274
+ * @summary Get Household
2275
+ */
2276
+ export declare const getHouseholdHouseholdGet: (options?: AxiosRequestConfig) => Promise<AxiosResponse<HouseholdResponse>>;
2277
+ export declare const getGetHouseholdHouseholdGetQueryKey: () => readonly ["/household/"];
2278
+ export declare const getGetHouseholdHouseholdGetQueryOptions: <TData = Awaited<ReturnType<typeof getHouseholdHouseholdGet>>, TError = AxiosError<unknown>>(options?: {
2279
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getHouseholdHouseholdGet>>, TError, TData>;
2280
+ axios?: AxiosRequestConfig;
2281
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getHouseholdHouseholdGet>>, TError, TData> & {
604
2282
  queryKey: QueryKey;
605
2283
  };
606
- export type SearchPantryItemsRecipesPantrySearchGetQueryResult = NonNullable<Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>>;
607
- export type SearchPantryItemsRecipesPantrySearchGetQueryError = AxiosError<HTTPValidationError>;
2284
+ export type GetHouseholdHouseholdGetQueryResult = NonNullable<Awaited<ReturnType<typeof getHouseholdHouseholdGet>>>;
2285
+ export type GetHouseholdHouseholdGetQueryError = AxiosError<unknown>;
608
2286
  /**
609
- * @summary Search Pantry Items
2287
+ * @summary Get Household
610
2288
  */
611
- export declare function useSearchPantryItemsRecipesPantrySearchGet<TData = Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>, TError = AxiosError<HTTPValidationError>>(params: SearchPantryItemsRecipesPantrySearchGetParams, options?: {
612
- query?: UseQueryOptions<Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>, TError, TData>;
2289
+ export declare function useGetHouseholdHouseholdGet<TData = Awaited<ReturnType<typeof getHouseholdHouseholdGet>>, TError = AxiosError<unknown>>(options?: {
2290
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getHouseholdHouseholdGet>>, TError, TData>;
613
2291
  axios?: AxiosRequestConfig;
614
2292
  }): UseQueryResult<TData, TError> & {
615
2293
  queryKey: QueryKey;
616
2294
  };
617
2295
  /**
618
- * @summary Create Recipe
2296
+ * Partially update household name and/or settings (settings keys merge).
2297
+ * @summary Update Household
619
2298
  */
620
- export declare const createRecipeRecipesPost: (bodyCreateRecipeRecipesPost: BodyCreateRecipeRecipesPost, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse>>;
621
- export declare const getCreateRecipeRecipesPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
622
- mutation?: UseMutationOptions<Awaited<ReturnType<typeof createRecipeRecipesPost>>, TError, {
623
- data: BodyCreateRecipeRecipesPost;
2299
+ export declare const updateHouseholdHouseholdPatch: (householdUpdate: HouseholdUpdate, options?: AxiosRequestConfig) => Promise<AxiosResponse<HouseholdResponse>>;
2300
+ export declare const getUpdateHouseholdHouseholdPatchMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2301
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateHouseholdHouseholdPatch>>, TError, {
2302
+ data: HouseholdUpdate;
624
2303
  }, TContext>;
625
2304
  axios?: AxiosRequestConfig;
626
- }) => UseMutationOptions<Awaited<ReturnType<typeof createRecipeRecipesPost>>, TError, {
627
- data: BodyCreateRecipeRecipesPost;
2305
+ }) => UseMutationOptions<Awaited<ReturnType<typeof updateHouseholdHouseholdPatch>>, TError, {
2306
+ data: HouseholdUpdate;
628
2307
  }, TContext>;
629
- export type CreateRecipeRecipesPostMutationResult = NonNullable<Awaited<ReturnType<typeof createRecipeRecipesPost>>>;
630
- export type CreateRecipeRecipesPostMutationBody = BodyCreateRecipeRecipesPost;
631
- export type CreateRecipeRecipesPostMutationError = AxiosError<HTTPValidationError>;
2308
+ export type UpdateHouseholdHouseholdPatchMutationResult = NonNullable<Awaited<ReturnType<typeof updateHouseholdHouseholdPatch>>>;
2309
+ export type UpdateHouseholdHouseholdPatchMutationBody = HouseholdUpdate;
2310
+ export type UpdateHouseholdHouseholdPatchMutationError = AxiosError<HTTPValidationError>;
632
2311
  /**
633
- * @summary Create Recipe
2312
+ * @summary Update Household
634
2313
  */
635
- export declare const useCreateRecipeRecipesPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
636
- mutation?: UseMutationOptions<Awaited<ReturnType<typeof createRecipeRecipesPost>>, TError, {
637
- data: BodyCreateRecipeRecipesPost;
2314
+ export declare const useUpdateHouseholdHouseholdPatch: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2315
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateHouseholdHouseholdPatch>>, TError, {
2316
+ data: HouseholdUpdate;
638
2317
  }, TContext>;
639
2318
  axios?: AxiosRequestConfig;
640
- }) => UseMutationResult<Awaited<ReturnType<typeof createRecipeRecipesPost>>, TError, {
641
- data: BodyCreateRecipeRecipesPost;
2319
+ }) => UseMutationResult<Awaited<ReturnType<typeof updateHouseholdHouseholdPatch>>, TError, {
2320
+ data: HouseholdUpdate;
642
2321
  }, TContext>;
643
2322
  /**
644
- * @summary Get Recipes
2323
+ * List the household's members (MVP personal households: just the caller).
2324
+ * @summary List Household Members
645
2325
  */
646
- export declare const getRecipesRecipesGet: (params?: GetRecipesRecipesGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse[]>>;
647
- export declare const getGetRecipesRecipesGetQueryKey: (params?: GetRecipesRecipesGetParams) => readonly ["/recipes/", ...GetRecipesRecipesGetParams[]];
648
- export declare const getGetRecipesRecipesGetQueryOptions: <TData = Awaited<ReturnType<typeof getRecipesRecipesGet>>, TError = AxiosError<HTTPValidationError>>(params?: GetRecipesRecipesGetParams, options?: {
649
- query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipesRecipesGet>>, TError, TData>;
2326
+ export declare const listHouseholdMembersHouseholdMembersGet: (options?: AxiosRequestConfig) => Promise<AxiosResponse<HouseholdMemberOut[]>>;
2327
+ export declare const getListHouseholdMembersHouseholdMembersGetQueryKey: () => readonly ["/household/members"];
2328
+ export declare const getListHouseholdMembersHouseholdMembersGetQueryOptions: <TData = Awaited<ReturnType<typeof listHouseholdMembersHouseholdMembersGet>>, TError = AxiosError<unknown>>(options?: {
2329
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listHouseholdMembersHouseholdMembersGet>>, TError, TData>;
650
2330
  axios?: AxiosRequestConfig;
651
- }) => UseQueryOptions<Awaited<ReturnType<typeof getRecipesRecipesGet>>, TError, TData> & {
2331
+ }) => UseQueryOptions<Awaited<ReturnType<typeof listHouseholdMembersHouseholdMembersGet>>, TError, TData> & {
652
2332
  queryKey: QueryKey;
653
2333
  };
654
- export type GetRecipesRecipesGetQueryResult = NonNullable<Awaited<ReturnType<typeof getRecipesRecipesGet>>>;
655
- export type GetRecipesRecipesGetQueryError = AxiosError<HTTPValidationError>;
2334
+ export type ListHouseholdMembersHouseholdMembersGetQueryResult = NonNullable<Awaited<ReturnType<typeof listHouseholdMembersHouseholdMembersGet>>>;
2335
+ export type ListHouseholdMembersHouseholdMembersGetQueryError = AxiosError<unknown>;
656
2336
  /**
657
- * @summary Get Recipes
2337
+ * @summary List Household Members
658
2338
  */
659
- export declare function useGetRecipesRecipesGet<TData = Awaited<ReturnType<typeof getRecipesRecipesGet>>, TError = AxiosError<HTTPValidationError>>(params?: GetRecipesRecipesGetParams, options?: {
660
- query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipesRecipesGet>>, TError, TData>;
2339
+ export declare function useListHouseholdMembersHouseholdMembersGet<TData = Awaited<ReturnType<typeof listHouseholdMembersHouseholdMembersGet>>, TError = AxiosError<unknown>>(options?: {
2340
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listHouseholdMembersHouseholdMembersGet>>, TError, TData>;
661
2341
  axios?: AxiosRequestConfig;
662
2342
  }): UseQueryResult<TData, TError> & {
663
2343
  queryKey: QueryKey;
664
2344
  };
665
2345
  /**
666
- * @summary Get Recipe
2346
+ * One aggregate call for the app home screen, household-scoped.
2347
+
2348
+ ``suggested_recipes`` is the top-3 deterministic coverage ranking (P2,
2349
+ same service as /recipes/suggestions). ``active_plan`` (P3) is the
2350
+ household's active meal plan with today's slots — null when no plan is
2351
+ active.
2352
+ * @summary Get Dashboard Summary
667
2353
  */
668
- export declare const getRecipeRecipesRecipeIdGet: (recipeId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse>>;
669
- export declare const getGetRecipeRecipesRecipeIdGetQueryKey: (recipeId?: number) => readonly ["/recipes/undefined" | `/recipes/${number}`];
670
- export declare const getGetRecipeRecipesRecipeIdGetQueryOptions: <TData = Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>, TError = AxiosError<HTTPValidationError>>(recipeId: number, options?: {
671
- query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>, TError, TData>;
2354
+ export declare const getDashboardSummaryDashboardSummaryGet: (options?: AxiosRequestConfig) => Promise<AxiosResponse<DashboardSummaryResponse>>;
2355
+ export declare const getGetDashboardSummaryDashboardSummaryGetQueryKey: () => readonly ["/dashboard/summary"];
2356
+ export declare const getGetDashboardSummaryDashboardSummaryGetQueryOptions: <TData = Awaited<ReturnType<typeof getDashboardSummaryDashboardSummaryGet>>, TError = AxiosError<unknown>>(options?: {
2357
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getDashboardSummaryDashboardSummaryGet>>, TError, TData>;
672
2358
  axios?: AxiosRequestConfig;
673
- }) => UseQueryOptions<Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>, TError, TData> & {
2359
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getDashboardSummaryDashboardSummaryGet>>, TError, TData> & {
674
2360
  queryKey: QueryKey;
675
2361
  };
676
- export type GetRecipeRecipesRecipeIdGetQueryResult = NonNullable<Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>>;
677
- export type GetRecipeRecipesRecipeIdGetQueryError = AxiosError<HTTPValidationError>;
2362
+ export type GetDashboardSummaryDashboardSummaryGetQueryResult = NonNullable<Awaited<ReturnType<typeof getDashboardSummaryDashboardSummaryGet>>>;
2363
+ export type GetDashboardSummaryDashboardSummaryGetQueryError = AxiosError<unknown>;
678
2364
  /**
679
- * @summary Get Recipe
2365
+ * @summary Get Dashboard Summary
680
2366
  */
681
- export declare function useGetRecipeRecipesRecipeIdGet<TData = Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>, TError = AxiosError<HTTPValidationError>>(recipeId: number, options?: {
682
- query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>, TError, TData>;
2367
+ export declare function useGetDashboardSummaryDashboardSummaryGet<TData = Awaited<ReturnType<typeof getDashboardSummaryDashboardSummaryGet>>, TError = AxiosError<unknown>>(options?: {
2368
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getDashboardSummaryDashboardSummaryGet>>, TError, TData>;
683
2369
  axios?: AxiosRequestConfig;
684
2370
  }): UseQueryResult<TData, TError> & {
685
2371
  queryKey: QueryKey;
686
2372
  };
687
2373
  /**
688
- * @summary Update Recipe
2374
+ * Set visibility (private|public) on my own recipe (§5.7). 404 — not
2375
+ 403 — for recipes I don't own, per the private-by-default posture (§12).
2376
+ * @summary Set Recipe Visibility
689
2377
  */
690
- export declare const updateRecipeRecipesRecipeIdPut: (recipeId: number, bodyUpdateRecipeRecipesRecipeIdPut: BodyUpdateRecipeRecipesRecipeIdPut, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse>>;
691
- export declare const getUpdateRecipeRecipesRecipeIdPutMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
692
- mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateRecipeRecipesRecipeIdPut>>, TError, {
2378
+ export declare const setRecipeVisibilityRecipesRecipeIdVisibilityPut: (recipeId: number, visibilityUpdate: VisibilityUpdate, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse>>;
2379
+ export declare const getSetRecipeVisibilityRecipesRecipeIdVisibilityPutMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2380
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof setRecipeVisibilityRecipesRecipeIdVisibilityPut>>, TError, {
693
2381
  recipeId: number;
694
- data: BodyUpdateRecipeRecipesRecipeIdPut;
2382
+ data: VisibilityUpdate;
695
2383
  }, TContext>;
696
2384
  axios?: AxiosRequestConfig;
697
- }) => UseMutationOptions<Awaited<ReturnType<typeof updateRecipeRecipesRecipeIdPut>>, TError, {
2385
+ }) => UseMutationOptions<Awaited<ReturnType<typeof setRecipeVisibilityRecipesRecipeIdVisibilityPut>>, TError, {
698
2386
  recipeId: number;
699
- data: BodyUpdateRecipeRecipesRecipeIdPut;
2387
+ data: VisibilityUpdate;
700
2388
  }, TContext>;
701
- export type UpdateRecipeRecipesRecipeIdPutMutationResult = NonNullable<Awaited<ReturnType<typeof updateRecipeRecipesRecipeIdPut>>>;
702
- export type UpdateRecipeRecipesRecipeIdPutMutationBody = BodyUpdateRecipeRecipesRecipeIdPut;
703
- export type UpdateRecipeRecipesRecipeIdPutMutationError = AxiosError<HTTPValidationError>;
2389
+ export type SetRecipeVisibilityRecipesRecipeIdVisibilityPutMutationResult = NonNullable<Awaited<ReturnType<typeof setRecipeVisibilityRecipesRecipeIdVisibilityPut>>>;
2390
+ export type SetRecipeVisibilityRecipesRecipeIdVisibilityPutMutationBody = VisibilityUpdate;
2391
+ export type SetRecipeVisibilityRecipesRecipeIdVisibilityPutMutationError = AxiosError<HTTPValidationError>;
704
2392
  /**
705
- * @summary Update Recipe
2393
+ * @summary Set Recipe Visibility
706
2394
  */
707
- export declare const useUpdateRecipeRecipesRecipeIdPut: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
708
- mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateRecipeRecipesRecipeIdPut>>, TError, {
2395
+ export declare const useSetRecipeVisibilityRecipesRecipeIdVisibilityPut: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2396
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof setRecipeVisibilityRecipesRecipeIdVisibilityPut>>, TError, {
709
2397
  recipeId: number;
710
- data: BodyUpdateRecipeRecipesRecipeIdPut;
2398
+ data: VisibilityUpdate;
711
2399
  }, TContext>;
712
2400
  axios?: AxiosRequestConfig;
713
- }) => UseMutationResult<Awaited<ReturnType<typeof updateRecipeRecipesRecipeIdPut>>, TError, {
2401
+ }) => UseMutationResult<Awaited<ReturnType<typeof setRecipeVisibilityRecipesRecipeIdVisibilityPut>>, TError, {
714
2402
  recipeId: number;
715
- data: BodyUpdateRecipeRecipesRecipeIdPut;
2403
+ data: VisibilityUpdate;
716
2404
  }, TContext>;
717
2405
  /**
718
- * @summary Delete Recipe
2406
+ * Set visibility (private|public) on a household-owned plan (§5.7).
2407
+ * @summary Set Plan Visibility
719
2408
  */
720
- export declare const deleteRecipeRecipesRecipeIdDelete: (recipeId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<DeleteRecipeRecipesRecipeIdDelete200>>;
721
- export declare const getDeleteRecipeRecipesRecipeIdDeleteMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
722
- mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteRecipeRecipesRecipeIdDelete>>, TError, {
2409
+ export declare const setPlanVisibilityPlansPlanIdVisibilityPut: (planId: number, visibilityUpdate: VisibilityUpdate, options?: AxiosRequestConfig) => Promise<AxiosResponse<MealPlanDetailResponse>>;
2410
+ export declare const getSetPlanVisibilityPlansPlanIdVisibilityPutMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2411
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof setPlanVisibilityPlansPlanIdVisibilityPut>>, TError, {
2412
+ planId: number;
2413
+ data: VisibilityUpdate;
2414
+ }, TContext>;
2415
+ axios?: AxiosRequestConfig;
2416
+ }) => UseMutationOptions<Awaited<ReturnType<typeof setPlanVisibilityPlansPlanIdVisibilityPut>>, TError, {
2417
+ planId: number;
2418
+ data: VisibilityUpdate;
2419
+ }, TContext>;
2420
+ export type SetPlanVisibilityPlansPlanIdVisibilityPutMutationResult = NonNullable<Awaited<ReturnType<typeof setPlanVisibilityPlansPlanIdVisibilityPut>>>;
2421
+ export type SetPlanVisibilityPlansPlanIdVisibilityPutMutationBody = VisibilityUpdate;
2422
+ export type SetPlanVisibilityPlansPlanIdVisibilityPutMutationError = AxiosError<HTTPValidationError>;
2423
+ /**
2424
+ * @summary Set Plan Visibility
2425
+ */
2426
+ export declare const useSetPlanVisibilityPlansPlanIdVisibilityPut: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2427
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof setPlanVisibilityPlansPlanIdVisibilityPut>>, TError, {
2428
+ planId: number;
2429
+ data: VisibilityUpdate;
2430
+ }, TContext>;
2431
+ axios?: AxiosRequestConfig;
2432
+ }) => UseMutationResult<Awaited<ReturnType<typeof setPlanVisibilityPlansPlanIdVisibilityPut>>, TError, {
2433
+ planId: number;
2434
+ data: VisibilityUpdate;
2435
+ }, TContext>;
2436
+ /**
2437
+ * Public recipe discovery (D3: Reddit-style). Only visibility='public'
2438
+ rows are ever returned; rating/favorite stats are embedded.
2439
+ * @summary List Public Recipes
2440
+ */
2441
+ export declare const listPublicRecipesRecipesPublicGet: (params?: ListPublicRecipesRecipesPublicGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<PublicRecipeSummary[]>>;
2442
+ export declare const getListPublicRecipesRecipesPublicGetQueryKey: (params?: ListPublicRecipesRecipesPublicGetParams) => readonly ["/recipes/public", ...ListPublicRecipesRecipesPublicGetParams[]];
2443
+ export declare const getListPublicRecipesRecipesPublicGetQueryOptions: <TData = Awaited<ReturnType<typeof listPublicRecipesRecipesPublicGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListPublicRecipesRecipesPublicGetParams, options?: {
2444
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listPublicRecipesRecipesPublicGet>>, TError, TData>;
2445
+ axios?: AxiosRequestConfig;
2446
+ }) => UseQueryOptions<Awaited<ReturnType<typeof listPublicRecipesRecipesPublicGet>>, TError, TData> & {
2447
+ queryKey: QueryKey;
2448
+ };
2449
+ export type ListPublicRecipesRecipesPublicGetQueryResult = NonNullable<Awaited<ReturnType<typeof listPublicRecipesRecipesPublicGet>>>;
2450
+ export type ListPublicRecipesRecipesPublicGetQueryError = AxiosError<HTTPValidationError>;
2451
+ /**
2452
+ * @summary List Public Recipes
2453
+ */
2454
+ export declare function useListPublicRecipesRecipesPublicGet<TData = Awaited<ReturnType<typeof listPublicRecipesRecipesPublicGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListPublicRecipesRecipesPublicGetParams, options?: {
2455
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listPublicRecipesRecipesPublicGet>>, TError, TData>;
2456
+ axios?: AxiosRequestConfig;
2457
+ }): UseQueryResult<TData, TError> & {
2458
+ queryKey: QueryKey;
2459
+ };
2460
+ /**
2461
+ * Public meal plan discovery. (Plans have no cuisine/tags fields — those
2462
+ discovery filters exist on /recipes/public only.)
2463
+ * @summary List Public Plans
2464
+ */
2465
+ export declare const listPublicPlansPlansPublicGet: (params?: ListPublicPlansPlansPublicGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<PublicPlanSummary[]>>;
2466
+ export declare const getListPublicPlansPlansPublicGetQueryKey: (params?: ListPublicPlansPlansPublicGetParams) => readonly ["/plans/public", ...ListPublicPlansPlansPublicGetParams[]];
2467
+ export declare const getListPublicPlansPlansPublicGetQueryOptions: <TData = Awaited<ReturnType<typeof listPublicPlansPlansPublicGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListPublicPlansPlansPublicGetParams, options?: {
2468
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listPublicPlansPlansPublicGet>>, TError, TData>;
2469
+ axios?: AxiosRequestConfig;
2470
+ }) => UseQueryOptions<Awaited<ReturnType<typeof listPublicPlansPlansPublicGet>>, TError, TData> & {
2471
+ queryKey: QueryKey;
2472
+ };
2473
+ export type ListPublicPlansPlansPublicGetQueryResult = NonNullable<Awaited<ReturnType<typeof listPublicPlansPlansPublicGet>>>;
2474
+ export type ListPublicPlansPlansPublicGetQueryError = AxiosError<HTTPValidationError>;
2475
+ /**
2476
+ * @summary List Public Plans
2477
+ */
2478
+ export declare function useListPublicPlansPlansPublicGet<TData = Awaited<ReturnType<typeof listPublicPlansPlansPublicGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListPublicPlansPlansPublicGetParams, options?: {
2479
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listPublicPlansPlansPublicGet>>, TError, TData>;
2480
+ axios?: AxiosRequestConfig;
2481
+ }): UseQueryResult<TData, TError> & {
2482
+ queryKey: QueryKey;
2483
+ };
2484
+ /**
2485
+ * Copy a recipe I can see (public, or my own) into my library
2486
+ (D3: Spotify-playlist-style). The copy starts private, records
2487
+ provenance (source=forked, forked_from_recipe_id), and is fully
2488
+ independent of the original.
2489
+ * @summary Fork Recipe
2490
+ */
2491
+ export declare const forkRecipeRecipesRecipeIdForkPost: (recipeId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse>>;
2492
+ export declare const getForkRecipeRecipesRecipeIdForkPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2493
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof forkRecipeRecipesRecipeIdForkPost>>, TError, {
723
2494
  recipeId: number;
724
2495
  }, TContext>;
725
2496
  axios?: AxiosRequestConfig;
726
- }) => UseMutationOptions<Awaited<ReturnType<typeof deleteRecipeRecipesRecipeIdDelete>>, TError, {
2497
+ }) => UseMutationOptions<Awaited<ReturnType<typeof forkRecipeRecipesRecipeIdForkPost>>, TError, {
727
2498
  recipeId: number;
728
2499
  }, TContext>;
729
- export type DeleteRecipeRecipesRecipeIdDeleteMutationResult = NonNullable<Awaited<ReturnType<typeof deleteRecipeRecipesRecipeIdDelete>>>;
730
- export type DeleteRecipeRecipesRecipeIdDeleteMutationError = AxiosError<HTTPValidationError>;
2500
+ export type ForkRecipeRecipesRecipeIdForkPostMutationResult = NonNullable<Awaited<ReturnType<typeof forkRecipeRecipesRecipeIdForkPost>>>;
2501
+ export type ForkRecipeRecipesRecipeIdForkPostMutationError = AxiosError<HTTPValidationError>;
731
2502
  /**
732
- * @summary Delete Recipe
2503
+ * @summary Fork Recipe
733
2504
  */
734
- export declare const useDeleteRecipeRecipesRecipeIdDelete: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
735
- mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteRecipeRecipesRecipeIdDelete>>, TError, {
2505
+ export declare const useForkRecipeRecipesRecipeIdForkPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2506
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof forkRecipeRecipesRecipeIdForkPost>>, TError, {
736
2507
  recipeId: number;
737
2508
  }, TContext>;
738
2509
  axios?: AxiosRequestConfig;
739
- }) => UseMutationResult<Awaited<ReturnType<typeof deleteRecipeRecipesRecipeIdDelete>>, TError, {
2510
+ }) => UseMutationResult<Awaited<ReturnType<typeof forkRecipeRecipesRecipeIdForkPost>>, TError, {
740
2511
  recipeId: number;
741
2512
  }, TContext>;
2513
+ /**
2514
+ * Copy a plan I can see (public / preset / my own) into my household.
2515
+ User-recipe slots are forked along (so the copy stays independent);
2516
+ catalog references stay (global); slots pointing at recipes I cannot see
2517
+ become explicit skips.
2518
+ * @summary Fork Plan
2519
+ */
2520
+ export declare const forkPlanPlansPlanIdForkPost: (planId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<MealPlanDetailResponse>>;
2521
+ export declare const getForkPlanPlansPlanIdForkPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2522
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof forkPlanPlansPlanIdForkPost>>, TError, {
2523
+ planId: number;
2524
+ }, TContext>;
2525
+ axios?: AxiosRequestConfig;
2526
+ }) => UseMutationOptions<Awaited<ReturnType<typeof forkPlanPlansPlanIdForkPost>>, TError, {
2527
+ planId: number;
2528
+ }, TContext>;
2529
+ export type ForkPlanPlansPlanIdForkPostMutationResult = NonNullable<Awaited<ReturnType<typeof forkPlanPlansPlanIdForkPost>>>;
2530
+ export type ForkPlanPlansPlanIdForkPostMutationError = AxiosError<HTTPValidationError>;
2531
+ /**
2532
+ * @summary Fork Plan
2533
+ */
2534
+ export declare const useForkPlanPlansPlanIdForkPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2535
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof forkPlanPlansPlanIdForkPost>>, TError, {
2536
+ planId: number;
2537
+ }, TContext>;
2538
+ axios?: AxiosRequestConfig;
2539
+ }) => UseMutationResult<Awaited<ReturnType<typeof forkPlanPlansPlanIdForkPost>>, TError, {
2540
+ planId: number;
2541
+ }, TContext>;
2542
+ /**
2543
+ * Favorite a recipe or plan I can see (own private + public — §5.7).
2544
+ Idempotent: re-adding returns the existing favorite.
2545
+ * @summary Add Favorite
2546
+ */
2547
+ export declare const addFavoriteFavoritesTargetTypeTargetIdPost: (targetType: SocialTargetEnum, targetId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<FavoriteResponse>>;
2548
+ export declare const getAddFavoriteFavoritesTargetTypeTargetIdPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2549
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof addFavoriteFavoritesTargetTypeTargetIdPost>>, TError, {
2550
+ targetType: SocialTargetEnum;
2551
+ targetId: number;
2552
+ }, TContext>;
2553
+ axios?: AxiosRequestConfig;
2554
+ }) => UseMutationOptions<Awaited<ReturnType<typeof addFavoriteFavoritesTargetTypeTargetIdPost>>, TError, {
2555
+ targetType: SocialTargetEnum;
2556
+ targetId: number;
2557
+ }, TContext>;
2558
+ export type AddFavoriteFavoritesTargetTypeTargetIdPostMutationResult = NonNullable<Awaited<ReturnType<typeof addFavoriteFavoritesTargetTypeTargetIdPost>>>;
2559
+ export type AddFavoriteFavoritesTargetTypeTargetIdPostMutationError = AxiosError<HTTPValidationError>;
2560
+ /**
2561
+ * @summary Add Favorite
2562
+ */
2563
+ export declare const useAddFavoriteFavoritesTargetTypeTargetIdPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2564
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof addFavoriteFavoritesTargetTypeTargetIdPost>>, TError, {
2565
+ targetType: SocialTargetEnum;
2566
+ targetId: number;
2567
+ }, TContext>;
2568
+ axios?: AxiosRequestConfig;
2569
+ }) => UseMutationResult<Awaited<ReturnType<typeof addFavoriteFavoritesTargetTypeTargetIdPost>>, TError, {
2570
+ targetType: SocialTargetEnum;
2571
+ targetId: number;
2572
+ }, TContext>;
2573
+ /**
2574
+ * @summary Remove Favorite
2575
+ */
2576
+ export declare const removeFavoriteFavoritesTargetTypeTargetIdDelete: (targetType: SocialTargetEnum, targetId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<MessageResponse>>;
2577
+ export declare const getRemoveFavoriteFavoritesTargetTypeTargetIdDeleteMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2578
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof removeFavoriteFavoritesTargetTypeTargetIdDelete>>, TError, {
2579
+ targetType: SocialTargetEnum;
2580
+ targetId: number;
2581
+ }, TContext>;
2582
+ axios?: AxiosRequestConfig;
2583
+ }) => UseMutationOptions<Awaited<ReturnType<typeof removeFavoriteFavoritesTargetTypeTargetIdDelete>>, TError, {
2584
+ targetType: SocialTargetEnum;
2585
+ targetId: number;
2586
+ }, TContext>;
2587
+ export type RemoveFavoriteFavoritesTargetTypeTargetIdDeleteMutationResult = NonNullable<Awaited<ReturnType<typeof removeFavoriteFavoritesTargetTypeTargetIdDelete>>>;
2588
+ export type RemoveFavoriteFavoritesTargetTypeTargetIdDeleteMutationError = AxiosError<HTTPValidationError>;
2589
+ /**
2590
+ * @summary Remove Favorite
2591
+ */
2592
+ export declare const useRemoveFavoriteFavoritesTargetTypeTargetIdDelete: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2593
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof removeFavoriteFavoritesTargetTypeTargetIdDelete>>, TError, {
2594
+ targetType: SocialTargetEnum;
2595
+ targetId: number;
2596
+ }, TContext>;
2597
+ axios?: AxiosRequestConfig;
2598
+ }) => UseMutationResult<Awaited<ReturnType<typeof removeFavoriteFavoritesTargetTypeTargetIdDelete>>, TError, {
2599
+ targetType: SocialTargetEnum;
2600
+ targetId: number;
2601
+ }, TContext>;
2602
+ /**
2603
+ * My favorites. Targets that went private since I favorited them are
2604
+ hidden (they stay valid for users who can still see them — §12).
2605
+ * @summary List Favorites
2606
+ */
2607
+ export declare const listFavoritesFavoritesGet: (params?: ListFavoritesFavoritesGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<FavoriteResponse[]>>;
2608
+ export declare const getListFavoritesFavoritesGetQueryKey: (params?: ListFavoritesFavoritesGetParams) => readonly ["/favorites/", ...ListFavoritesFavoritesGetParams[]];
2609
+ export declare const getListFavoritesFavoritesGetQueryOptions: <TData = Awaited<ReturnType<typeof listFavoritesFavoritesGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListFavoritesFavoritesGetParams, options?: {
2610
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listFavoritesFavoritesGet>>, TError, TData>;
2611
+ axios?: AxiosRequestConfig;
2612
+ }) => UseQueryOptions<Awaited<ReturnType<typeof listFavoritesFavoritesGet>>, TError, TData> & {
2613
+ queryKey: QueryKey;
2614
+ };
2615
+ export type ListFavoritesFavoritesGetQueryResult = NonNullable<Awaited<ReturnType<typeof listFavoritesFavoritesGet>>>;
2616
+ export type ListFavoritesFavoritesGetQueryError = AxiosError<HTTPValidationError>;
2617
+ /**
2618
+ * @summary List Favorites
2619
+ */
2620
+ export declare function useListFavoritesFavoritesGet<TData = Awaited<ReturnType<typeof listFavoritesFavoritesGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListFavoritesFavoritesGetParams, options?: {
2621
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listFavoritesFavoritesGet>>, TError, TData>;
2622
+ axios?: AxiosRequestConfig;
2623
+ }): UseQueryResult<TData, TError> & {
2624
+ queryKey: QueryKey;
2625
+ };
2626
+ /**
2627
+ * Upsert my rating (stars 1..5 + optional detailed review — D3) on
2628
+ anything I can see (own private + public).
2629
+ * @summary Upsert Rating
2630
+ */
2631
+ export declare const upsertRatingRatingsTargetTypeTargetIdPut: (targetType: SocialTargetEnum, targetId: number, ratingUpsert: RatingUpsert, options?: AxiosRequestConfig) => Promise<AxiosResponse<ReviewOut>>;
2632
+ export declare const getUpsertRatingRatingsTargetTypeTargetIdPutMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2633
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof upsertRatingRatingsTargetTypeTargetIdPut>>, TError, {
2634
+ targetType: SocialTargetEnum;
2635
+ targetId: number;
2636
+ data: RatingUpsert;
2637
+ }, TContext>;
2638
+ axios?: AxiosRequestConfig;
2639
+ }) => UseMutationOptions<Awaited<ReturnType<typeof upsertRatingRatingsTargetTypeTargetIdPut>>, TError, {
2640
+ targetType: SocialTargetEnum;
2641
+ targetId: number;
2642
+ data: RatingUpsert;
2643
+ }, TContext>;
2644
+ export type UpsertRatingRatingsTargetTypeTargetIdPutMutationResult = NonNullable<Awaited<ReturnType<typeof upsertRatingRatingsTargetTypeTargetIdPut>>>;
2645
+ export type UpsertRatingRatingsTargetTypeTargetIdPutMutationBody = RatingUpsert;
2646
+ export type UpsertRatingRatingsTargetTypeTargetIdPutMutationError = AxiosError<HTTPValidationError>;
2647
+ /**
2648
+ * @summary Upsert Rating
2649
+ */
2650
+ export declare const useUpsertRatingRatingsTargetTypeTargetIdPut: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2651
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof upsertRatingRatingsTargetTypeTargetIdPut>>, TError, {
2652
+ targetType: SocialTargetEnum;
2653
+ targetId: number;
2654
+ data: RatingUpsert;
2655
+ }, TContext>;
2656
+ axios?: AxiosRequestConfig;
2657
+ }) => UseMutationResult<Awaited<ReturnType<typeof upsertRatingRatingsTargetTypeTargetIdPut>>, TError, {
2658
+ targetType: SocialTargetEnum;
2659
+ targetId: number;
2660
+ data: RatingUpsert;
2661
+ }, TContext>;
2662
+ /**
2663
+ * Delete my rating (review photos and their files go with it).
2664
+ * @summary Delete Rating
2665
+ */
2666
+ export declare const deleteRatingRatingsTargetTypeTargetIdDelete: (targetType: SocialTargetEnum, targetId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<MessageResponse>>;
2667
+ export declare const getDeleteRatingRatingsTargetTypeTargetIdDeleteMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2668
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteRatingRatingsTargetTypeTargetIdDelete>>, TError, {
2669
+ targetType: SocialTargetEnum;
2670
+ targetId: number;
2671
+ }, TContext>;
2672
+ axios?: AxiosRequestConfig;
2673
+ }) => UseMutationOptions<Awaited<ReturnType<typeof deleteRatingRatingsTargetTypeTargetIdDelete>>, TError, {
2674
+ targetType: SocialTargetEnum;
2675
+ targetId: number;
2676
+ }, TContext>;
2677
+ export type DeleteRatingRatingsTargetTypeTargetIdDeleteMutationResult = NonNullable<Awaited<ReturnType<typeof deleteRatingRatingsTargetTypeTargetIdDelete>>>;
2678
+ export type DeleteRatingRatingsTargetTypeTargetIdDeleteMutationError = AxiosError<HTTPValidationError>;
2679
+ /**
2680
+ * @summary Delete Rating
2681
+ */
2682
+ export declare const useDeleteRatingRatingsTargetTypeTargetIdDelete: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2683
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteRatingRatingsTargetTypeTargetIdDelete>>, TError, {
2684
+ targetType: SocialTargetEnum;
2685
+ targetId: number;
2686
+ }, TContext>;
2687
+ axios?: AxiosRequestConfig;
2688
+ }) => UseMutationResult<Awaited<ReturnType<typeof deleteRatingRatingsTargetTypeTargetIdDelete>>, TError, {
2689
+ targetType: SocialTargetEnum;
2690
+ targetId: number;
2691
+ }, TContext>;
2692
+ /**
2693
+ * Aggregate {average, count, my_rating} + recent reviews with their
2694
+ photos. 404 for targets I cannot see (§12 go-private rule).
2695
+ * @summary Get Rating Aggregate
2696
+ */
2697
+ export declare const getRatingAggregateRatingsTargetTypeTargetIdGet: (targetType: SocialTargetEnum, targetId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<RatingAggregateResponse>>;
2698
+ export declare const getGetRatingAggregateRatingsTargetTypeTargetIdGetQueryKey: (targetType?: SocialTargetEnum, targetId?: number) => readonly ["/ratings/undefined/undefined" | `/ratings/undefined/${number}` | "/ratings/recipe/undefined" | `/ratings/recipe/${number}` | "/ratings/meal_plan/undefined" | `/ratings/meal_plan/${number}`];
2699
+ export declare const getGetRatingAggregateRatingsTargetTypeTargetIdGetQueryOptions: <TData = Awaited<ReturnType<typeof getRatingAggregateRatingsTargetTypeTargetIdGet>>, TError = AxiosError<HTTPValidationError>>(targetType: SocialTargetEnum, targetId: number, options?: {
2700
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getRatingAggregateRatingsTargetTypeTargetIdGet>>, TError, TData>;
2701
+ axios?: AxiosRequestConfig;
2702
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getRatingAggregateRatingsTargetTypeTargetIdGet>>, TError, TData> & {
2703
+ queryKey: QueryKey;
2704
+ };
2705
+ export type GetRatingAggregateRatingsTargetTypeTargetIdGetQueryResult = NonNullable<Awaited<ReturnType<typeof getRatingAggregateRatingsTargetTypeTargetIdGet>>>;
2706
+ export type GetRatingAggregateRatingsTargetTypeTargetIdGetQueryError = AxiosError<HTTPValidationError>;
2707
+ /**
2708
+ * @summary Get Rating Aggregate
2709
+ */
2710
+ export declare function useGetRatingAggregateRatingsTargetTypeTargetIdGet<TData = Awaited<ReturnType<typeof getRatingAggregateRatingsTargetTypeTargetIdGet>>, TError = AxiosError<HTTPValidationError>>(targetType: SocialTargetEnum, targetId: number, options?: {
2711
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getRatingAggregateRatingsTargetTypeTargetIdGet>>, TError, TData>;
2712
+ axios?: AxiosRequestConfig;
2713
+ }): UseQueryResult<TData, TError> & {
2714
+ queryKey: QueryKey;
2715
+ };
2716
+ /**
2717
+ * Attach a photo to MY review on the target (D3 cook-along photos:
2718
+ optional ``step_index`` for the instruction step + optional caption).
2719
+ Uses the existing storage MIME/size validation (400/413).
2720
+ * @summary Add Rating Photo
2721
+ */
2722
+ export declare const addRatingPhotoRatingsTargetTypeTargetIdPhotosPost: (targetType: SocialTargetEnum, targetId: number, bodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPost: BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPost, options?: AxiosRequestConfig) => Promise<AxiosResponse<RatingPhotoResponse>>;
2723
+ export declare const getAddRatingPhotoRatingsTargetTypeTargetIdPhotosPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2724
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof addRatingPhotoRatingsTargetTypeTargetIdPhotosPost>>, TError, {
2725
+ targetType: SocialTargetEnum;
2726
+ targetId: number;
2727
+ data: BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPost;
2728
+ }, TContext>;
2729
+ axios?: AxiosRequestConfig;
2730
+ }) => UseMutationOptions<Awaited<ReturnType<typeof addRatingPhotoRatingsTargetTypeTargetIdPhotosPost>>, TError, {
2731
+ targetType: SocialTargetEnum;
2732
+ targetId: number;
2733
+ data: BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPost;
2734
+ }, TContext>;
2735
+ export type AddRatingPhotoRatingsTargetTypeTargetIdPhotosPostMutationResult = NonNullable<Awaited<ReturnType<typeof addRatingPhotoRatingsTargetTypeTargetIdPhotosPost>>>;
2736
+ export type AddRatingPhotoRatingsTargetTypeTargetIdPhotosPostMutationBody = BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPost;
2737
+ export type AddRatingPhotoRatingsTargetTypeTargetIdPhotosPostMutationError = AxiosError<HTTPValidationError>;
2738
+ /**
2739
+ * @summary Add Rating Photo
2740
+ */
2741
+ export declare const useAddRatingPhotoRatingsTargetTypeTargetIdPhotosPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2742
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof addRatingPhotoRatingsTargetTypeTargetIdPhotosPost>>, TError, {
2743
+ targetType: SocialTargetEnum;
2744
+ targetId: number;
2745
+ data: BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPost;
2746
+ }, TContext>;
2747
+ axios?: AxiosRequestConfig;
2748
+ }) => UseMutationResult<Awaited<ReturnType<typeof addRatingPhotoRatingsTargetTypeTargetIdPhotosPost>>, TError, {
2749
+ targetType: SocialTargetEnum;
2750
+ targetId: number;
2751
+ data: BodyAddRatingPhotoRatingsTargetTypeTargetIdPhotosPost;
2752
+ }, TContext>;
2753
+ /**
2754
+ * @summary Get Recipe Image
2755
+ */
2756
+ export declare const getRecipeImageRecipesRecipeImageFilenameGet: (filename: string, options?: AxiosRequestConfig) => Promise<AxiosResponse<unknown>>;
2757
+ export declare const getGetRecipeImageRecipesRecipeImageFilenameGetQueryKey: (filename?: string) => readonly [`/recipes/recipe-image/${string}`];
2758
+ export declare const getGetRecipeImageRecipesRecipeImageFilenameGetQueryOptions: <TData = Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>, TError = AxiosError<HTTPValidationError>>(filename: string, options?: {
2759
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>, TError, TData>;
2760
+ axios?: AxiosRequestConfig;
2761
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>, TError, TData> & {
2762
+ queryKey: QueryKey;
2763
+ };
2764
+ export type GetRecipeImageRecipesRecipeImageFilenameGetQueryResult = NonNullable<Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>>;
2765
+ export type GetRecipeImageRecipesRecipeImageFilenameGetQueryError = AxiosError<HTTPValidationError>;
2766
+ /**
2767
+ * @summary Get Recipe Image
2768
+ */
2769
+ export declare function useGetRecipeImageRecipesRecipeImageFilenameGet<TData = Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>, TError = AxiosError<HTTPValidationError>>(filename: string, options?: {
2770
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipeImageRecipesRecipeImageFilenameGet>>, TError, TData>;
2771
+ axios?: AxiosRequestConfig;
2772
+ }): UseQueryResult<TData, TError> & {
2773
+ queryKey: QueryKey;
2774
+ };
2775
+ /**
2776
+ * @summary Search Pantry Items
2777
+ */
2778
+ export declare const searchPantryItemsRecipesPantrySearchGet: (params: SearchPantryItemsRecipesPantrySearchGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<SearchPantryItemsRecipesPantrySearchGet200>>;
2779
+ export declare const getSearchPantryItemsRecipesPantrySearchGetQueryKey: (params?: SearchPantryItemsRecipesPantrySearchGetParams) => readonly ["/recipes/pantry/search", ...SearchPantryItemsRecipesPantrySearchGetParams[]];
2780
+ export declare const getSearchPantryItemsRecipesPantrySearchGetQueryOptions: <TData = Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>, TError = AxiosError<HTTPValidationError>>(params: SearchPantryItemsRecipesPantrySearchGetParams, options?: {
2781
+ query?: UseQueryOptions<Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>, TError, TData>;
2782
+ axios?: AxiosRequestConfig;
2783
+ }) => UseQueryOptions<Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>, TError, TData> & {
2784
+ queryKey: QueryKey;
2785
+ };
2786
+ export type SearchPantryItemsRecipesPantrySearchGetQueryResult = NonNullable<Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>>;
2787
+ export type SearchPantryItemsRecipesPantrySearchGetQueryError = AxiosError<HTTPValidationError>;
2788
+ /**
2789
+ * @summary Search Pantry Items
2790
+ */
2791
+ export declare function useSearchPantryItemsRecipesPantrySearchGet<TData = Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>, TError = AxiosError<HTTPValidationError>>(params: SearchPantryItemsRecipesPantrySearchGetParams, options?: {
2792
+ query?: UseQueryOptions<Awaited<ReturnType<typeof searchPantryItemsRecipesPantrySearchGet>>, TError, TData>;
2793
+ axios?: AxiosRequestConfig;
2794
+ }): UseQueryResult<TData, TError> & {
2795
+ queryKey: QueryKey;
2796
+ };
2797
+ /**
2798
+ * @summary Create Recipe
2799
+ */
2800
+ export declare const createRecipeRecipesPost: (bodyCreateRecipeRecipesPost: BodyCreateRecipeRecipesPost, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse>>;
2801
+ export declare const getCreateRecipeRecipesPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2802
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof createRecipeRecipesPost>>, TError, {
2803
+ data: BodyCreateRecipeRecipesPost;
2804
+ }, TContext>;
2805
+ axios?: AxiosRequestConfig;
2806
+ }) => UseMutationOptions<Awaited<ReturnType<typeof createRecipeRecipesPost>>, TError, {
2807
+ data: BodyCreateRecipeRecipesPost;
2808
+ }, TContext>;
2809
+ export type CreateRecipeRecipesPostMutationResult = NonNullable<Awaited<ReturnType<typeof createRecipeRecipesPost>>>;
2810
+ export type CreateRecipeRecipesPostMutationBody = BodyCreateRecipeRecipesPost;
2811
+ export type CreateRecipeRecipesPostMutationError = AxiosError<HTTPValidationError>;
2812
+ /**
2813
+ * @summary Create Recipe
2814
+ */
2815
+ export declare const useCreateRecipeRecipesPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2816
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof createRecipeRecipesPost>>, TError, {
2817
+ data: BodyCreateRecipeRecipesPost;
2818
+ }, TContext>;
2819
+ axios?: AxiosRequestConfig;
2820
+ }) => UseMutationResult<Awaited<ReturnType<typeof createRecipeRecipesPost>>, TError, {
2821
+ data: BodyCreateRecipeRecipesPost;
2822
+ }, TContext>;
2823
+ /**
2824
+ * @summary Get Recipes
2825
+ */
2826
+ export declare const getRecipesRecipesGet: (params?: GetRecipesRecipesGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse[]>>;
2827
+ export declare const getGetRecipesRecipesGetQueryKey: (params?: GetRecipesRecipesGetParams) => readonly ["/recipes/", ...GetRecipesRecipesGetParams[]];
2828
+ export declare const getGetRecipesRecipesGetQueryOptions: <TData = Awaited<ReturnType<typeof getRecipesRecipesGet>>, TError = AxiosError<HTTPValidationError>>(params?: GetRecipesRecipesGetParams, options?: {
2829
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipesRecipesGet>>, TError, TData>;
2830
+ axios?: AxiosRequestConfig;
2831
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getRecipesRecipesGet>>, TError, TData> & {
2832
+ queryKey: QueryKey;
2833
+ };
2834
+ export type GetRecipesRecipesGetQueryResult = NonNullable<Awaited<ReturnType<typeof getRecipesRecipesGet>>>;
2835
+ export type GetRecipesRecipesGetQueryError = AxiosError<HTTPValidationError>;
2836
+ /**
2837
+ * @summary Get Recipes
2838
+ */
2839
+ export declare function useGetRecipesRecipesGet<TData = Awaited<ReturnType<typeof getRecipesRecipesGet>>, TError = AxiosError<HTTPValidationError>>(params?: GetRecipesRecipesGetParams, options?: {
2840
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipesRecipesGet>>, TError, TData>;
2841
+ axios?: AxiosRequestConfig;
2842
+ }): UseQueryResult<TData, TError> & {
2843
+ queryKey: QueryKey;
2844
+ };
2845
+ /**
2846
+ * Deterministic 'what can I cook' — coverage ranking over the catalog
2847
+ and the household's own recipes against its pantry (blueprint §5.3).
2848
+ Pure SQL, no LLM; this is also the no-LLM degraded path behind
2849
+ /ai/suggest-recipes (§9.1).
2850
+ * @summary Get Recipe Suggestions
2851
+ */
2852
+ export declare const getRecipeSuggestionsRecipesSuggestionsGet: (params?: GetRecipeSuggestionsRecipesSuggestionsGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeSuggestion[]>>;
2853
+ export declare const getGetRecipeSuggestionsRecipesSuggestionsGetQueryKey: (params?: GetRecipeSuggestionsRecipesSuggestionsGetParams) => readonly ["/recipes/suggestions", ...GetRecipeSuggestionsRecipesSuggestionsGetParams[]];
2854
+ export declare const getGetRecipeSuggestionsRecipesSuggestionsGetQueryOptions: <TData = Awaited<ReturnType<typeof getRecipeSuggestionsRecipesSuggestionsGet>>, TError = AxiosError<HTTPValidationError>>(params?: GetRecipeSuggestionsRecipesSuggestionsGetParams, options?: {
2855
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipeSuggestionsRecipesSuggestionsGet>>, TError, TData>;
2856
+ axios?: AxiosRequestConfig;
2857
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getRecipeSuggestionsRecipesSuggestionsGet>>, TError, TData> & {
2858
+ queryKey: QueryKey;
2859
+ };
2860
+ export type GetRecipeSuggestionsRecipesSuggestionsGetQueryResult = NonNullable<Awaited<ReturnType<typeof getRecipeSuggestionsRecipesSuggestionsGet>>>;
2861
+ export type GetRecipeSuggestionsRecipesSuggestionsGetQueryError = AxiosError<HTTPValidationError>;
2862
+ /**
2863
+ * @summary Get Recipe Suggestions
2864
+ */
2865
+ export declare function useGetRecipeSuggestionsRecipesSuggestionsGet<TData = Awaited<ReturnType<typeof getRecipeSuggestionsRecipesSuggestionsGet>>, TError = AxiosError<HTTPValidationError>>(params?: GetRecipeSuggestionsRecipesSuggestionsGetParams, options?: {
2866
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipeSuggestionsRecipesSuggestionsGet>>, TError, TData>;
2867
+ axios?: AxiosRequestConfig;
2868
+ }): UseQueryResult<TData, TError> & {
2869
+ queryKey: QueryKey;
2870
+ };
2871
+ /**
2872
+ * @summary Get Recipe
2873
+ */
2874
+ export declare const getRecipeRecipesRecipeIdGet: (recipeId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse>>;
2875
+ export declare const getGetRecipeRecipesRecipeIdGetQueryKey: (recipeId?: number) => readonly ["/recipes/undefined" | `/recipes/${number}`];
2876
+ export declare const getGetRecipeRecipesRecipeIdGetQueryOptions: <TData = Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>, TError = AxiosError<HTTPValidationError>>(recipeId: number, options?: {
2877
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>, TError, TData>;
2878
+ axios?: AxiosRequestConfig;
2879
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>, TError, TData> & {
2880
+ queryKey: QueryKey;
2881
+ };
2882
+ export type GetRecipeRecipesRecipeIdGetQueryResult = NonNullable<Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>>;
2883
+ export type GetRecipeRecipesRecipeIdGetQueryError = AxiosError<HTTPValidationError>;
2884
+ /**
2885
+ * @summary Get Recipe
2886
+ */
2887
+ export declare function useGetRecipeRecipesRecipeIdGet<TData = Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>, TError = AxiosError<HTTPValidationError>>(recipeId: number, options?: {
2888
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getRecipeRecipesRecipeIdGet>>, TError, TData>;
2889
+ axios?: AxiosRequestConfig;
2890
+ }): UseQueryResult<TData, TError> & {
2891
+ queryKey: QueryKey;
2892
+ };
2893
+ /**
2894
+ * @summary Update Recipe
2895
+ */
2896
+ export declare const updateRecipeRecipesRecipeIdPut: (recipeId: number, bodyUpdateRecipeRecipesRecipeIdPut: BodyUpdateRecipeRecipesRecipeIdPut, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse>>;
2897
+ export declare const getUpdateRecipeRecipesRecipeIdPutMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2898
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateRecipeRecipesRecipeIdPut>>, TError, {
2899
+ recipeId: number;
2900
+ data: BodyUpdateRecipeRecipesRecipeIdPut;
2901
+ }, TContext>;
2902
+ axios?: AxiosRequestConfig;
2903
+ }) => UseMutationOptions<Awaited<ReturnType<typeof updateRecipeRecipesRecipeIdPut>>, TError, {
2904
+ recipeId: number;
2905
+ data: BodyUpdateRecipeRecipesRecipeIdPut;
2906
+ }, TContext>;
2907
+ export type UpdateRecipeRecipesRecipeIdPutMutationResult = NonNullable<Awaited<ReturnType<typeof updateRecipeRecipesRecipeIdPut>>>;
2908
+ export type UpdateRecipeRecipesRecipeIdPutMutationBody = BodyUpdateRecipeRecipesRecipeIdPut;
2909
+ export type UpdateRecipeRecipesRecipeIdPutMutationError = AxiosError<HTTPValidationError>;
2910
+ /**
2911
+ * @summary Update Recipe
2912
+ */
2913
+ export declare const useUpdateRecipeRecipesRecipeIdPut: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2914
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateRecipeRecipesRecipeIdPut>>, TError, {
2915
+ recipeId: number;
2916
+ data: BodyUpdateRecipeRecipesRecipeIdPut;
2917
+ }, TContext>;
2918
+ axios?: AxiosRequestConfig;
2919
+ }) => UseMutationResult<Awaited<ReturnType<typeof updateRecipeRecipesRecipeIdPut>>, TError, {
2920
+ recipeId: number;
2921
+ data: BodyUpdateRecipeRecipesRecipeIdPut;
2922
+ }, TContext>;
2923
+ /**
2924
+ * @summary Delete Recipe
2925
+ */
2926
+ export declare const deleteRecipeRecipesRecipeIdDelete: (recipeId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<DeleteRecipeRecipesRecipeIdDelete200>>;
2927
+ export declare const getDeleteRecipeRecipesRecipeIdDeleteMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2928
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteRecipeRecipesRecipeIdDelete>>, TError, {
2929
+ recipeId: number;
2930
+ }, TContext>;
2931
+ axios?: AxiosRequestConfig;
2932
+ }) => UseMutationOptions<Awaited<ReturnType<typeof deleteRecipeRecipesRecipeIdDelete>>, TError, {
2933
+ recipeId: number;
2934
+ }, TContext>;
2935
+ export type DeleteRecipeRecipesRecipeIdDeleteMutationResult = NonNullable<Awaited<ReturnType<typeof deleteRecipeRecipesRecipeIdDelete>>>;
2936
+ export type DeleteRecipeRecipesRecipeIdDeleteMutationError = AxiosError<HTTPValidationError>;
2937
+ /**
2938
+ * @summary Delete Recipe
2939
+ */
2940
+ export declare const useDeleteRecipeRecipesRecipeIdDelete: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2941
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteRecipeRecipesRecipeIdDelete>>, TError, {
2942
+ recipeId: number;
2943
+ }, TContext>;
2944
+ axios?: AxiosRequestConfig;
2945
+ }) => UseMutationResult<Awaited<ReturnType<typeof deleteRecipeRecipesRecipeIdDelete>>, TError, {
2946
+ recipeId: number;
2947
+ }, TContext>;
2948
+ /**
2949
+ * One-tap gap fill: bulk-add this recipe's missing ingredients to a
2950
+ shopping list (defaults to the household's active list — §5.3).
2951
+ * @summary Add Missing To List
2952
+ */
2953
+ export declare const addMissingToListRecipesRecipeIdAddMissingToListPost: (recipeId: number, addMissingRequest: AddMissingRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<AddMissingResponse>>;
2954
+ export declare const getAddMissingToListRecipesRecipeIdAddMissingToListPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2955
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof addMissingToListRecipesRecipeIdAddMissingToListPost>>, TError, {
2956
+ recipeId: number;
2957
+ data: AddMissingRequest;
2958
+ }, TContext>;
2959
+ axios?: AxiosRequestConfig;
2960
+ }) => UseMutationOptions<Awaited<ReturnType<typeof addMissingToListRecipesRecipeIdAddMissingToListPost>>, TError, {
2961
+ recipeId: number;
2962
+ data: AddMissingRequest;
2963
+ }, TContext>;
2964
+ export type AddMissingToListRecipesRecipeIdAddMissingToListPostMutationResult = NonNullable<Awaited<ReturnType<typeof addMissingToListRecipesRecipeIdAddMissingToListPost>>>;
2965
+ export type AddMissingToListRecipesRecipeIdAddMissingToListPostMutationBody = AddMissingRequest;
2966
+ export type AddMissingToListRecipesRecipeIdAddMissingToListPostMutationError = AxiosError<HTTPValidationError>;
2967
+ /**
2968
+ * @summary Add Missing To List
2969
+ */
2970
+ export declare const useAddMissingToListRecipesRecipeIdAddMissingToListPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
2971
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof addMissingToListRecipesRecipeIdAddMissingToListPost>>, TError, {
2972
+ recipeId: number;
2973
+ data: AddMissingRequest;
2974
+ }, TContext>;
2975
+ axios?: AxiosRequestConfig;
2976
+ }) => UseMutationResult<Awaited<ReturnType<typeof addMissingToListRecipesRecipeIdAddMissingToListPost>>, TError, {
2977
+ recipeId: number;
2978
+ data: AddMissingRequest;
2979
+ }, TContext>;
2980
+ /**
2981
+ * List/search canonical ingredients (autocomplete source).
2982
+ * @summary List Ingredients
2983
+ */
2984
+ export declare const listIngredientsCatalogIngredientsGet: (params?: ListIngredientsCatalogIngredientsGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<CatalogIngredientSummary[]>>;
2985
+ export declare const getListIngredientsCatalogIngredientsGetQueryKey: (params?: ListIngredientsCatalogIngredientsGetParams) => readonly ["/catalog/ingredients/", ...ListIngredientsCatalogIngredientsGetParams[]];
2986
+ export declare const getListIngredientsCatalogIngredientsGetQueryOptions: <TData = Awaited<ReturnType<typeof listIngredientsCatalogIngredientsGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListIngredientsCatalogIngredientsGetParams, options?: {
2987
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listIngredientsCatalogIngredientsGet>>, TError, TData>;
2988
+ axios?: AxiosRequestConfig;
2989
+ }) => UseQueryOptions<Awaited<ReturnType<typeof listIngredientsCatalogIngredientsGet>>, TError, TData> & {
2990
+ queryKey: QueryKey;
2991
+ };
2992
+ export type ListIngredientsCatalogIngredientsGetQueryResult = NonNullable<Awaited<ReturnType<typeof listIngredientsCatalogIngredientsGet>>>;
2993
+ export type ListIngredientsCatalogIngredientsGetQueryError = AxiosError<HTTPValidationError>;
2994
+ /**
2995
+ * @summary List Ingredients
2996
+ */
2997
+ export declare function useListIngredientsCatalogIngredientsGet<TData = Awaited<ReturnType<typeof listIngredientsCatalogIngredientsGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListIngredientsCatalogIngredientsGetParams, options?: {
2998
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listIngredientsCatalogIngredientsGet>>, TError, TData>;
2999
+ axios?: AxiosRequestConfig;
3000
+ }): UseQueryResult<TData, TError> & {
3001
+ queryKey: QueryKey;
3002
+ };
3003
+ /**
3004
+ * One ingredient with its aliases and substitution edges.
3005
+ * @summary Get Ingredient
3006
+ */
3007
+ export declare const getIngredientCatalogIngredientsIngredientIdGet: (ingredientId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<CatalogIngredientDetail>>;
3008
+ export declare const getGetIngredientCatalogIngredientsIngredientIdGetQueryKey: (ingredientId?: number) => readonly ["/catalog/ingredients/undefined" | `/catalog/ingredients/${number}`];
3009
+ export declare const getGetIngredientCatalogIngredientsIngredientIdGetQueryOptions: <TData = Awaited<ReturnType<typeof getIngredientCatalogIngredientsIngredientIdGet>>, TError = AxiosError<HTTPValidationError>>(ingredientId: number, options?: {
3010
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getIngredientCatalogIngredientsIngredientIdGet>>, TError, TData>;
3011
+ axios?: AxiosRequestConfig;
3012
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getIngredientCatalogIngredientsIngredientIdGet>>, TError, TData> & {
3013
+ queryKey: QueryKey;
3014
+ };
3015
+ export type GetIngredientCatalogIngredientsIngredientIdGetQueryResult = NonNullable<Awaited<ReturnType<typeof getIngredientCatalogIngredientsIngredientIdGet>>>;
3016
+ export type GetIngredientCatalogIngredientsIngredientIdGetQueryError = AxiosError<HTTPValidationError>;
3017
+ /**
3018
+ * @summary Get Ingredient
3019
+ */
3020
+ export declare function useGetIngredientCatalogIngredientsIngredientIdGet<TData = Awaited<ReturnType<typeof getIngredientCatalogIngredientsIngredientIdGet>>, TError = AxiosError<HTTPValidationError>>(ingredientId: number, options?: {
3021
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getIngredientCatalogIngredientsIngredientIdGet>>, TError, TData>;
3022
+ axios?: AxiosRequestConfig;
3023
+ }): UseQueryResult<TData, TError> & {
3024
+ queryKey: QueryKey;
3025
+ };
3026
+ /**
3027
+ * List catalog tags, optionally filtered by kind (cuisine|diet|course|meal_type).
3028
+ * @summary List Tags
3029
+ */
3030
+ export declare const listTagsCatalogTagsGet: (params?: ListTagsCatalogTagsGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<CatalogTagOut[]>>;
3031
+ export declare const getListTagsCatalogTagsGetQueryKey: (params?: ListTagsCatalogTagsGetParams) => readonly ["/catalog/tags/", ...ListTagsCatalogTagsGetParams[]];
3032
+ export declare const getListTagsCatalogTagsGetQueryOptions: <TData = Awaited<ReturnType<typeof listTagsCatalogTagsGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListTagsCatalogTagsGetParams, options?: {
3033
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listTagsCatalogTagsGet>>, TError, TData>;
3034
+ axios?: AxiosRequestConfig;
3035
+ }) => UseQueryOptions<Awaited<ReturnType<typeof listTagsCatalogTagsGet>>, TError, TData> & {
3036
+ queryKey: QueryKey;
3037
+ };
3038
+ export type ListTagsCatalogTagsGetQueryResult = NonNullable<Awaited<ReturnType<typeof listTagsCatalogTagsGet>>>;
3039
+ export type ListTagsCatalogTagsGetQueryError = AxiosError<HTTPValidationError>;
3040
+ /**
3041
+ * @summary List Tags
3042
+ */
3043
+ export declare function useListTagsCatalogTagsGet<TData = Awaited<ReturnType<typeof listTagsCatalogTagsGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListTagsCatalogTagsGetParams, options?: {
3044
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listTagsCatalogTagsGet>>, TError, TData>;
3045
+ axios?: AxiosRequestConfig;
3046
+ }): UseQueryResult<TData, TError> & {
3047
+ queryKey: QueryKey;
3048
+ };
3049
+ /**
3050
+ * Browse the recipe catalog with coverage-aware filters.
3051
+ * @summary List Catalog Recipes
3052
+ */
3053
+ export declare const listCatalogRecipesCatalogRecipesGet: (params?: ListCatalogRecipesCatalogRecipesGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<CatalogRecipeSummary[]>>;
3054
+ export declare const getListCatalogRecipesCatalogRecipesGetQueryKey: (params?: ListCatalogRecipesCatalogRecipesGetParams) => readonly ["/catalog/recipes/", ...ListCatalogRecipesCatalogRecipesGetParams[]];
3055
+ export declare const getListCatalogRecipesCatalogRecipesGetQueryOptions: <TData = Awaited<ReturnType<typeof listCatalogRecipesCatalogRecipesGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListCatalogRecipesCatalogRecipesGetParams, options?: {
3056
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listCatalogRecipesCatalogRecipesGet>>, TError, TData>;
3057
+ axios?: AxiosRequestConfig;
3058
+ }) => UseQueryOptions<Awaited<ReturnType<typeof listCatalogRecipesCatalogRecipesGet>>, TError, TData> & {
3059
+ queryKey: QueryKey;
3060
+ };
3061
+ export type ListCatalogRecipesCatalogRecipesGetQueryResult = NonNullable<Awaited<ReturnType<typeof listCatalogRecipesCatalogRecipesGet>>>;
3062
+ export type ListCatalogRecipesCatalogRecipesGetQueryError = AxiosError<HTTPValidationError>;
3063
+ /**
3064
+ * @summary List Catalog Recipes
3065
+ */
3066
+ export declare function useListCatalogRecipesCatalogRecipesGet<TData = Awaited<ReturnType<typeof listCatalogRecipesCatalogRecipesGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListCatalogRecipesCatalogRecipesGetParams, options?: {
3067
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listCatalogRecipesCatalogRecipesGet>>, TError, TData>;
3068
+ axios?: AxiosRequestConfig;
3069
+ }): UseQueryResult<TData, TError> & {
3070
+ queryKey: QueryKey;
3071
+ };
3072
+ /**
3073
+ * Full catalog recipe: linked ingredients, steps, tags, source.
3074
+ * @summary Get Catalog Recipe
3075
+ */
3076
+ export declare const getCatalogRecipeCatalogRecipesRecipeIdGet: (recipeId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<CatalogRecipeDetail>>;
3077
+ export declare const getGetCatalogRecipeCatalogRecipesRecipeIdGetQueryKey: (recipeId?: number) => readonly ["/catalog/recipes/undefined" | `/catalog/recipes/${number}`];
3078
+ export declare const getGetCatalogRecipeCatalogRecipesRecipeIdGetQueryOptions: <TData = Awaited<ReturnType<typeof getCatalogRecipeCatalogRecipesRecipeIdGet>>, TError = AxiosError<HTTPValidationError>>(recipeId: number, options?: {
3079
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getCatalogRecipeCatalogRecipesRecipeIdGet>>, TError, TData>;
3080
+ axios?: AxiosRequestConfig;
3081
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getCatalogRecipeCatalogRecipesRecipeIdGet>>, TError, TData> & {
3082
+ queryKey: QueryKey;
3083
+ };
3084
+ export type GetCatalogRecipeCatalogRecipesRecipeIdGetQueryResult = NonNullable<Awaited<ReturnType<typeof getCatalogRecipeCatalogRecipesRecipeIdGet>>>;
3085
+ export type GetCatalogRecipeCatalogRecipesRecipeIdGetQueryError = AxiosError<HTTPValidationError>;
3086
+ /**
3087
+ * @summary Get Catalog Recipe
3088
+ */
3089
+ export declare function useGetCatalogRecipeCatalogRecipesRecipeIdGet<TData = Awaited<ReturnType<typeof getCatalogRecipeCatalogRecipesRecipeIdGet>>, TError = AxiosError<HTTPValidationError>>(recipeId: number, options?: {
3090
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getCatalogRecipeCatalogRecipesRecipeIdGet>>, TError, TData>;
3091
+ axios?: AxiosRequestConfig;
3092
+ }): UseQueryResult<TData, TError> & {
3093
+ queryKey: QueryKey;
3094
+ };
3095
+ /**
3096
+ * One-tap gap fill for a catalog recipe (§5.3): bulk-add its missing
3097
+ ingredients to a shopping list (defaults to the household's active list).
3098
+ * @summary Add Missing Catalog Recipe To List
3099
+ */
3100
+ export declare const addMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPost: (recipeId: number, addMissingRequest: AddMissingRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<AddMissingResponse>>;
3101
+ export declare const getAddMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3102
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof addMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPost>>, TError, {
3103
+ recipeId: number;
3104
+ data: AddMissingRequest;
3105
+ }, TContext>;
3106
+ axios?: AxiosRequestConfig;
3107
+ }) => UseMutationOptions<Awaited<ReturnType<typeof addMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPost>>, TError, {
3108
+ recipeId: number;
3109
+ data: AddMissingRequest;
3110
+ }, TContext>;
3111
+ export type AddMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPostMutationResult = NonNullable<Awaited<ReturnType<typeof addMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPost>>>;
3112
+ export type AddMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPostMutationBody = AddMissingRequest;
3113
+ export type AddMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPostMutationError = AxiosError<HTTPValidationError>;
3114
+ /**
3115
+ * @summary Add Missing Catalog Recipe To List
3116
+ */
3117
+ export declare const useAddMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3118
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof addMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPost>>, TError, {
3119
+ recipeId: number;
3120
+ data: AddMissingRequest;
3121
+ }, TContext>;
3122
+ axios?: AxiosRequestConfig;
3123
+ }) => UseMutationResult<Awaited<ReturnType<typeof addMissingCatalogRecipeToListCatalogRecipesRecipeIdAddMissingToListPost>>, TError, {
3124
+ recipeId: number;
3125
+ data: AddMissingRequest;
3126
+ }, TContext>;
3127
+ /**
3128
+ * Copy a catalog recipe into the caller's library (provenance set).
3129
+
3130
+ This is also the persist-on-save path for grounded AI suggestions
3131
+ (blueprint §9.1 Stage 3).
3132
+ * @summary Save Catalog Recipe
3133
+ */
3134
+ export declare const saveCatalogRecipeCatalogRecipesRecipeIdSavePost: (recipeId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecipeResponse>>;
3135
+ export declare const getSaveCatalogRecipeCatalogRecipesRecipeIdSavePostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3136
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof saveCatalogRecipeCatalogRecipesRecipeIdSavePost>>, TError, {
3137
+ recipeId: number;
3138
+ }, TContext>;
3139
+ axios?: AxiosRequestConfig;
3140
+ }) => UseMutationOptions<Awaited<ReturnType<typeof saveCatalogRecipeCatalogRecipesRecipeIdSavePost>>, TError, {
3141
+ recipeId: number;
3142
+ }, TContext>;
3143
+ export type SaveCatalogRecipeCatalogRecipesRecipeIdSavePostMutationResult = NonNullable<Awaited<ReturnType<typeof saveCatalogRecipeCatalogRecipesRecipeIdSavePost>>>;
3144
+ export type SaveCatalogRecipeCatalogRecipesRecipeIdSavePostMutationError = AxiosError<HTTPValidationError>;
3145
+ /**
3146
+ * @summary Save Catalog Recipe
3147
+ */
3148
+ export declare const useSaveCatalogRecipeCatalogRecipesRecipeIdSavePost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3149
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof saveCatalogRecipeCatalogRecipesRecipeIdSavePost>>, TError, {
3150
+ recipeId: number;
3151
+ }, TContext>;
3152
+ axios?: AxiosRequestConfig;
3153
+ }) => UseMutationResult<Awaited<ReturnType<typeof saveCatalogRecipeCatalogRecipesRecipeIdSavePost>>, TError, {
3154
+ recipeId: number;
3155
+ }, TContext>;
3156
+ /**
3157
+ * Ranked name completions: household history first, then catalog
3158
+ prefix/substring/fuzzy, catalog tiers ordered by global linked usage.
3159
+ * @summary Autocomplete Ingredients
3160
+ */
3161
+ export declare const autocompleteIngredientsIngredientsAutocompleteGet: (params: AutocompleteIngredientsIngredientsAutocompleteGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<IngredientAutocompleteItem[]>>;
3162
+ export declare const getAutocompleteIngredientsIngredientsAutocompleteGetQueryKey: (params?: AutocompleteIngredientsIngredientsAutocompleteGetParams) => readonly ["/ingredients/autocomplete", ...AutocompleteIngredientsIngredientsAutocompleteGetParams[]];
3163
+ export declare const getAutocompleteIngredientsIngredientsAutocompleteGetQueryOptions: <TData = Awaited<ReturnType<typeof autocompleteIngredientsIngredientsAutocompleteGet>>, TError = AxiosError<HTTPValidationError>>(params: AutocompleteIngredientsIngredientsAutocompleteGetParams, options?: {
3164
+ query?: UseQueryOptions<Awaited<ReturnType<typeof autocompleteIngredientsIngredientsAutocompleteGet>>, TError, TData>;
3165
+ axios?: AxiosRequestConfig;
3166
+ }) => UseQueryOptions<Awaited<ReturnType<typeof autocompleteIngredientsIngredientsAutocompleteGet>>, TError, TData> & {
3167
+ queryKey: QueryKey;
3168
+ };
3169
+ export type AutocompleteIngredientsIngredientsAutocompleteGetQueryResult = NonNullable<Awaited<ReturnType<typeof autocompleteIngredientsIngredientsAutocompleteGet>>>;
3170
+ export type AutocompleteIngredientsIngredientsAutocompleteGetQueryError = AxiosError<HTTPValidationError>;
3171
+ /**
3172
+ * @summary Autocomplete Ingredients
3173
+ */
3174
+ export declare function useAutocompleteIngredientsIngredientsAutocompleteGet<TData = Awaited<ReturnType<typeof autocompleteIngredientsIngredientsAutocompleteGet>>, TError = AxiosError<HTTPValidationError>>(params: AutocompleteIngredientsIngredientsAutocompleteGetParams, options?: {
3175
+ query?: UseQueryOptions<Awaited<ReturnType<typeof autocompleteIngredientsIngredientsAutocompleteGet>>, TError, TData>;
3176
+ axios?: AxiosRequestConfig;
3177
+ }): UseQueryResult<TData, TError> & {
3178
+ queryKey: QueryKey;
3179
+ };
3180
+ /**
3181
+ * List the household's plans plus the system presets.
3182
+ * @summary List Plans
3183
+ */
3184
+ export declare const listPlansPlansGet: (params?: ListPlansPlansGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<MealPlanResponse[]>>;
3185
+ export declare const getListPlansPlansGetQueryKey: (params?: ListPlansPlansGetParams) => readonly ["/plans/", ...ListPlansPlansGetParams[]];
3186
+ export declare const getListPlansPlansGetQueryOptions: <TData = Awaited<ReturnType<typeof listPlansPlansGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListPlansPlansGetParams, options?: {
3187
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listPlansPlansGet>>, TError, TData>;
3188
+ axios?: AxiosRequestConfig;
3189
+ }) => UseQueryOptions<Awaited<ReturnType<typeof listPlansPlansGet>>, TError, TData> & {
3190
+ queryKey: QueryKey;
3191
+ };
3192
+ export type ListPlansPlansGetQueryResult = NonNullable<Awaited<ReturnType<typeof listPlansPlansGet>>>;
3193
+ export type ListPlansPlansGetQueryError = AxiosError<HTTPValidationError>;
3194
+ /**
3195
+ * @summary List Plans
3196
+ */
3197
+ export declare function useListPlansPlansGet<TData = Awaited<ReturnType<typeof listPlansPlansGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListPlansPlansGetParams, options?: {
3198
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listPlansPlansGet>>, TError, TData>;
3199
+ axios?: AxiosRequestConfig;
3200
+ }): UseQueryResult<TData, TError> & {
3201
+ queryKey: QueryKey;
3202
+ };
3203
+ /**
3204
+ * Create an empty plan, or copy one from a template/preset (template_id).
3205
+ * @summary Create Plan
3206
+ */
3207
+ export declare const createPlanPlansPost: (mealPlanCreate: MealPlanCreate, options?: AxiosRequestConfig) => Promise<AxiosResponse<MealPlanDetailResponse>>;
3208
+ export declare const getCreatePlanPlansPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3209
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof createPlanPlansPost>>, TError, {
3210
+ data: MealPlanCreate;
3211
+ }, TContext>;
3212
+ axios?: AxiosRequestConfig;
3213
+ }) => UseMutationOptions<Awaited<ReturnType<typeof createPlanPlansPost>>, TError, {
3214
+ data: MealPlanCreate;
3215
+ }, TContext>;
3216
+ export type CreatePlanPlansPostMutationResult = NonNullable<Awaited<ReturnType<typeof createPlanPlansPost>>>;
3217
+ export type CreatePlanPlansPostMutationBody = MealPlanCreate;
3218
+ export type CreatePlanPlansPostMutationError = AxiosError<HTTPValidationError>;
3219
+ /**
3220
+ * @summary Create Plan
3221
+ */
3222
+ export declare const useCreatePlanPlansPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3223
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof createPlanPlansPost>>, TError, {
3224
+ data: MealPlanCreate;
3225
+ }, TContext>;
3226
+ axios?: AxiosRequestConfig;
3227
+ }) => UseMutationResult<Awaited<ReturnType<typeof createPlanPlansPost>>, TError, {
3228
+ data: MealPlanCreate;
3229
+ }, TContext>;
3230
+ /**
3231
+ * Agentic grounded plan generation (§9.2): deterministic retrieval once
3232
+ per plan against the household pantry, per-slot filters, LLM assigns
3233
+ candidates to slots; persisted as a status=draft plan in one transaction.
3234
+ * @summary Generate Plan
3235
+ */
3236
+ export declare const generatePlanPlansGeneratePost: (planGenerateRequest: PlanGenerateRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<MealPlanGenerateResponse>>;
3237
+ export declare const getGeneratePlanPlansGeneratePostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3238
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof generatePlanPlansGeneratePost>>, TError, {
3239
+ data: PlanGenerateRequest;
3240
+ }, TContext>;
3241
+ axios?: AxiosRequestConfig;
3242
+ }) => UseMutationOptions<Awaited<ReturnType<typeof generatePlanPlansGeneratePost>>, TError, {
3243
+ data: PlanGenerateRequest;
3244
+ }, TContext>;
3245
+ export type GeneratePlanPlansGeneratePostMutationResult = NonNullable<Awaited<ReturnType<typeof generatePlanPlansGeneratePost>>>;
3246
+ export type GeneratePlanPlansGeneratePostMutationBody = PlanGenerateRequest;
3247
+ export type GeneratePlanPlansGeneratePostMutationError = AxiosError<HTTPValidationError>;
3248
+ /**
3249
+ * @summary Generate Plan
3250
+ */
3251
+ export declare const useGeneratePlanPlansGeneratePost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3252
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof generatePlanPlansGeneratePost>>, TError, {
3253
+ data: PlanGenerateRequest;
3254
+ }, TContext>;
3255
+ axios?: AxiosRequestConfig;
3256
+ }) => UseMutationResult<Awaited<ReturnType<typeof generatePlanPlansGeneratePost>>, TError, {
3257
+ data: PlanGenerateRequest;
3258
+ }, TContext>;
3259
+ /**
3260
+ * Copy a system preset into the household (status=draft); optionally
3261
+ generate its starter grocery list (§10) in the same transaction.
3262
+ * @summary Adopt Preset
3263
+ */
3264
+ export declare const adoptPresetPlansPresetsPresetIdAdoptPost: (presetId: number, params?: AdoptPresetPlansPresetsPresetIdAdoptPostParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<PresetAdoptResponse>>;
3265
+ export declare const getAdoptPresetPlansPresetsPresetIdAdoptPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3266
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof adoptPresetPlansPresetsPresetIdAdoptPost>>, TError, {
3267
+ presetId: number;
3268
+ params?: AdoptPresetPlansPresetsPresetIdAdoptPostParams;
3269
+ }, TContext>;
3270
+ axios?: AxiosRequestConfig;
3271
+ }) => UseMutationOptions<Awaited<ReturnType<typeof adoptPresetPlansPresetsPresetIdAdoptPost>>, TError, {
3272
+ presetId: number;
3273
+ params?: AdoptPresetPlansPresetsPresetIdAdoptPostParams;
3274
+ }, TContext>;
3275
+ export type AdoptPresetPlansPresetsPresetIdAdoptPostMutationResult = NonNullable<Awaited<ReturnType<typeof adoptPresetPlansPresetsPresetIdAdoptPost>>>;
3276
+ export type AdoptPresetPlansPresetsPresetIdAdoptPostMutationError = AxiosError<HTTPValidationError>;
3277
+ /**
3278
+ * @summary Adopt Preset
3279
+ */
3280
+ export declare const useAdoptPresetPlansPresetsPresetIdAdoptPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3281
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof adoptPresetPlansPresetsPresetIdAdoptPost>>, TError, {
3282
+ presetId: number;
3283
+ params?: AdoptPresetPlansPresetsPresetIdAdoptPostParams;
3284
+ }, TContext>;
3285
+ axios?: AxiosRequestConfig;
3286
+ }) => UseMutationResult<Awaited<ReturnType<typeof adoptPresetPlansPresetsPresetIdAdoptPost>>, TError, {
3287
+ presetId: number;
3288
+ params?: AdoptPresetPlansPresetsPresetIdAdoptPostParams;
3289
+ }, TContext>;
3290
+ /**
3291
+ * One plan with its slots (eager-loaded).
3292
+ * @summary Get Plan
3293
+ */
3294
+ export declare const getPlanPlansPlanIdGet: (planId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<MealPlanDetailResponse>>;
3295
+ export declare const getGetPlanPlansPlanIdGetQueryKey: (planId?: number) => readonly ["/plans/undefined" | `/plans/${number}`];
3296
+ export declare const getGetPlanPlansPlanIdGetQueryOptions: <TData = Awaited<ReturnType<typeof getPlanPlansPlanIdGet>>, TError = AxiosError<HTTPValidationError>>(planId: number, options?: {
3297
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getPlanPlansPlanIdGet>>, TError, TData>;
3298
+ axios?: AxiosRequestConfig;
3299
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getPlanPlansPlanIdGet>>, TError, TData> & {
3300
+ queryKey: QueryKey;
3301
+ };
3302
+ export type GetPlanPlansPlanIdGetQueryResult = NonNullable<Awaited<ReturnType<typeof getPlanPlansPlanIdGet>>>;
3303
+ export type GetPlanPlansPlanIdGetQueryError = AxiosError<HTTPValidationError>;
3304
+ /**
3305
+ * @summary Get Plan
3306
+ */
3307
+ export declare function useGetPlanPlansPlanIdGet<TData = Awaited<ReturnType<typeof getPlanPlansPlanIdGet>>, TError = AxiosError<HTTPValidationError>>(planId: number, options?: {
3308
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getPlanPlansPlanIdGet>>, TError, TData>;
3309
+ axios?: AxiosRequestConfig;
3310
+ }): UseQueryResult<TData, TError> & {
3311
+ queryKey: QueryKey;
3312
+ };
3313
+ /**
3314
+ * Rename / change status / move week_start / change visibility.
3315
+ * @summary Update Plan
3316
+ */
3317
+ export declare const updatePlanPlansPlanIdPut: (planId: number, mealPlanUpdate: MealPlanUpdate, options?: AxiosRequestConfig) => Promise<AxiosResponse<MealPlanDetailResponse>>;
3318
+ export declare const getUpdatePlanPlansPlanIdPutMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3319
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updatePlanPlansPlanIdPut>>, TError, {
3320
+ planId: number;
3321
+ data: MealPlanUpdate;
3322
+ }, TContext>;
3323
+ axios?: AxiosRequestConfig;
3324
+ }) => UseMutationOptions<Awaited<ReturnType<typeof updatePlanPlansPlanIdPut>>, TError, {
3325
+ planId: number;
3326
+ data: MealPlanUpdate;
3327
+ }, TContext>;
3328
+ export type UpdatePlanPlansPlanIdPutMutationResult = NonNullable<Awaited<ReturnType<typeof updatePlanPlansPlanIdPut>>>;
3329
+ export type UpdatePlanPlansPlanIdPutMutationBody = MealPlanUpdate;
3330
+ export type UpdatePlanPlansPlanIdPutMutationError = AxiosError<HTTPValidationError>;
3331
+ /**
3332
+ * @summary Update Plan
3333
+ */
3334
+ export declare const useUpdatePlanPlansPlanIdPut: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3335
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updatePlanPlansPlanIdPut>>, TError, {
3336
+ planId: number;
3337
+ data: MealPlanUpdate;
3338
+ }, TContext>;
3339
+ axios?: AxiosRequestConfig;
3340
+ }) => UseMutationResult<Awaited<ReturnType<typeof updatePlanPlansPlanIdPut>>, TError, {
3341
+ planId: number;
3342
+ data: MealPlanUpdate;
3343
+ }, TContext>;
3344
+ /**
3345
+ * @summary Delete Plan
3346
+ */
3347
+ export declare const deletePlanPlansPlanIdDelete: (planId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<DeletePlanPlansPlanIdDelete200>>;
3348
+ export declare const getDeletePlanPlansPlanIdDeleteMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3349
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deletePlanPlansPlanIdDelete>>, TError, {
3350
+ planId: number;
3351
+ }, TContext>;
3352
+ axios?: AxiosRequestConfig;
3353
+ }) => UseMutationOptions<Awaited<ReturnType<typeof deletePlanPlansPlanIdDelete>>, TError, {
3354
+ planId: number;
3355
+ }, TContext>;
3356
+ export type DeletePlanPlansPlanIdDeleteMutationResult = NonNullable<Awaited<ReturnType<typeof deletePlanPlansPlanIdDelete>>>;
3357
+ export type DeletePlanPlansPlanIdDeleteMutationError = AxiosError<HTTPValidationError>;
3358
+ /**
3359
+ * @summary Delete Plan
3360
+ */
3361
+ export declare const useDeletePlanPlansPlanIdDelete: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3362
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deletePlanPlansPlanIdDelete>>, TError, {
3363
+ planId: number;
3364
+ }, TContext>;
3365
+ axios?: AxiosRequestConfig;
3366
+ }) => UseMutationResult<Awaited<ReturnType<typeof deletePlanPlansPlanIdDelete>>, TError, {
3367
+ planId: number;
3368
+ }, TContext>;
3369
+ /**
3370
+ * The plan editor's workhorse (§5.5): create/update/delete slot cells
3371
+ with per-item results. Items without id create; with id update (or delete
3372
+ with _delete=true).
3373
+ * @summary Bulk Update Slots
3374
+ */
3375
+ export declare const bulkUpdateSlotsPlansPlanIdSlotsBulkPatch: (planId: number, planSlotBulkRequest: PlanSlotBulkRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<BulkResponse>>;
3376
+ export declare const getBulkUpdateSlotsPlansPlanIdSlotsBulkPatchMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3377
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkUpdateSlotsPlansPlanIdSlotsBulkPatch>>, TError, {
3378
+ planId: number;
3379
+ data: PlanSlotBulkRequest;
3380
+ }, TContext>;
3381
+ axios?: AxiosRequestConfig;
3382
+ }) => UseMutationOptions<Awaited<ReturnType<typeof bulkUpdateSlotsPlansPlanIdSlotsBulkPatch>>, TError, {
3383
+ planId: number;
3384
+ data: PlanSlotBulkRequest;
3385
+ }, TContext>;
3386
+ export type BulkUpdateSlotsPlansPlanIdSlotsBulkPatchMutationResult = NonNullable<Awaited<ReturnType<typeof bulkUpdateSlotsPlansPlanIdSlotsBulkPatch>>>;
3387
+ export type BulkUpdateSlotsPlansPlanIdSlotsBulkPatchMutationBody = PlanSlotBulkRequest;
3388
+ export type BulkUpdateSlotsPlansPlanIdSlotsBulkPatchMutationError = AxiosError<HTTPValidationError>;
3389
+ /**
3390
+ * @summary Bulk Update Slots
3391
+ */
3392
+ export declare const useBulkUpdateSlotsPlansPlanIdSlotsBulkPatch: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3393
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkUpdateSlotsPlansPlanIdSlotsBulkPatch>>, TError, {
3394
+ planId: number;
3395
+ data: PlanSlotBulkRequest;
3396
+ }, TContext>;
3397
+ axios?: AxiosRequestConfig;
3398
+ }) => UseMutationResult<Awaited<ReturnType<typeof bulkUpdateSlotsPlansPlanIdSlotsBulkPatch>>, TError, {
3399
+ planId: number;
3400
+ data: PlanSlotBulkRequest;
3401
+ }, TContext>;
3402
+ /**
3403
+ * draft → active, validating every slot is filled or explicitly skip.
3404
+ * @summary Activate Plan
3405
+ */
3406
+ export declare const activatePlanPlansPlanIdActivatePost: (planId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<MealPlanDetailResponse>>;
3407
+ export declare const getActivatePlanPlansPlanIdActivatePostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3408
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof activatePlanPlansPlanIdActivatePost>>, TError, {
3409
+ planId: number;
3410
+ }, TContext>;
3411
+ axios?: AxiosRequestConfig;
3412
+ }) => UseMutationOptions<Awaited<ReturnType<typeof activatePlanPlansPlanIdActivatePost>>, TError, {
3413
+ planId: number;
3414
+ }, TContext>;
3415
+ export type ActivatePlanPlansPlanIdActivatePostMutationResult = NonNullable<Awaited<ReturnType<typeof activatePlanPlansPlanIdActivatePost>>>;
3416
+ export type ActivatePlanPlansPlanIdActivatePostMutationError = AxiosError<HTTPValidationError>;
3417
+ /**
3418
+ * @summary Activate Plan
3419
+ */
3420
+ export declare const useActivatePlanPlansPlanIdActivatePost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3421
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof activatePlanPlansPlanIdActivatePost>>, TError, {
3422
+ planId: number;
3423
+ }, TContext>;
3424
+ axios?: AxiosRequestConfig;
3425
+ }) => UseMutationResult<Awaited<ReturnType<typeof activatePlanPlansPlanIdActivatePost>>, TError, {
3426
+ planId: number;
3427
+ }, TContext>;
3428
+ /**
3429
+ * Derive the grocery list from plan gaps (§10): aggregated slot recipe
3430
+ ingredients scaled by servings, minus on-hand pantry quantities under the
3431
+ same-family unit rules — bulk-added with reason=missing_for_plan.
3432
+ * @summary Derive Grocery List
3433
+ */
3434
+ export declare const deriveGroceryListPlansPlanIdGroceryListPost: (planId: number, planGroceryListRequest: PlanGroceryListRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<PlanGroceryListResponse>>;
3435
+ export declare const getDeriveGroceryListPlansPlanIdGroceryListPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3436
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deriveGroceryListPlansPlanIdGroceryListPost>>, TError, {
3437
+ planId: number;
3438
+ data: PlanGroceryListRequest;
3439
+ }, TContext>;
3440
+ axios?: AxiosRequestConfig;
3441
+ }) => UseMutationOptions<Awaited<ReturnType<typeof deriveGroceryListPlansPlanIdGroceryListPost>>, TError, {
3442
+ planId: number;
3443
+ data: PlanGroceryListRequest;
3444
+ }, TContext>;
3445
+ export type DeriveGroceryListPlansPlanIdGroceryListPostMutationResult = NonNullable<Awaited<ReturnType<typeof deriveGroceryListPlansPlanIdGroceryListPost>>>;
3446
+ export type DeriveGroceryListPlansPlanIdGroceryListPostMutationBody = PlanGroceryListRequest;
3447
+ export type DeriveGroceryListPlansPlanIdGroceryListPostMutationError = AxiosError<HTTPValidationError>;
3448
+ /**
3449
+ * @summary Derive Grocery List
3450
+ */
3451
+ export declare const useDeriveGroceryListPlansPlanIdGroceryListPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3452
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deriveGroceryListPlansPlanIdGroceryListPost>>, TError, {
3453
+ planId: number;
3454
+ data: PlanGroceryListRequest;
3455
+ }, TContext>;
3456
+ axios?: AxiosRequestConfig;
3457
+ }) => UseMutationResult<Awaited<ReturnType<typeof deriveGroceryListPlansPlanIdGroceryListPost>>, TError, {
3458
+ planId: number;
3459
+ data: PlanGroceryListRequest;
3460
+ }, TContext>;
3461
+ /**
3462
+ * @summary List Shopping Lists
3463
+ */
3464
+ export declare const listShoppingListsShoppingListsGet: (params?: ListShoppingListsShoppingListsGetParams, options?: AxiosRequestConfig) => Promise<AxiosResponse<ShoppingListResponse[]>>;
3465
+ export declare const getListShoppingListsShoppingListsGetQueryKey: (params?: ListShoppingListsShoppingListsGetParams) => readonly ["/shopping-lists/", ...ListShoppingListsShoppingListsGetParams[]];
3466
+ export declare const getListShoppingListsShoppingListsGetQueryOptions: <TData = Awaited<ReturnType<typeof listShoppingListsShoppingListsGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListShoppingListsShoppingListsGetParams, options?: {
3467
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listShoppingListsShoppingListsGet>>, TError, TData>;
3468
+ axios?: AxiosRequestConfig;
3469
+ }) => UseQueryOptions<Awaited<ReturnType<typeof listShoppingListsShoppingListsGet>>, TError, TData> & {
3470
+ queryKey: QueryKey;
3471
+ };
3472
+ export type ListShoppingListsShoppingListsGetQueryResult = NonNullable<Awaited<ReturnType<typeof listShoppingListsShoppingListsGet>>>;
3473
+ export type ListShoppingListsShoppingListsGetQueryError = AxiosError<HTTPValidationError>;
3474
+ /**
3475
+ * @summary List Shopping Lists
3476
+ */
3477
+ export declare function useListShoppingListsShoppingListsGet<TData = Awaited<ReturnType<typeof listShoppingListsShoppingListsGet>>, TError = AxiosError<HTTPValidationError>>(params?: ListShoppingListsShoppingListsGetParams, options?: {
3478
+ query?: UseQueryOptions<Awaited<ReturnType<typeof listShoppingListsShoppingListsGet>>, TError, TData>;
3479
+ axios?: AxiosRequestConfig;
3480
+ }): UseQueryResult<TData, TError> & {
3481
+ queryKey: QueryKey;
3482
+ };
3483
+ /**
3484
+ * @summary Create Shopping List
3485
+ */
3486
+ export declare const createShoppingListShoppingListsPost: (shoppingListCreate: ShoppingListCreate, options?: AxiosRequestConfig) => Promise<AxiosResponse<ShoppingListResponse>>;
3487
+ export declare const getCreateShoppingListShoppingListsPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3488
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof createShoppingListShoppingListsPost>>, TError, {
3489
+ data: ShoppingListCreate;
3490
+ }, TContext>;
3491
+ axios?: AxiosRequestConfig;
3492
+ }) => UseMutationOptions<Awaited<ReturnType<typeof createShoppingListShoppingListsPost>>, TError, {
3493
+ data: ShoppingListCreate;
3494
+ }, TContext>;
3495
+ export type CreateShoppingListShoppingListsPostMutationResult = NonNullable<Awaited<ReturnType<typeof createShoppingListShoppingListsPost>>>;
3496
+ export type CreateShoppingListShoppingListsPostMutationBody = ShoppingListCreate;
3497
+ export type CreateShoppingListShoppingListsPostMutationError = AxiosError<HTTPValidationError>;
3498
+ /**
3499
+ * @summary Create Shopping List
3500
+ */
3501
+ export declare const useCreateShoppingListShoppingListsPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3502
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof createShoppingListShoppingListsPost>>, TError, {
3503
+ data: ShoppingListCreate;
3504
+ }, TContext>;
3505
+ axios?: AxiosRequestConfig;
3506
+ }) => UseMutationResult<Awaited<ReturnType<typeof createShoppingListShoppingListsPost>>, TError, {
3507
+ data: ShoppingListCreate;
3508
+ }, TContext>;
3509
+ /**
3510
+ * @summary Get Shopping List
3511
+ */
3512
+ export declare const getShoppingListShoppingListsListIdGet: (listId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<ShoppingListDetailResponse>>;
3513
+ export declare const getGetShoppingListShoppingListsListIdGetQueryKey: (listId?: number) => readonly ["/shopping-lists/undefined" | `/shopping-lists/${number}`];
3514
+ export declare const getGetShoppingListShoppingListsListIdGetQueryOptions: <TData = Awaited<ReturnType<typeof getShoppingListShoppingListsListIdGet>>, TError = AxiosError<HTTPValidationError>>(listId: number, options?: {
3515
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getShoppingListShoppingListsListIdGet>>, TError, TData>;
3516
+ axios?: AxiosRequestConfig;
3517
+ }) => UseQueryOptions<Awaited<ReturnType<typeof getShoppingListShoppingListsListIdGet>>, TError, TData> & {
3518
+ queryKey: QueryKey;
3519
+ };
3520
+ export type GetShoppingListShoppingListsListIdGetQueryResult = NonNullable<Awaited<ReturnType<typeof getShoppingListShoppingListsListIdGet>>>;
3521
+ export type GetShoppingListShoppingListsListIdGetQueryError = AxiosError<HTTPValidationError>;
3522
+ /**
3523
+ * @summary Get Shopping List
3524
+ */
3525
+ export declare function useGetShoppingListShoppingListsListIdGet<TData = Awaited<ReturnType<typeof getShoppingListShoppingListsListIdGet>>, TError = AxiosError<HTTPValidationError>>(listId: number, options?: {
3526
+ query?: UseQueryOptions<Awaited<ReturnType<typeof getShoppingListShoppingListsListIdGet>>, TError, TData>;
3527
+ axios?: AxiosRequestConfig;
3528
+ }): UseQueryResult<TData, TError> & {
3529
+ queryKey: QueryKey;
3530
+ };
3531
+ /**
3532
+ * Rename a list or change its status (active|archived).
3533
+ * @summary Update Shopping List
3534
+ */
3535
+ export declare const updateShoppingListShoppingListsListIdPut: (listId: number, shoppingListUpdate: ShoppingListUpdate, options?: AxiosRequestConfig) => Promise<AxiosResponse<ShoppingListResponse>>;
3536
+ export declare const getUpdateShoppingListShoppingListsListIdPutMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3537
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateShoppingListShoppingListsListIdPut>>, TError, {
3538
+ listId: number;
3539
+ data: ShoppingListUpdate;
3540
+ }, TContext>;
3541
+ axios?: AxiosRequestConfig;
3542
+ }) => UseMutationOptions<Awaited<ReturnType<typeof updateShoppingListShoppingListsListIdPut>>, TError, {
3543
+ listId: number;
3544
+ data: ShoppingListUpdate;
3545
+ }, TContext>;
3546
+ export type UpdateShoppingListShoppingListsListIdPutMutationResult = NonNullable<Awaited<ReturnType<typeof updateShoppingListShoppingListsListIdPut>>>;
3547
+ export type UpdateShoppingListShoppingListsListIdPutMutationBody = ShoppingListUpdate;
3548
+ export type UpdateShoppingListShoppingListsListIdPutMutationError = AxiosError<HTTPValidationError>;
3549
+ /**
3550
+ * @summary Update Shopping List
3551
+ */
3552
+ export declare const useUpdateShoppingListShoppingListsListIdPut: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3553
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateShoppingListShoppingListsListIdPut>>, TError, {
3554
+ listId: number;
3555
+ data: ShoppingListUpdate;
3556
+ }, TContext>;
3557
+ axios?: AxiosRequestConfig;
3558
+ }) => UseMutationResult<Awaited<ReturnType<typeof updateShoppingListShoppingListsListIdPut>>, TError, {
3559
+ listId: number;
3560
+ data: ShoppingListUpdate;
3561
+ }, TContext>;
3562
+ /**
3563
+ * @summary Delete Shopping List
3564
+ */
3565
+ export declare const deleteShoppingListShoppingListsListIdDelete: (listId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<DeleteShoppingListShoppingListsListIdDelete200>>;
3566
+ export declare const getDeleteShoppingListShoppingListsListIdDeleteMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3567
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteShoppingListShoppingListsListIdDelete>>, TError, {
3568
+ listId: number;
3569
+ }, TContext>;
3570
+ axios?: AxiosRequestConfig;
3571
+ }) => UseMutationOptions<Awaited<ReturnType<typeof deleteShoppingListShoppingListsListIdDelete>>, TError, {
3572
+ listId: number;
3573
+ }, TContext>;
3574
+ export type DeleteShoppingListShoppingListsListIdDeleteMutationResult = NonNullable<Awaited<ReturnType<typeof deleteShoppingListShoppingListsListIdDelete>>>;
3575
+ export type DeleteShoppingListShoppingListsListIdDeleteMutationError = AxiosError<HTTPValidationError>;
3576
+ /**
3577
+ * @summary Delete Shopping List
3578
+ */
3579
+ export declare const useDeleteShoppingListShoppingListsListIdDelete: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3580
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteShoppingListShoppingListsListIdDelete>>, TError, {
3581
+ listId: number;
3582
+ }, TContext>;
3583
+ axios?: AxiosRequestConfig;
3584
+ }) => UseMutationResult<Awaited<ReturnType<typeof deleteShoppingListShoppingListsListIdDelete>>, TError, {
3585
+ listId: number;
3586
+ }, TContext>;
3587
+ /**
3588
+ * One-click order export (§10): the list's unchecked items as a grouped
3589
+ text checklist, CSV rows, or a provider deeplink.
3590
+ * @summary Export Shopping List
3591
+ */
3592
+ export declare const exportShoppingListShoppingListsListIdExportPost: (listId: number, shoppingListExportRequest: ShoppingListExportRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<ShoppingListExportResponse>>;
3593
+ export declare const getExportShoppingListShoppingListsListIdExportPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3594
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof exportShoppingListShoppingListsListIdExportPost>>, TError, {
3595
+ listId: number;
3596
+ data: ShoppingListExportRequest;
3597
+ }, TContext>;
3598
+ axios?: AxiosRequestConfig;
3599
+ }) => UseMutationOptions<Awaited<ReturnType<typeof exportShoppingListShoppingListsListIdExportPost>>, TError, {
3600
+ listId: number;
3601
+ data: ShoppingListExportRequest;
3602
+ }, TContext>;
3603
+ export type ExportShoppingListShoppingListsListIdExportPostMutationResult = NonNullable<Awaited<ReturnType<typeof exportShoppingListShoppingListsListIdExportPost>>>;
3604
+ export type ExportShoppingListShoppingListsListIdExportPostMutationBody = ShoppingListExportRequest;
3605
+ export type ExportShoppingListShoppingListsListIdExportPostMutationError = AxiosError<HTTPValidationError>;
3606
+ /**
3607
+ * @summary Export Shopping List
3608
+ */
3609
+ export declare const useExportShoppingListShoppingListsListIdExportPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3610
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof exportShoppingListShoppingListsListIdExportPost>>, TError, {
3611
+ listId: number;
3612
+ data: ShoppingListExportRequest;
3613
+ }, TContext>;
3614
+ axios?: AxiosRequestConfig;
3615
+ }) => UseMutationResult<Awaited<ReturnType<typeof exportShoppingListShoppingListsListIdExportPost>>, TError, {
3616
+ listId: number;
3617
+ data: ShoppingListExportRequest;
3618
+ }, TContext>;
3619
+ /**
3620
+ * @summary Add Shopping List Item
3621
+ */
3622
+ export declare const addShoppingListItemShoppingListsListIdItemsPost: (listId: number, shoppingListItemCreate: ShoppingListItemCreate, options?: AxiosRequestConfig) => Promise<AxiosResponse<ShoppingListItemResponse>>;
3623
+ export declare const getAddShoppingListItemShoppingListsListIdItemsPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3624
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof addShoppingListItemShoppingListsListIdItemsPost>>, TError, {
3625
+ listId: number;
3626
+ data: ShoppingListItemCreate;
3627
+ }, TContext>;
3628
+ axios?: AxiosRequestConfig;
3629
+ }) => UseMutationOptions<Awaited<ReturnType<typeof addShoppingListItemShoppingListsListIdItemsPost>>, TError, {
3630
+ listId: number;
3631
+ data: ShoppingListItemCreate;
3632
+ }, TContext>;
3633
+ export type AddShoppingListItemShoppingListsListIdItemsPostMutationResult = NonNullable<Awaited<ReturnType<typeof addShoppingListItemShoppingListsListIdItemsPost>>>;
3634
+ export type AddShoppingListItemShoppingListsListIdItemsPostMutationBody = ShoppingListItemCreate;
3635
+ export type AddShoppingListItemShoppingListsListIdItemsPostMutationError = AxiosError<HTTPValidationError>;
3636
+ /**
3637
+ * @summary Add Shopping List Item
3638
+ */
3639
+ export declare const useAddShoppingListItemShoppingListsListIdItemsPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3640
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof addShoppingListItemShoppingListsListIdItemsPost>>, TError, {
3641
+ listId: number;
3642
+ data: ShoppingListItemCreate;
3643
+ }, TContext>;
3644
+ axios?: AxiosRequestConfig;
3645
+ }) => UseMutationResult<Awaited<ReturnType<typeof addShoppingListItemShoppingListsListIdItemsPost>>, TError, {
3646
+ listId: number;
3647
+ data: ShoppingListItemCreate;
3648
+ }, TContext>;
3649
+ /**
3650
+ * Bulk add items (plan gaps, preset starters) — §4.2 conventions with
3651
+ client_ref idempotency.
3652
+ * @summary Bulk Add Shopping List Items
3653
+ */
3654
+ export declare const bulkAddShoppingListItemsShoppingListsListIdItemsBulkPost: (listId: number, shoppingListItemBulkCreateRequest: ShoppingListItemBulkCreateRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<BulkResponse>>;
3655
+ export declare const getBulkAddShoppingListItemsShoppingListsListIdItemsBulkPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3656
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkAddShoppingListItemsShoppingListsListIdItemsBulkPost>>, TError, {
3657
+ listId: number;
3658
+ data: ShoppingListItemBulkCreateRequest;
3659
+ }, TContext>;
3660
+ axios?: AxiosRequestConfig;
3661
+ }) => UseMutationOptions<Awaited<ReturnType<typeof bulkAddShoppingListItemsShoppingListsListIdItemsBulkPost>>, TError, {
3662
+ listId: number;
3663
+ data: ShoppingListItemBulkCreateRequest;
3664
+ }, TContext>;
3665
+ export type BulkAddShoppingListItemsShoppingListsListIdItemsBulkPostMutationResult = NonNullable<Awaited<ReturnType<typeof bulkAddShoppingListItemsShoppingListsListIdItemsBulkPost>>>;
3666
+ export type BulkAddShoppingListItemsShoppingListsListIdItemsBulkPostMutationBody = ShoppingListItemBulkCreateRequest;
3667
+ export type BulkAddShoppingListItemsShoppingListsListIdItemsBulkPostMutationError = AxiosError<HTTPValidationError>;
3668
+ /**
3669
+ * @summary Bulk Add Shopping List Items
3670
+ */
3671
+ export declare const useBulkAddShoppingListItemsShoppingListsListIdItemsBulkPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3672
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkAddShoppingListItemsShoppingListsListIdItemsBulkPost>>, TError, {
3673
+ listId: number;
3674
+ data: ShoppingListItemBulkCreateRequest;
3675
+ }, TContext>;
3676
+ axios?: AxiosRequestConfig;
3677
+ }) => UseMutationResult<Awaited<ReturnType<typeof bulkAddShoppingListItemsShoppingListsListIdItemsBulkPost>>, TError, {
3678
+ listId: number;
3679
+ data: ShoppingListItemBulkCreateRequest;
3680
+ }, TContext>;
3681
+ /**
3682
+ * Bulk update/check items; ``check_all=true`` is the one-tap check-all.
3683
+ * @summary Bulk Update Shopping List Items
3684
+ */
3685
+ export declare const bulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatch: (listId: number, shoppingListItemBulkUpdateRequest: ShoppingListItemBulkUpdateRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<BulkResponse>>;
3686
+ export declare const getBulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatchMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3687
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatch>>, TError, {
3688
+ listId: number;
3689
+ data: ShoppingListItemBulkUpdateRequest;
3690
+ }, TContext>;
3691
+ axios?: AxiosRequestConfig;
3692
+ }) => UseMutationOptions<Awaited<ReturnType<typeof bulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatch>>, TError, {
3693
+ listId: number;
3694
+ data: ShoppingListItemBulkUpdateRequest;
3695
+ }, TContext>;
3696
+ export type BulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatchMutationResult = NonNullable<Awaited<ReturnType<typeof bulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatch>>>;
3697
+ export type BulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatchMutationBody = ShoppingListItemBulkUpdateRequest;
3698
+ export type BulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatchMutationError = AxiosError<HTTPValidationError>;
3699
+ /**
3700
+ * @summary Bulk Update Shopping List Items
3701
+ */
3702
+ export declare const useBulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatch: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3703
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatch>>, TError, {
3704
+ listId: number;
3705
+ data: ShoppingListItemBulkUpdateRequest;
3706
+ }, TContext>;
3707
+ axios?: AxiosRequestConfig;
3708
+ }) => UseMutationResult<Awaited<ReturnType<typeof bulkUpdateShoppingListItemsShoppingListsListIdItemsBulkPatch>>, TError, {
3709
+ listId: number;
3710
+ data: ShoppingListItemBulkUpdateRequest;
3711
+ }, TContext>;
3712
+ /**
3713
+ * @summary Bulk Delete Shopping List Items
3714
+ */
3715
+ export declare const bulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePost: (listId: number, shoppingListItemBulkDeleteRequest: ShoppingListItemBulkDeleteRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<BulkResponse>>;
3716
+ export declare const getBulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3717
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePost>>, TError, {
3718
+ listId: number;
3719
+ data: ShoppingListItemBulkDeleteRequest;
3720
+ }, TContext>;
3721
+ axios?: AxiosRequestConfig;
3722
+ }) => UseMutationOptions<Awaited<ReturnType<typeof bulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePost>>, TError, {
3723
+ listId: number;
3724
+ data: ShoppingListItemBulkDeleteRequest;
3725
+ }, TContext>;
3726
+ export type BulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePostMutationResult = NonNullable<Awaited<ReturnType<typeof bulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePost>>>;
3727
+ export type BulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePostMutationBody = ShoppingListItemBulkDeleteRequest;
3728
+ export type BulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePostMutationError = AxiosError<HTTPValidationError>;
3729
+ /**
3730
+ * @summary Bulk Delete Shopping List Items
3731
+ */
3732
+ export declare const useBulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3733
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof bulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePost>>, TError, {
3734
+ listId: number;
3735
+ data: ShoppingListItemBulkDeleteRequest;
3736
+ }, TContext>;
3737
+ axios?: AxiosRequestConfig;
3738
+ }) => UseMutationResult<Awaited<ReturnType<typeof bulkDeleteShoppingListItemsShoppingListsListIdItemsBulkDeletePost>>, TError, {
3739
+ listId: number;
3740
+ data: ShoppingListItemBulkDeleteRequest;
3741
+ }, TContext>;
3742
+ /**
3743
+ * @summary Update Shopping List Item
3744
+ */
3745
+ export declare const updateShoppingListItemShoppingListsListIdItemsItemIdPatch: (listId: number, itemId: number, shoppingListItemUpdate: ShoppingListItemUpdate, options?: AxiosRequestConfig) => Promise<AxiosResponse<ShoppingListItemResponse>>;
3746
+ export declare const getUpdateShoppingListItemShoppingListsListIdItemsItemIdPatchMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3747
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateShoppingListItemShoppingListsListIdItemsItemIdPatch>>, TError, {
3748
+ listId: number;
3749
+ itemId: number;
3750
+ data: ShoppingListItemUpdate;
3751
+ }, TContext>;
3752
+ axios?: AxiosRequestConfig;
3753
+ }) => UseMutationOptions<Awaited<ReturnType<typeof updateShoppingListItemShoppingListsListIdItemsItemIdPatch>>, TError, {
3754
+ listId: number;
3755
+ itemId: number;
3756
+ data: ShoppingListItemUpdate;
3757
+ }, TContext>;
3758
+ export type UpdateShoppingListItemShoppingListsListIdItemsItemIdPatchMutationResult = NonNullable<Awaited<ReturnType<typeof updateShoppingListItemShoppingListsListIdItemsItemIdPatch>>>;
3759
+ export type UpdateShoppingListItemShoppingListsListIdItemsItemIdPatchMutationBody = ShoppingListItemUpdate;
3760
+ export type UpdateShoppingListItemShoppingListsListIdItemsItemIdPatchMutationError = AxiosError<HTTPValidationError>;
3761
+ /**
3762
+ * @summary Update Shopping List Item
3763
+ */
3764
+ export declare const useUpdateShoppingListItemShoppingListsListIdItemsItemIdPatch: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3765
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof updateShoppingListItemShoppingListsListIdItemsItemIdPatch>>, TError, {
3766
+ listId: number;
3767
+ itemId: number;
3768
+ data: ShoppingListItemUpdate;
3769
+ }, TContext>;
3770
+ axios?: AxiosRequestConfig;
3771
+ }) => UseMutationResult<Awaited<ReturnType<typeof updateShoppingListItemShoppingListsListIdItemsItemIdPatch>>, TError, {
3772
+ listId: number;
3773
+ itemId: number;
3774
+ data: ShoppingListItemUpdate;
3775
+ }, TContext>;
3776
+ /**
3777
+ * @summary Delete Shopping List Item
3778
+ */
3779
+ export declare const deleteShoppingListItemShoppingListsListIdItemsItemIdDelete: (listId: number, itemId: number, options?: AxiosRequestConfig) => Promise<AxiosResponse<DeleteShoppingListItemShoppingListsListIdItemsItemIdDelete200>>;
3780
+ export declare const getDeleteShoppingListItemShoppingListsListIdItemsItemIdDeleteMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3781
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteShoppingListItemShoppingListsListIdItemsItemIdDelete>>, TError, {
3782
+ listId: number;
3783
+ itemId: number;
3784
+ }, TContext>;
3785
+ axios?: AxiosRequestConfig;
3786
+ }) => UseMutationOptions<Awaited<ReturnType<typeof deleteShoppingListItemShoppingListsListIdItemsItemIdDelete>>, TError, {
3787
+ listId: number;
3788
+ itemId: number;
3789
+ }, TContext>;
3790
+ export type DeleteShoppingListItemShoppingListsListIdItemsItemIdDeleteMutationResult = NonNullable<Awaited<ReturnType<typeof deleteShoppingListItemShoppingListsListIdItemsItemIdDelete>>>;
3791
+ export type DeleteShoppingListItemShoppingListsListIdItemsItemIdDeleteMutationError = AxiosError<HTTPValidationError>;
3792
+ /**
3793
+ * @summary Delete Shopping List Item
3794
+ */
3795
+ export declare const useDeleteShoppingListItemShoppingListsListIdItemsItemIdDelete: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3796
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof deleteShoppingListItemShoppingListsListIdItemsItemIdDelete>>, TError, {
3797
+ listId: number;
3798
+ itemId: number;
3799
+ }, TContext>;
3800
+ axios?: AxiosRequestConfig;
3801
+ }) => UseMutationResult<Awaited<ReturnType<typeof deleteShoppingListItemShoppingListsListIdItemsItemIdDelete>>, TError, {
3802
+ listId: number;
3803
+ itemId: number;
3804
+ }, TContext>;
3805
+ /**
3806
+ * Generate a recipe tailored to the user's current pantry contents.
3807
+ * @summary Generate Recipe
3808
+ */
3809
+ export declare const generateRecipeAiGenerateRecipePost: (generateRecipeRequest: GenerateRecipeRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<GenerateRecipeAiGenerateRecipePost200>>;
3810
+ export declare const getGenerateRecipeAiGenerateRecipePostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3811
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof generateRecipeAiGenerateRecipePost>>, TError, {
3812
+ data: GenerateRecipeRequest;
3813
+ }, TContext>;
3814
+ axios?: AxiosRequestConfig;
3815
+ }) => UseMutationOptions<Awaited<ReturnType<typeof generateRecipeAiGenerateRecipePost>>, TError, {
3816
+ data: GenerateRecipeRequest;
3817
+ }, TContext>;
3818
+ export type GenerateRecipeAiGenerateRecipePostMutationResult = NonNullable<Awaited<ReturnType<typeof generateRecipeAiGenerateRecipePost>>>;
3819
+ export type GenerateRecipeAiGenerateRecipePostMutationBody = GenerateRecipeRequest;
3820
+ export type GenerateRecipeAiGenerateRecipePostMutationError = AxiosError<HTTPValidationError>;
3821
+ /**
3822
+ * @summary Generate Recipe
3823
+ */
3824
+ export declare const useGenerateRecipeAiGenerateRecipePost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3825
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof generateRecipeAiGenerateRecipePost>>, TError, {
3826
+ data: GenerateRecipeRequest;
3827
+ }, TContext>;
3828
+ axios?: AxiosRequestConfig;
3829
+ }) => UseMutationResult<Awaited<ReturnType<typeof generateRecipeAiGenerateRecipePost>>, TError, {
3830
+ data: GenerateRecipeRequest;
3831
+ }, TContext>;
3832
+ /**
3833
+ * Stream a recipe generation response using Server-Sent Events.
3834
+ * @summary Generate Recipe Stream
3835
+ */
3836
+ export declare const generateRecipeStreamAiGenerateRecipeStreamPost: (generateRecipeRequest: GenerateRecipeRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<unknown>>;
3837
+ export declare const getGenerateRecipeStreamAiGenerateRecipeStreamPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3838
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof generateRecipeStreamAiGenerateRecipeStreamPost>>, TError, {
3839
+ data: GenerateRecipeRequest;
3840
+ }, TContext>;
3841
+ axios?: AxiosRequestConfig;
3842
+ }) => UseMutationOptions<Awaited<ReturnType<typeof generateRecipeStreamAiGenerateRecipeStreamPost>>, TError, {
3843
+ data: GenerateRecipeRequest;
3844
+ }, TContext>;
3845
+ export type GenerateRecipeStreamAiGenerateRecipeStreamPostMutationResult = NonNullable<Awaited<ReturnType<typeof generateRecipeStreamAiGenerateRecipeStreamPost>>>;
3846
+ export type GenerateRecipeStreamAiGenerateRecipeStreamPostMutationBody = GenerateRecipeRequest;
3847
+ export type GenerateRecipeStreamAiGenerateRecipeStreamPostMutationError = AxiosError<HTTPValidationError>;
3848
+ /**
3849
+ * @summary Generate Recipe Stream
3850
+ */
3851
+ export declare const useGenerateRecipeStreamAiGenerateRecipeStreamPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3852
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof generateRecipeStreamAiGenerateRecipeStreamPost>>, TError, {
3853
+ data: GenerateRecipeRequest;
3854
+ }, TContext>;
3855
+ axios?: AxiosRequestConfig;
3856
+ }) => UseMutationResult<Awaited<ReturnType<typeof generateRecipeStreamAiGenerateRecipeStreamPost>>, TError, {
3857
+ data: GenerateRecipeRequest;
3858
+ }, TContext>;
3859
+ /**
3860
+ * Grounded recipe suggestion (blueprint §9.1) — the primary path.
3861
+
3862
+ Stage 1: deterministic coverage retrieval over catalog + household
3863
+ recipes (no LLM). Stage 2: the LLM reranks/adapts candidates by catalog
3864
+ id — choose/scale/substitute/explain only. Persist-on-save goes through
3865
+ POST /catalog/recipes/{id}/save. When the LLM is disabled,
3866
+ GET /recipes/suggestions serves the Stage-1 ranking as the degraded path.
3867
+ * @summary Suggest Recipes
3868
+ */
3869
+ export declare const suggestRecipesAiSuggestRecipesPost: (suggestRecipesRequest: SuggestRecipesRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<SuggestRecipesResponse>>;
3870
+ export declare const getSuggestRecipesAiSuggestRecipesPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3871
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof suggestRecipesAiSuggestRecipesPost>>, TError, {
3872
+ data: SuggestRecipesRequest;
3873
+ }, TContext>;
3874
+ axios?: AxiosRequestConfig;
3875
+ }) => UseMutationOptions<Awaited<ReturnType<typeof suggestRecipesAiSuggestRecipesPost>>, TError, {
3876
+ data: SuggestRecipesRequest;
3877
+ }, TContext>;
3878
+ export type SuggestRecipesAiSuggestRecipesPostMutationResult = NonNullable<Awaited<ReturnType<typeof suggestRecipesAiSuggestRecipesPost>>>;
3879
+ export type SuggestRecipesAiSuggestRecipesPostMutationBody = SuggestRecipesRequest;
3880
+ export type SuggestRecipesAiSuggestRecipesPostMutationError = AxiosError<HTTPValidationError>;
3881
+ /**
3882
+ * @summary Suggest Recipes
3883
+ */
3884
+ export declare const useSuggestRecipesAiSuggestRecipesPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3885
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof suggestRecipesAiSuggestRecipesPost>>, TError, {
3886
+ data: SuggestRecipesRequest;
3887
+ }, TContext>;
3888
+ axios?: AxiosRequestConfig;
3889
+ }) => UseMutationResult<Awaited<ReturnType<typeof suggestRecipesAiSuggestRecipesPost>>, TError, {
3890
+ data: SuggestRecipesRequest;
3891
+ }, TContext>;
3892
+ /**
3893
+ * Generate a multi-day meal plan from the user's current pantry.
3894
+ * @summary Generate Meal Plan
3895
+ */
3896
+ export declare const generateMealPlanAiMealPlanPost: (mealPlanRequest: MealPlanRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<GenerateMealPlanAiMealPlanPost200>>;
3897
+ export declare const getGenerateMealPlanAiMealPlanPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3898
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof generateMealPlanAiMealPlanPost>>, TError, {
3899
+ data: MealPlanRequest;
3900
+ }, TContext>;
3901
+ axios?: AxiosRequestConfig;
3902
+ }) => UseMutationOptions<Awaited<ReturnType<typeof generateMealPlanAiMealPlanPost>>, TError, {
3903
+ data: MealPlanRequest;
3904
+ }, TContext>;
3905
+ export type GenerateMealPlanAiMealPlanPostMutationResult = NonNullable<Awaited<ReturnType<typeof generateMealPlanAiMealPlanPost>>>;
3906
+ export type GenerateMealPlanAiMealPlanPostMutationBody = MealPlanRequest;
3907
+ export type GenerateMealPlanAiMealPlanPostMutationError = AxiosError<HTTPValidationError>;
3908
+ /**
3909
+ * @summary Generate Meal Plan
3910
+ */
3911
+ export declare const useGenerateMealPlanAiMealPlanPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3912
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof generateMealPlanAiMealPlanPost>>, TError, {
3913
+ data: MealPlanRequest;
3914
+ }, TContext>;
3915
+ axios?: AxiosRequestConfig;
3916
+ }) => UseMutationResult<Awaited<ReturnType<typeof generateMealPlanAiMealPlanPost>>, TError, {
3917
+ data: MealPlanRequest;
3918
+ }, TContext>;
3919
+ /**
3920
+ * Score the user's saved recipes against a natural language query.
3921
+ * @summary Semantic Search
3922
+ */
3923
+ export declare const semanticSearchAiSearchPost: (searchRequest: SearchRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<SemanticSearchAiSearchPost200>>;
3924
+ export declare const getSemanticSearchAiSearchPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3925
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof semanticSearchAiSearchPost>>, TError, {
3926
+ data: SearchRequest;
3927
+ }, TContext>;
3928
+ axios?: AxiosRequestConfig;
3929
+ }) => UseMutationOptions<Awaited<ReturnType<typeof semanticSearchAiSearchPost>>, TError, {
3930
+ data: SearchRequest;
3931
+ }, TContext>;
3932
+ export type SemanticSearchAiSearchPostMutationResult = NonNullable<Awaited<ReturnType<typeof semanticSearchAiSearchPost>>>;
3933
+ export type SemanticSearchAiSearchPostMutationBody = SearchRequest;
3934
+ export type SemanticSearchAiSearchPostMutationError = AxiosError<HTTPValidationError>;
3935
+ /**
3936
+ * @summary Semantic Search
3937
+ */
3938
+ export declare const useSemanticSearchAiSearchPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3939
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof semanticSearchAiSearchPost>>, TError, {
3940
+ data: SearchRequest;
3941
+ }, TContext>;
3942
+ axios?: AxiosRequestConfig;
3943
+ }) => UseMutationResult<Awaited<ReturnType<typeof semanticSearchAiSearchPost>>, TError, {
3944
+ data: SearchRequest;
3945
+ }, TContext>;
3946
+ /**
3947
+ * Recognize pantry items from a photo via the configured vision backend.
3948
+
3949
+ The image is validated (MIME whitelist + size cap, same rules as pantry
3950
+ uploads) and sent to the vision provider in memory — it is not persisted;
3951
+ the client can attach it again when saving items via POST /pantry-items/.
3952
+ Recognized items are normalized to the app's enums before returning.
3953
+ * @summary Recognize Items
3954
+ */
3955
+ export declare const recognizeItemsAiRecognizeItemsPost: (bodyRecognizeItemsAiRecognizeItemsPost: BodyRecognizeItemsAiRecognizeItemsPost, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecognizeItemsAiRecognizeItemsPost200>>;
3956
+ export declare const getRecognizeItemsAiRecognizeItemsPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3957
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof recognizeItemsAiRecognizeItemsPost>>, TError, {
3958
+ data: BodyRecognizeItemsAiRecognizeItemsPost;
3959
+ }, TContext>;
3960
+ axios?: AxiosRequestConfig;
3961
+ }) => UseMutationOptions<Awaited<ReturnType<typeof recognizeItemsAiRecognizeItemsPost>>, TError, {
3962
+ data: BodyRecognizeItemsAiRecognizeItemsPost;
3963
+ }, TContext>;
3964
+ export type RecognizeItemsAiRecognizeItemsPostMutationResult = NonNullable<Awaited<ReturnType<typeof recognizeItemsAiRecognizeItemsPost>>>;
3965
+ export type RecognizeItemsAiRecognizeItemsPostMutationBody = BodyRecognizeItemsAiRecognizeItemsPost;
3966
+ export type RecognizeItemsAiRecognizeItemsPostMutationError = AxiosError<HTTPValidationError>;
3967
+ /**
3968
+ * @summary Recognize Items
3969
+ */
3970
+ export declare const useRecognizeItemsAiRecognizeItemsPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3971
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof recognizeItemsAiRecognizeItemsPost>>, TError, {
3972
+ data: BodyRecognizeItemsAiRecognizeItemsPost;
3973
+ }, TContext>;
3974
+ axios?: AxiosRequestConfig;
3975
+ }) => UseMutationResult<Awaited<ReturnType<typeof recognizeItemsAiRecognizeItemsPost>>, TError, {
3976
+ data: BodyRecognizeItemsAiRecognizeItemsPost;
3977
+ }, TContext>;
3978
+ /**
3979
+ * Read a grocery receipt photo into confirm-ready pantry drafts (§11).
3980
+
3981
+ The vision backend extracts one ReceiptLine per purchased item (taxes,
3982
+ totals and non-food skipped by the prompt); the server then normalizes
3983
+ units (same coercion as photo/barcode recognition), links each line to
3984
+ the catalog via the ingredient linker (misses stay null with raw_name
3985
+ preserved), and attaches restock prefill hints: suggested_location_id
3986
+ from purchase history and suggested_expiration_date from catalog shelf
3987
+ life — the latter always flagged low-confidence. The confirm screen posts
3988
+ edited lines to POST /pantry-items/bulk with source=receipt.
3989
+ * @summary Recognize Receipt
3990
+ */
3991
+ export declare const recognizeReceiptAiRecognizeReceiptPost: (bodyRecognizeReceiptAiRecognizeReceiptPost: BodyRecognizeReceiptAiRecognizeReceiptPost, options?: AxiosRequestConfig) => Promise<AxiosResponse<RecognizeReceiptAiRecognizeReceiptPost200>>;
3992
+ export declare const getRecognizeReceiptAiRecognizeReceiptPostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
3993
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof recognizeReceiptAiRecognizeReceiptPost>>, TError, {
3994
+ data: BodyRecognizeReceiptAiRecognizeReceiptPost;
3995
+ }, TContext>;
3996
+ axios?: AxiosRequestConfig;
3997
+ }) => UseMutationOptions<Awaited<ReturnType<typeof recognizeReceiptAiRecognizeReceiptPost>>, TError, {
3998
+ data: BodyRecognizeReceiptAiRecognizeReceiptPost;
3999
+ }, TContext>;
4000
+ export type RecognizeReceiptAiRecognizeReceiptPostMutationResult = NonNullable<Awaited<ReturnType<typeof recognizeReceiptAiRecognizeReceiptPost>>>;
4001
+ export type RecognizeReceiptAiRecognizeReceiptPostMutationBody = BodyRecognizeReceiptAiRecognizeReceiptPost;
4002
+ export type RecognizeReceiptAiRecognizeReceiptPostMutationError = AxiosError<HTTPValidationError>;
4003
+ /**
4004
+ * @summary Recognize Receipt
4005
+ */
4006
+ export declare const useRecognizeReceiptAiRecognizeReceiptPost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
4007
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof recognizeReceiptAiRecognizeReceiptPost>>, TError, {
4008
+ data: BodyRecognizeReceiptAiRecognizeReceiptPost;
4009
+ }, TContext>;
4010
+ axios?: AxiosRequestConfig;
4011
+ }) => UseMutationResult<Awaited<ReturnType<typeof recognizeReceiptAiRecognizeReceiptPost>>, TError, {
4012
+ data: BodyRecognizeReceiptAiRecognizeReceiptPost;
4013
+ }, TContext>;
4014
+ /**
4015
+ * Look up a UPC/EAN barcode on Open Food Facts and return a normalized item draft.
4016
+
4017
+ Deterministic and free; no LLM involved. item_type is inferred from OFF's
4018
+ crowd-sourced categories and is always flagged low-confidence for the user
4019
+ to confirm.
4020
+ * @summary Lookup Barcode
4021
+ */
4022
+ export declare const lookupBarcodeAiLookupBarcodePost: (barcodeRequest: BarcodeRequest, options?: AxiosRequestConfig) => Promise<AxiosResponse<LookupBarcodeAiLookupBarcodePost200>>;
4023
+ export declare const getLookupBarcodeAiLookupBarcodePostMutationOptions: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
4024
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof lookupBarcodeAiLookupBarcodePost>>, TError, {
4025
+ data: BarcodeRequest;
4026
+ }, TContext>;
4027
+ axios?: AxiosRequestConfig;
4028
+ }) => UseMutationOptions<Awaited<ReturnType<typeof lookupBarcodeAiLookupBarcodePost>>, TError, {
4029
+ data: BarcodeRequest;
4030
+ }, TContext>;
4031
+ export type LookupBarcodeAiLookupBarcodePostMutationResult = NonNullable<Awaited<ReturnType<typeof lookupBarcodeAiLookupBarcodePost>>>;
4032
+ export type LookupBarcodeAiLookupBarcodePostMutationBody = BarcodeRequest;
4033
+ export type LookupBarcodeAiLookupBarcodePostMutationError = AxiosError<HTTPValidationError>;
4034
+ /**
4035
+ * @summary Lookup Barcode
4036
+ */
4037
+ export declare const useLookupBarcodeAiLookupBarcodePost: <TError = AxiosError<HTTPValidationError>, TContext = unknown>(options?: {
4038
+ mutation?: UseMutationOptions<Awaited<ReturnType<typeof lookupBarcodeAiLookupBarcodePost>>, TError, {
4039
+ data: BarcodeRequest;
4040
+ }, TContext>;
4041
+ axios?: AxiosRequestConfig;
4042
+ }) => UseMutationResult<Awaited<ReturnType<typeof lookupBarcodeAiLookupBarcodePost>>, TError, {
4043
+ data: BarcodeRequest;
4044
+ }, TContext>;
742
4045
  /**
743
4046
  * @summary Read Root
744
4047
  */