<?php  namespace App\Models;  use App\Traits\Countries; use App\Traits\HasStorage; use App\Contracts\HasMedia; use Illuminate\Support\Str; use App\Traits\HasDiscounts; use App\Traits\HasTranslations; use Illuminate\Support\Collection; use App\Observers\CategoryObserver; use Illuminate\Database\Eloquent\Builder; 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 HasMedia, ContractsHasTranslations { 	use HasStorage, HasRecursiveRelationships, HasTranslations, Countries, HasDiscounts;  	protected $casts = [ 		'active' => 'boolean', 		'use_parent_filters' => 'boolean', 		'adult_only' => 'boolean', 		'extra_costs_on_shipping' => 'boolean', 		'apply_vat_rates_on_children' => 'boolean', 	];  	public function mediaConfig(): array{}  	public function getParentKeyName(): string{}  	public function categoryFilters(): HasMany{}  	/*public function products(): HasMany{}*/  	public function parent(): BelongsTo{}  	public function children(): HasMany{}  	public function vatRates(): HasMany{}  	public function scopeIncludes(object $query, ?string $lang = null): Builder{}  	public function scopeAvailable(Builder $query): Builder{}  	public function scopeBaseCategories(Builder $query): Builder{}  	public function scopeSearch(Builder $query, ?string $search = null, ?string $lang = null): Builder{}  	public function scopeParent(Builder $query, bool $parent_exists, ?string $parent_category = null): Builder{}  	public function isRecursive(?string $category_id): bool{}  	public function setNameAttribute(?string $value): void{}  	public function storeFilters(?array $selected_filters = []): self{}  	/** 	 * Returns only available Web filters (true parameter in includes). 	 */ 	public function getFilters(?string $lang = null): Collection{}  	/** 	 * used only internally when adding product filters (all filters will be shown). 	 */ 	public function getAllFilters(?string $lang = null): Collection{}  	public function setSlugAttribute(?string $value): void{}  	public function determineCountryValue(string $country, ?Collection $vatRates = null, array|null $oldCountries): float|int{}  	public function shippingExtraCostsCategoriesIds(): array{}  	public function getOriginalOrTranslatedProperty(string $lang, string $field): ?string{}  	public function getCategoryByIdOrSlug(string $category, ?string $lang): self{}  	public function productCategories(): HasMany{}  	public function hasParent(): bool{}  	public static function createGroupCode(): int 	{ 		return (int) self::max('group_code') + 1; 	}  	protected static function initObservers(): ?string 	{ 		return CategoryObserver::class; 	} }