<?php  namespace App\Models;  use App\Traits\HasSlug; use App\Traits\UsesSlug; use App\Traits\HasMarkets; use App\Traits\HasStorage; use App\Contracts\HasMedia; use App\Traits\HasTranslations; use Illuminate\Support\Collection; 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 Illuminate\Database\Eloquent\Relations\BelongsToMany; use Staudenmeir\LaravelAdjacencyList\Eloquent\HasRecursiveRelationships; use Spatie\MediaLibrary\MediaCollections\Models\Collections\MediaCollection;  class Category extends Model implements HasMedia, HasSlugsContract { 	use HasTranslations, HasRecursiveRelationships, HasStorage, HasMarkets, HasSlug, UsesSlug;  	public array $translatable = [ 		'name', 		'slug', 		'description', 		'short_description', 	];  	public $casts = [ 		'active' => 'boolean', 		'featured' => 'boolean', 		'discontinued' => 'boolean', 		'use_parent_filters' => 'boolean', 	];  	public function parent(): BelongsTo{}  	public function getParentKeyName(): string{}  	public function children(): HasMany{}  	public function scopeAvailable(Builder $query): Builder{}  	public function scopeParent(Builder $query, bool $parent_exists, ?string $parent_category = null): Builder{}  	public function scopeWithoutSelf(Builder $query, Category $self): Builder{}  	public function isRecursive(?string $category_id): bool{}  	public function hasParent(): bool{}  	public function scopeNotRecursive(Builder $query, Category $category): Builder{}  	public function mediaConfig(): array{}  	public function getMediaCollection(string $collection): MediaCollection{}  	public function FAQs(): HasMany{}  	public function filters(): BelongsToMany{}  	public function scopeFeatured(Builder $query): Builder{}  	public function products(): HasMany{}  	public function getAllProductsRecursive(Category $category): Collection{}  	public function scopeIncludes(Builder $query): Builder{}  	public function features(): HasMany{}  	public function scopeFullSearch(Builder $query, ?string $search = null): Builder{}  	protected static function initObservers(): string 	{ 		return CategoryObserver::class; 	}  	protected static function boot(): void 	{ 		parent::boot();  		static::addGlobalScope('currentMarket', function (object $builder) { 			$builder->onCurrentMarket(); 		});  		static::addGlobalScope('latest', function (object $builder) { 			$builder->latest(); 		}); 	} }