<?php  namespace App\Models;  use App\Enums\StatusGroup; use App\Traits\HasStorage; use App\Contracts\HasMedia; use App\Traits\HasComments; use App\Traits\HasStatuses; use App\Contracts\HasAuthor; use App\Contracts\Commentable; use App\Observers\OrderObserver; use App\Contracts\RestrictUpdates; use Illuminate\Support\Collection; use App\Contracts\HasNotifications; use Illuminate\Database\Eloquent\Builder; use App\Traits\HasAuthor as TraitsHasAuthor; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\Relations\BelongsTo; use App\Traits\HasNotifications as TraitsHasNotifications;  class Order extends Model implements Commentable, HasAuthor, HasMedia, HasNotifications, RestrictUpdates { 	use HasStorage, HasStatuses, HasComments, TraitsHasNotifications, TraitsHasAuthor;  	final public const DEFAULT_STATUS_NAME = 'Novo';  	protected $casts = [ 		'approved_by_buyer' => 'boolean', 		'warehouse_details' => 'array', 		'buyer_details' => 'array', 		'email_recipients' => 'array', 	];  	public static function getDefaultStatus(): Status 	{ 		return Status::firstOrCreate(['status_group' => StatusGroup::Order, 'name' => self::DEFAULT_STATUS_NAME]); 	}  	protected static function initObservers(): string 	{ 		return OrderObserver::class; 	}  	public function orderItems(): HasMany{}  	public function mediaConfig(): array{}  	public function warehouse(): BelongsTo{}  	public function buyer(): BelongsTo{}  	public function author(): MorphTo{}  	public function scopeFilterStatuses(Builder $query, ?array $statuses = []): Builder{}  	public function scopeSearch(Builder $query, ?string $search = null): Builder{}  	public function getBuyerDetails(): object{}  	public function getWarehouseDetails(): object{}  	public function getBuyerName(): string{}  	public function getAuthorName(): ?string{}  	public function getLastStatusName(): string{}  	public function scopeIncludeCounts(Builder $query): Builder{}  	public function getCommentRoutePrefix(): string{}  	public function getEditView(): string{}  	public function getDefaultMediaPrefix(): string{}  	public function getAppDeeplinkUrl(?string $uri = null): string{}  	public function getAlwaysUpdateableFields(): array{}  	public function attributeMapper(?string $attribute): null|string|callable{}  	public function getProducts(): Collection{}  	public function defaultStatusName(): string{}  	protected function getIncludes(): array{} }