<?php  namespace App\Models;  use Notification; use App\Traits\IsUser; use Illuminate\Http\Request; use App\Contracts\IsExtendedUser; use Illuminate\Support\Collection; use App\Observers\CustomerObserver; use App\Notifications\ReferralAcceptedMail; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\BelongsTo;  class Customer extends Model implements IsExtendedUser { 	use IsUser;  	public const GENDER_MALE = 1; 	public const GENDER_FEMALE = 2; 	public const GENDER_OTHER = 3;  	protected $casts = [ 		'newsletter' => 'boolean', 		'club_card' => 'boolean', 		'date_of_birth' => 'date', 	];  	public function passwordResetTokenUrl(string $token): string{}  	public function verifyEmailRedirectUrl(): ?string{}  	public function passwordResetRedirectUrl(): ?string{}  	public function handleReferral(CheeseClub $cheeseClub): void{}  	public function makeCheeseClubMember(): CheeseClub{}  	public function getUserExtraData(?Request $request = null): ?array{}  	public function getPublicUserExtraData(?Request $request = null): ?array{}  	public function reviews(): HasMany{}  	public function hasAlreadyMadeGeneralReview(): bool{}  	public function canReviewProduct(string $id): bool{}  	public function getFullName(): string{}  	public function addresses(): HasMany{}  	public function cheeseclub(): BelongsTo{}  	public function getPoints(): int{}  	public function likes(): HasMany{}  	public function getAddress(): Address|Collection{}  	public function getFullAddressByType(int $type): string|null{}  	public function referrals(): HasMany{}  	public function createReferral(string $email): Referral{}  	public function orders(): HasMany{}  	public static function availableGenderTypes(): array 	{ 		return [ 			self::GENDER_MALE, 			self::GENDER_FEMALE, 			self::GENDER_OTHER, 		]; 	}  	public function hasUsedThisDiscount(string $discountId): bool{}  	protected static function initObservers(): ?string 	{ 		return CustomerObserver::class; 	} }