<?php  namespace App\Models;  use App\Enums\Currency; use App\Enums\OrderStatus; use App\Traits\HasMarkets; use Illuminate\Http\Request; use App\Services\OrderBuilder; use App\Enums\ShippingProvider; use Illuminate\Support\Collection; use App\Services\PdvCalculationService; use Illuminate\Notifications\Notifiable; use App\Services\OrderCalculationService; use App\Services\ShippingCalculationService; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsTo;  class Order extends Model { 	use Notifiable, HasMarkets;  	public ?User $user = null; 	public ?Address $address = null; 	public ?Market $market = null; 	public ?string $delivery_note = null; 	public ?string $delivery_name = null; 	public bool $temporary = false;  	public $casts = [ 		'currency' => Currency::class, 		'shipping_provider' => ShippingProvider::class, 		'status' => OrderStatus::class, 		'delivery_address' => 'array', 		'invoice_address' => 'array', 	];  	private ?Shipment $shipment = null; 	private array $products = [];  	public function customer(): BelongsTo{}  	public function orderProducts(): HasMany{}  	public function addProduct(OrderProduct $product): void{}  	public function getProducts(): Collection{}  	public function builder(OrderCalculationService $orderCalculationService, ShippingCalculationService $shippingCalculationService, PdvCalculationService $pdvCalculationService, Request $request, ?Market $market = null): OrderBuilder{}  	public function setShippingCost(float $cost): void{}  	public function setShipment(Shipment $shipment): void{}  	public function getShipment(): Shipment{}  	public function setTemporary(bool $temporary): void{}  	public function setMarket(Market $market): void{}  	public function getMarket(): Market{}  	public function shipment(): HasOne{}  	public function routeNotificationForMail(mixed $notification): string{}  	protected static function boot(): void 	{ 		parent::boot();  		static::addGlobalScope('currentMarket', function (object $builder) { 			$builder->onCurrentMarket(); 		}); 	} }