import { RecipesService } from './recipes.service'; import { CreateRecipeDto } from './dto/create-recipe.dto'; import { CreateIngredientDto } from './dto/create-ingredient.dto'; import { ParseMarkdownDto } from './dto/parse-markdown.dto'; import { ShareRecipeDto } from './dto/share-recipe.dto'; import { SetRecipeVisibilityDto } from './dto/set-recipe-visibility.dto'; import { RecipeAnalysisService } from './recipe-analysis.service'; declare class UpdateImageDto { sourceUrl: string; } export declare class RecipesController { private readonly recipesService; private readonly recipeAnalysisService; constructor(recipesService: RecipesService, recipeAnalysisService: RecipeAnalysisService); parseMarkdown(dto: ParseMarkdownDto): Promise<{ name: string; description: string; instructions: string; ingredients: { rawName: string; rawLine: string; alternatives: string[]; quantity: number; unit: string; note: string | null; suggestions: { productId: number; productName: string; score: number; }[]; }[]; }>; getAiSuggestions(user: { userId: number; }): Promise<{ suggestions: import("./recipes.service").AiRecipeSuggestion[]; }>; findAll(user: { userId: number; }): Promise<({ owner: { id: number; username: string; } | null; ingredients: ({ product: ({ nutrition: { id: number; productId: number; calories: number | null; protein: number | null; fat: number | null; carbohydrates: number | null; salt: number | null; sugar: number | null; fiber: number | null; } | null; } & { id: number; name: string; ownerId: number; createdAt: Date; updatedAt: Date; status: string; normalizedName: string; category: string | null; canonicalName: string | null; isActive: boolean; deletedAt: Date | null; categoryId: number | null; isPrivate: boolean; }) | null; } & { id: number; createdAt: Date; updatedAt: Date; recipeId: number; productId: number | null; rawName: string; rawLine: string | null; quantity: import("@prisma/client/runtime/library").Decimal | null; unit: string | null; note: string | null; alternativeProductIds: import("@prisma/client/runtime/library").JsonValue | null; matchConfidence: number | null; matchSource: string | null; analysisStatus: string | null; })[]; shares: { userId: number; }[]; } & { id: number; name: string; description: string | null; instructions: string | null; imageUrl: string | null; servings: number | null; isPublic: boolean; ownerId: number | null; createdAt: Date; updatedAt: Date; })[]>; getInventoryPreview(id: number, user: { userId: number; }): Promise<{ recipe: { id: number; name: string; description: string | null; }; ingredients: { ingredientId: any; productId: any; productName: any; requiredQuantity: number; requiredUnit: any; note: any; availableQuantity: number; availableUnit: any; matchingInventoryItems: { id: any; quantity: any; unit: any; location: any; brand: any; bestBeforeDate: any; }[]; otherInventoryItems: { id: any; quantity: any; unit: any; location: any; convertedQuantity: number; canConvert: boolean; }[]; status: "missing" | "enough" | "unit_mismatch"; fromPantry: boolean; missingQuantity: number; }[]; summary: { totalIngredients: number; enoughCount: number; missingCount: number; unitMismatchCount: number; canCookExactly: boolean; pantryCount: number; }; }>; getRecipeAnalysis(id: number, user: { userId: number; }): Promise<{ recipeId: number; ingredients: ({ ingredientId: any; rawName: any; quantity: number; unit: any; note: any; status: "missing" | "exact_match" | "covered_by_pantry" | "substitutable"; matchedProductId: any; matchedProductName: any; source: string; availableQuantity: number; missingQuantity: number; } | { ingredientId: any; rawName: any; quantity: number; unit: any; note: any; status: "missing" | "exact_match" | "covered_by_pantry" | "substitutable"; matchedProductId: any; matchedProductName: any; source: null; availableQuantity: number; missingQuantity: number; })[]; summary: { exactCount: number; pantryCount: number; substituteCount: number; missingCount: number; }; shoppingListCandidates: { ingredientId: any; rawName: any; quantity: number; unit: any; missingQuantity: number; }[]; }>; findOne(id: number, user: { userId: number; }): Promise<{ owner: { id: number; username: string; } | null; ingredients: ({ product: ({ nutrition: { id: number; productId: number; calories: number | null; protein: number | null; fat: number | null; carbohydrates: number | null; salt: number | null; sugar: number | null; fiber: number | null; } | null; } & { id: number; name: string; ownerId: number; createdAt: Date; updatedAt: Date; status: string; normalizedName: string; category: string | null; canonicalName: string | null; isActive: boolean; deletedAt: Date | null; categoryId: number | null; isPrivate: boolean; }) | null; } & { id: number; createdAt: Date; updatedAt: Date; recipeId: number; productId: number | null; rawName: string; rawLine: string | null; quantity: import("@prisma/client/runtime/library").Decimal | null; unit: string | null; note: string | null; alternativeProductIds: import("@prisma/client/runtime/library").JsonValue | null; matchConfidence: number | null; matchSource: string | null; analysisStatus: string | null; })[]; shares: { userId: number; }[]; } & { id: number; name: string; description: string | null; instructions: string | null; imageUrl: string | null; servings: number | null; isPublic: boolean; ownerId: number | null; createdAt: Date; updatedAt: Date; }>; create(createRecipeDto: CreateRecipeDto, user: { userId: number; }): Promise<{ ingredients: ({ product: ({ nutrition: { id: number; productId: number; calories: number | null; protein: number | null; fat: number | null; carbohydrates: number | null; salt: number | null; sugar: number | null; fiber: number | null; } | null; } & { id: number; name: string; ownerId: number; createdAt: Date; updatedAt: Date; status: string; normalizedName: string; category: string | null; canonicalName: string | null; isActive: boolean; deletedAt: Date | null; categoryId: number | null; isPrivate: boolean; }) | null; } & { id: number; createdAt: Date; updatedAt: Date; recipeId: number; productId: number | null; rawName: string; rawLine: string | null; quantity: import("@prisma/client/runtime/library").Decimal | null; unit: string | null; note: string | null; alternativeProductIds: import("@prisma/client/runtime/library").JsonValue | null; matchConfidence: number | null; matchSource: string | null; analysisStatus: string | null; })[]; } & { id: number; name: string; description: string | null; instructions: string | null; imageUrl: string | null; servings: number | null; isPublic: boolean; ownerId: number | null; createdAt: Date; updatedAt: Date; }>; update(id: number, createRecipeDto: CreateRecipeDto, user: { userId: number; }): Promise<{ ingredients: ({ product: ({ nutrition: { id: number; productId: number; calories: number | null; protein: number | null; fat: number | null; carbohydrates: number | null; salt: number | null; sugar: number | null; fiber: number | null; } | null; } & { id: number; name: string; ownerId: number; createdAt: Date; updatedAt: Date; status: string; normalizedName: string; category: string | null; canonicalName: string | null; isActive: boolean; deletedAt: Date | null; categoryId: number | null; isPrivate: boolean; }) | null; } & { id: number; createdAt: Date; updatedAt: Date; recipeId: number; productId: number | null; rawName: string; rawLine: string | null; quantity: import("@prisma/client/runtime/library").Decimal | null; unit: string | null; note: string | null; alternativeProductIds: import("@prisma/client/runtime/library").JsonValue | null; matchConfidence: number | null; matchSource: string | null; analysisStatus: string | null; })[]; } & { id: number; name: string; description: string | null; instructions: string | null; imageUrl: string | null; servings: number | null; isPublic: boolean; ownerId: number | null; createdAt: Date; updatedAt: Date; }>; remove(id: number, user: { userId: number; }): Promise; updateImage(id: number, dto: UpdateImageDto, user: { userId: number; }): Promise<{ owner: { id: number; username: string; } | null; ingredients: ({ product: ({ nutrition: { id: number; productId: number; calories: number | null; protein: number | null; fat: number | null; carbohydrates: number | null; salt: number | null; sugar: number | null; fiber: number | null; } | null; } & { id: number; name: string; ownerId: number; createdAt: Date; updatedAt: Date; status: string; normalizedName: string; category: string | null; canonicalName: string | null; isActive: boolean; deletedAt: Date | null; categoryId: number | null; isPrivate: boolean; }) | null; } & { id: number; createdAt: Date; updatedAt: Date; recipeId: number; productId: number | null; rawName: string; rawLine: string | null; quantity: import("@prisma/client/runtime/library").Decimal | null; unit: string | null; note: string | null; alternativeProductIds: import("@prisma/client/runtime/library").JsonValue | null; matchConfidence: number | null; matchSource: string | null; analysisStatus: string | null; })[]; shares: { userId: number; }[]; } & { id: number; name: string; description: string | null; instructions: string | null; imageUrl: string | null; servings: number | null; isPublic: boolean; ownerId: number | null; createdAt: Date; updatedAt: Date; }>; addIngredient(id: number, ingredient: CreateIngredientDto, user: { userId: number; }): Promise<{ product: ({ nutrition: { id: number; productId: number; calories: number | null; protein: number | null; fat: number | null; carbohydrates: number | null; salt: number | null; sugar: number | null; fiber: number | null; } | null; } & { id: number; name: string; ownerId: number; createdAt: Date; updatedAt: Date; status: string; normalizedName: string; category: string | null; canonicalName: string | null; isActive: boolean; deletedAt: Date | null; categoryId: number | null; isPrivate: boolean; }) | null; } & { id: number; createdAt: Date; updatedAt: Date; recipeId: number; productId: number | null; rawName: string; rawLine: string | null; quantity: import("@prisma/client/runtime/library").Decimal | null; unit: string | null; note: string | null; alternativeProductIds: import("@prisma/client/runtime/library").JsonValue | null; matchConfidence: number | null; matchSource: string | null; analysisStatus: string | null; }>; setVisibility(id: number, dto: SetRecipeVisibilityDto, user: { userId: number; }): Promise<{ owner: { id: number; username: string; } | null; ingredients: ({ product: ({ nutrition: { id: number; productId: number; calories: number | null; protein: number | null; fat: number | null; carbohydrates: number | null; salt: number | null; sugar: number | null; fiber: number | null; } | null; } & { id: number; name: string; ownerId: number; createdAt: Date; updatedAt: Date; status: string; normalizedName: string; category: string | null; canonicalName: string | null; isActive: boolean; deletedAt: Date | null; categoryId: number | null; isPrivate: boolean; }) | null; } & { id: number; createdAt: Date; updatedAt: Date; recipeId: number; productId: number | null; rawName: string; rawLine: string | null; quantity: import("@prisma/client/runtime/library").Decimal | null; unit: string | null; note: string | null; alternativeProductIds: import("@prisma/client/runtime/library").JsonValue | null; matchConfidence: number | null; matchSource: string | null; analysisStatus: string | null; })[]; shares: { userId: number; }[]; } & { id: number; name: string; description: string | null; instructions: string | null; imageUrl: string | null; servings: number | null; isPublic: boolean; ownerId: number | null; createdAt: Date; updatedAt: Date; }>; shareRecipe(id: number, dto: ShareRecipeDto, user: { userId: number; }): Promise<{ owner: { id: number; username: string; } | null; ingredients: ({ product: ({ nutrition: { id: number; productId: number; calories: number | null; protein: number | null; fat: number | null; carbohydrates: number | null; salt: number | null; sugar: number | null; fiber: number | null; } | null; } & { id: number; name: string; ownerId: number; createdAt: Date; updatedAt: Date; status: string; normalizedName: string; category: string | null; canonicalName: string | null; isActive: boolean; deletedAt: Date | null; categoryId: number | null; isPrivate: boolean; }) | null; } & { id: number; createdAt: Date; updatedAt: Date; recipeId: number; productId: number | null; rawName: string; rawLine: string | null; quantity: import("@prisma/client/runtime/library").Decimal | null; unit: string | null; note: string | null; alternativeProductIds: import("@prisma/client/runtime/library").JsonValue | null; matchConfidence: number | null; matchSource: string | null; analysisStatus: string | null; })[]; shares: { userId: number; }[]; } & { id: number; name: string; description: string | null; instructions: string | null; imageUrl: string | null; servings: number | null; isPublic: boolean; ownerId: number | null; createdAt: Date; updatedAt: Date; }>; unshareRecipe(id: number, username: string, user: { userId: number; }): Promise<{ owner: { id: number; username: string; } | null; ingredients: ({ product: ({ nutrition: { id: number; productId: number; calories: number | null; protein: number | null; fat: number | null; carbohydrates: number | null; salt: number | null; sugar: number | null; fiber: number | null; } | null; } & { id: number; name: string; ownerId: number; createdAt: Date; updatedAt: Date; status: string; normalizedName: string; category: string | null; canonicalName: string | null; isActive: boolean; deletedAt: Date | null; categoryId: number | null; isPrivate: boolean; }) | null; } & { id: number; createdAt: Date; updatedAt: Date; recipeId: number; productId: number | null; rawName: string; rawLine: string | null; quantity: import("@prisma/client/runtime/library").Decimal | null; unit: string | null; note: string | null; alternativeProductIds: import("@prisma/client/runtime/library").JsonValue | null; matchConfidence: number | null; matchSource: string | null; analysisStatus: string | null; })[]; shares: { userId: number; }[]; } & { id: number; name: string; description: string | null; instructions: string | null; imageUrl: string | null; servings: number | null; isPublic: boolean; ownerId: number | null; createdAt: Date; updatedAt: Date; }>; } export {};