<?php

declare(strict_types=1);

namespace App\Contracts\Repositories;

use App\Models\Amenity;
use Illuminate\Database\Eloquent\Collection;

interface AmenityRepositoryInterface
{
    /**
     * Get all amenities
     */
    public function getAll(): Collection;

    /**
     * Get amenities by category
     */
    public function getByCategory(string $category): Collection;

    /**
     * Get essential amenities
     */
    public function getEssentials(): Collection;

    /**
     * Get feature amenities
     */
    public function getFeatures(): Collection;

    /**
     * Get safety amenities
     */
    public function getSafety(): Collection;

    /**
     * Find amenity by ID
     */
    public function findById(int $id): ?Amenity;

    /**
     * Create a new amenity
     *
     * @param  array<string, mixed>  $data
     */
    public function create(array $data): Amenity;

    /**
     * Update an amenity
     *
     * @param  array<string, mixed>  $data
     */
    public function update(int $id, array $data): Amenity;

    /**
     * Delete an amenity
     */
    public function delete(int $id): bool;
}
