<?php

declare(strict_types=1);

namespace Drupal\api_monitor_client\Entity;

use Drupal\Core\Config\Entity\ConfigEntityInterface;

/**
 * Provides an interface for defining Api monitor provider entities.
 */
interface ApiMonitorProviderInterface extends ConfigEntityInterface {

  /**
   * Returns the provider URL.
   *
   * @return string
   *   The provider URL.
   */
  public function getProviderUrl(): string;

  /**
   * Returns the discovery endpoint.
   *
   * @return string
   *   The discovery endpoint.
   */
  public function getDiscoveryEndpoint(): string;

  /**
   * Returns the token endpoint.
   *
   * @return string
   *   The token endpoint.
   */
  public function getTokenEndpoint(): string;

  /**
   * Returns whether authentication is enabled.
   *
   * @return bool
   *   TRUE if authentication is enabled, FALSE otherwise.
   */
  public function isAuthEnabled(): bool;

  /**
   * Returns the client ID.
   *
   * @return string
   *   The client ID.
   */
  public function getClientId(): string;

  /**
   * Returns the client secret.
   *
   * @return string
   *   The client secret.
   */
  public function getClientSecret(): string;

  /**
   * Returns the scope.
   *
   * @return string
   *   The scope.
   */
  public function getScope(): string;

}
