<?php
/**
 * @license GPL-2.0-or-later
 *
 * Modified using Strauss.
 * @see https://github.com/BrianHenryIE/strauss
 */ declare(strict_types=1);

namespace RCP\LiquidWeb\LicensingApiClient\Responses\Contracts;

/**
 * Response/value objects implement this interface to provide structured API data.
 *
 * @template TArray of array
 */
interface Response
{
	/**
	 * Map raw attributes to the response object.
	 *
	 * @param array<string, mixed> $attributes
	 *
	 * @return static
	 */
	public static function from(array $attributes): self;

	/**
	 * Return the array representation of the response object.
	 *
	 * @return TArray
	 */
	public function toArray(): array;
}
