<?php
// phpcs:disable Yoast.NamingConventions.NamespaceName.TooLong -- Needed in the folder structure.

namespace Yoast\WP\SEO\MyYoast_Client\Application\Grants;

/**
 * Interface for OAuth grant types.
 *
 * Each implementation provides the grant-specific parameters for a token
 * endpoint request. The shared logic (client assertion, error handling)
 * is handled by OAuth_Grant_Handler.
 */
interface Grant_Interface {

	/**
	 * Returns the OAuth grant type identifier (e.g. "authorization_code").
	 *
	 * @return string
	 */
	public function get_grant_type(): string;

	/**
	 * Returns the grant-specific parameters to merge into the token request body.
	 *
	 * @return array<string, string> The parameters (e.g. code, redirect_uri, refresh_token).
	 */
	public function get_grant_params(): array;
}
