<?php  namespace App\Models;  use App\Traits\HasSlugs; use App\Traits\HasStorage; use App\Contracts\HasMedia; use App\Traits\HasTranslations; use App\Observers\CategoryObserver; use Illuminate\Database\Eloquent\Builder; use App\Contracts\HasSlugs as HasSlugsContract; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsTo; use App\Contracts\HasTranslations as ContractsHasTranslations; use Staudenmeir\LaravelAdjacencyList\Eloquent\HasRecursiveRelationships;  class Category extends Model implements ContractsHasTranslations, HasMedia, HasSlugsContract { 	use HasStorage, HasTranslations, HasSlugs, HasRecursiveRelationships;  	public array $translatable = ['name', 'slug', 'description'];  	protected $casts = [ 		'name' => 'array', 		'slug' => 'array', 		'description' => 'array', 		'active' => 'boolean', 	];  	public static function getCategoryByIdOrSlug(string $category): self 	{ 		return static::includes()->available()->where(static function ($query) use ($category): void { 			$query->where('id', $category) 				->orWhere('slug', $category) 				->orWhere(static function (object $query) use ($category): void { 					$query->viaTranslatedSlug($category, 'like'); 				}); 		})->firstOrFail(); 	}  	protected static function initObservers(): string 	{ 		return CategoryObserver::class; 	}  	public function mediaConfig(): array{}  	public function getParentKeyName(): string{}  	public function parent(): BelongsTo{}  	public function children(): HasMany{}  	public function products(): HasMany{}  	public function scopeIncludes(object $query): Builder{}  	public function scopeAvailable(Builder $query): Builder{}  	public function scopeSearch(object $query, ?string $search = null): Builder{}  	public function scopeParent(Builder $query, ?string $parent_category = null): Builder{}  	public function isRecursive(?string $category_id): bool{} }