<?php

namespace PPLCZVendor;

use PPLCZVendor\Psr\Http\Message\ResponseInterface;
use PPLCZVendor\Symfony\Component\Serializer\SerializerInterface;
interface Endpoint
{
    /**
     * Get body for an endpoint.
     *
     * Return value consist of an array where the first item will be a list of headers to add on the request (like the Content Type)
     * And the second value consist of the body object.
     */
    public function getBody(SerializerInterface $serializer, $streamFactory = null) : array;
    /**
     * Get the query string of an endpoint without the starting ? (like foo=foo&bar=bar).
     */
    public function getQueryString() : string;
    /**
     * Get the URI of an endpoint (like /foo-uri).
     */
    public function getUri() : string;
    /**
     * Get the HTTP method of an endpoint (like GET, POST, ...).
     */
    public function getMethod() : string;
    /**
     * Get the headers of an endpoint.
     */
    public function getHeaders(array $baseHeaders = []) : array;
    /**
     * Get security scopes of an endpoint.
     */
    public function getAuthenticationScopes() : array;
    /**
     * Parse and transform a PSR7 Response into a different object.
     *
     * Implementations may vary depending the status code of the response and the fetch mode used.
     */
    public function parseResponse(ResponseInterface $response, SerializerInterface $serializer, string $fetchMode = Client::FETCH_OBJECT);
}
\class_alias('PPLCZVendor\\Endpoint', 'Endpoint', \false);
