<?php  namespace App\Models;  use App\Traits\HasStorage; use App\Contracts\HasMedia; use App\Enums\OneSignalSegment; use App\Traits\HasTranslations; use App\Jobs\SendPushNotification; use Illuminate\Support\Collection; use App\Jobs\CancelPushNotification; use App\Jobs\GetOneSignalStatsSingle; use App\Observers\NotificationObserver; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Prunable; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\Casts\AsEnumArrayObject; use App\Contracts\HasTranslations as HasTranslationsContract;  /**  * @property-read int $targets_count  */ class Notification extends Model implements HasMedia, HasTranslationsContract { 	use Prunable, HasStorage, HasTranslations;  	public array $translatable = ['title', 'body'];  	protected $casts = [ 		'title' => 'array', 		'body' => 'array', 		'active' => 'boolean', 		'segments' => AsEnumArrayObject::class . ':' . OneSignalSegment::class, 		'countries' => 'array', 		'delivery_time_of_day' => 'datetime:H:i', 		'scheduled_at' => 'datetime', 		'canceled_at' => 'datetime', 		'completed_at' => 'datetime', 	];  	protected static function initObservers(): string 	{ 		return NotificationObserver::class; 	}  	public function parent(): MorphTo{}  	public function targets(): HasMany{}  	public function userTarget(): HasOne{}  	public function getTargets(): array{}  	public function attachUsers(Collection|User|array $users): self{}  	public function getUserSeenAt(): ?string{}  	public function markAsSeen(): self{}  	public function isAvailable(): bool{}  	public function isCancelable(): bool{}  	public function resourceArray(): array{}  	public function shouldIncludeUrlParam(): bool{}  	public function getDefaultMediaPrefix(): string{}  	public function mediaConfig(): array{}  	public function scopeAvailable(Builder $query): Builder{}  	public function scopeCancelable(Builder $query): Builder{}  	public function send(): self{}  	public function cancel(): self{}  	public function scopeReadyForStatsCheck(Builder $query): Builder{}  	public function checkStatistics(): self{}  	public function setScheduledAtAttribute(?string $value): void{}  	public function setTitleAttribute(string $value): void{}  	public function prunable(): Builder{}  	protected function getIncludes(): array{} }