<?php  namespace App\Models;  use App\Traits\HasRole; use App\Contracts\HasJwt; use App\Traits\HasStorage; use App\Contracts\HasMedia; use Illuminate\Http\Request; use App\Traits\HasPushDevices; use Illuminate\Support\Carbon; use App\Observers\UserObserver; use Illuminate\Auth\Events\Login; use Illuminate\Auth\Events\Logout; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Prunable; use App\Enums\OAuthDriver as OAuthDriverEnum; use Illuminate\Database\Eloquent\SoftDeletes; use Laravel\Fortify\TwoFactorAuthenticatable; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Http\Resources\Json\JsonResource; use Illuminate\Database\Eloquent\Concerns\HasUuids; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\Factories\HasFactory; use Laravel\Socialite\Contracts\User as SocialiteUser; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Contracts\Translation\HasLocalePreference; use App\Contracts\HasPushDevices as HasPushDevicesContract;  class User extends Authenticatable implements HasJwt, HasLocalePreference, HasMedia, HasPushDevicesContract, MustVerifyEmail { 	use Prunable, HasPushDevices, HasRole, HasStorage, Notifiable, HasUuids, TwoFactorAuthenticatable, HasFactory, SoftDeletes;  	protected static $modelsShouldPreventAccessingMissingAttributes = true;  	protected $casts = [ 		'active' => 'boolean', 		'allow_push_notifications' => 'boolean', 		'email_verified_at' => 'datetime', 		'password' => 'hashed', 	];  	protected $guarded = ['id', self::CREATED_AT, self::UPDATED_AT];  	protected $hidden = [ 		'password', 'remember_token', 	];  	protected $attributes = [ 		'active' => true, 		'allow_push_notifications' => true, 	];  	protected $touches = ['user'];  	protected $with = ['user', 'role'];  	public static function getAllNotifiableModelsIds(array $excluded = []): array 	{ 		return static::notifiable()->whereNotIn('user_id', $excluded)->pluck('user_id')->all(); 	}  	protected static function boot(): void 	{ 		parent::boot();  		self::observe(UserObserver::class); 	}  	public function user(): MorphTo{}  	public function activities(): HasMany{}  	public function sessions(): HasMany{}  	public function oAuthDrivers(): HasMany{}  	public function setEmailAttribute(string $value): void{}  	public function setNameAttribute(string $value): void{}  	public function setTimezoneAttribute(?string $value): void{}  	public function setLocaleAttribute(?string $value): void{}  	public function getModelResource(): JsonResource{}  	public function getModelPublicResource(): JsonResource{}  	public function getJwtValidFromTime(): ?Carbon{}  	public function getJwtValidUntilTime(): ?Carbon{}  	public function getJwtCustomClaims(): array{}  	public function getSilentLoginUrl(?Carbon $expiration = null, array $data = []): string{}  	public function handleShouldVerifyEmail(): self{}  	public function detectIfEmailUpdate(): self{}  	public function handleEmailUpdate(): self{}  	public function getDefaultMediaPrefix(): string{}  	public function mediaConfig(): array{}  	public function connectOAuthDriver(OAuthDriverEnum $driver, string $externalId): self{}  	public function getAvatar(): ?string{}  	public function preferredLocale(): string{}  	public function fireLoginEvent(?string $guard = null, bool $remember = false): self{}  	public function fireLogoutEvent(?string $guard = null): self{}  	public function sendEmailVerificationNotification(): self{}  	public function sendPasswordResetNotification($token): self{}  	public function sendLoginViaEmailNotification(string $url): self{}  	public function scopeIncludes(Builder $query): Builder{}  	public function scopeAvailable(Builder $query): Builder{}  	public function scopeUserScope(Builder $query): Builder{}  	public function scopeLoginLogic(Builder $query, Request $request): Builder{}  	public function scopeHasOAuthDriver(Builder $query, OAuthDriverEnum $driver, SocialiteUser $user): Builder{}  	public function isAvailable(): bool{}  	public function scopeSearch(Builder $query, ?string $search = null): Builder{}  	public function prunable(): Builder{}  	public function postLoginCheck(Request $request): bool{}  	public function scopeCustomers(Builder $query): Builder{}  	public function isCustomer(): bool{} }