<?php  namespace App\Models;  use App\Enums\RoleMode; use App\Enums\HttpMethod; use App\Enums\RoleAbility; use App\Traits\IsClonable; use App\Observers\RoleObserver; use Illuminate\Database\Eloquent\Builder; use App\Contracts\IsClonable as IsClonableContract; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Casts\AsEnumArrayObject;  class Role extends Model implements IsClonableContract { 	use IsClonable;  	protected $casts = [ 		'protected' => 'boolean', 		'mode' => RoleMode::class, 		'disallowed_methods' => AsEnumArrayObject::class . ':' . HttpMethod::class, 		'abilities' => AsEnumArrayObject::class . ':' . RoleAbility::class, 	];  	protected static function initObservers(): string 	{ 		return RoleObserver::class; 	}  	public function canViewRoute(string $route): bool{}  	public function hasAllowedMethod(string $method): bool{}  	public function hasAbility(RoleAbility $ability): bool{}  	public function nullifySettings(): self{}  	public function scopeCanViewRouteQuery(Builder $query, string $route): Builder{}  	public function scopeHasAbilityQuery(Builder $query, RoleAbility $ability): Builder{}  	public function scopeAvailable(Builder $query): Builder{}  	public function routes(): HasMany{}  	public function setNameAttribute(string $value): void{}  	public function users(): HasMany{}  	protected function getClonableRelations(): array{} }