$occupancy Number of available seats for each time block * @param array $lead_time_minutes Minimum lead time in minutes required for each block */ public function __construct( public int $from_minutes, public int $to_minutes, public int $block_size_in_minutes, public array $occupancy, public array $lead_time_minutes = [] ) { } public function push_block(int $capacity, int $min_lead_time_minutes = 0) { $this->occupancy[] = $capacity; $this->lead_time_minutes[] = $min_lead_time_minutes; $this->to_minutes += $this->block_size_in_minutes; } }