<?php
/**
 * Header layout contract.
 *
 * @package Kutby
 * @since   2.6.0
 */

declare(strict_types=1);

namespace Kutby\Header\Contracts;

use Kutby\Header\Support\HeaderContext;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Interface HeaderLayoutInterface
 */
interface HeaderLayoutInterface {

	/**
	 * Layout id (e.g. classic).
	 *
	 * @return string
	 */
	public function id(): string;

	/**
	 * Arabic Admin label.
	 *
	 * @return string
	 */
	public function label(): string;

	/**
	 * Theme Options keys this layout uses (excluding always-on: layout).
	 *
	 * @return array<int, string>
	 */
	public function option_keys(): array;

	/**
	 * Render the layout.
	 *
	 * @param HeaderContext $ctx Context.
	 * @return void
	 */
	public function render( HeaderContext $ctx ): void;
}
