<?php  namespace App\Models;  use App\Traits\HasSlugs; use App\Traits\HasStorage; use App\Contracts\HasMedia; use Illuminate\Support\Str; use App\Traits\HasTranslations; use App\Observers\ProductObserver; use Illuminate\Database\Eloquent\Builder; use App\Contracts\HasSlugs as HasSlugsContract; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use App\Contracts\HasTranslations as ContractsHasTranslations;  class Product extends Model implements ContractsHasTranslations, HasMedia, HasSlugsContract { 	use HasStorage, HasTranslations, HasSlugs;  	public array $translatable = [ 		'name', 		'description', 		'details', 		'slug', 	];  	protected $casts = [ 		'active' => 'boolean', 		'name' => 'array', 		'description' => 'array', 		'details' => 'array', 		'slug' => 'array', 	];  	protected static function initObservers(): string 	{ 		return ProductObserver::class; 	}  	public function getDefaultMediaPrefix(): string{}  	public function mediaConfig(): array{}  	public function scopeIncludes(object $query): Builder{}  	public function category(): BelongsTo{}  	public function productVariants(): HasMany{}  	public function variants(): BelongsToMany{}  	public function orderItems(): HasMany{}  	public function setNameAttribute(?string $value): void{}  	public function setSlugAttribute(?string $value): void{}  	public function getItemName(): array{}  	public function getItemEditRoute(): string{}  	public function scopeAvailable(Builder $query): Builder{}  	public function scopeSearch(object $query, ?string $search = null): Builder{}  	public function scopeFilterCategory(Builder $query, ?Category $category = null): Builder{} }